• Stars
    star
    193
  • Rank 194,731 (Top 4 %)
  • Language
    MATLAB
  • License
    MIT License
  • Created about 6 years ago
  • Updated 3 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A basic MATLAB library to demonstrate reading, writing, display, and simple processing of complex SAR data using the NGA SICD standard.

MATLAB SAR Toolbox

The MATLAB SAR Toolbox is a basic MATLAB library to read, write, display, and do simple processing of complex SAR data using the NGA SICD format. It has been released by NGA to encourage the use of SAR data standards throughout the international SAR community. The MATLAB SAR Toolbox complements the SIX library (C++) and SarPy (Python), which are implemented in other languages but have similar goals.

Some sample SICD files are available here, although since the MATLAB SAR Toolbox can make its own SICDs or read other formats with an API that makes them look as if they were SICD, one doesn't really need an actual SICD file to use this toolbox and benefit from the SICD metadata standard.

A sampling of some of the functionality available in the toolbox is provided below.

File I/O

The toolbox has readers and (at least partial) SICD conversion for the following complex SAR formats:

  • ALOS PALSAR-2
  • Capella
  • COSMO-SkyMed
  • Complex NITF
  • GFF (Sandia)
  • ICEYE
  • KOMPSAT-5
  • NISAR
  • PAZ
  • Sentinel-1
  • SICD
  • SIO
  • Synspective
  • RADARSAT-2
  • RADARSAT Constellation Mission (RCM)
  • TerraSAR-X

To read data from a file:

readerobj = open_reader(filename);  % Toolbox will detect file format and parse appropriately
sicdmetadata = readerobj.get_meta();  % Metadata from all formats will be converted to SICD metadata structure
complex_data = readerobj.read_chip([first_column last_column], [first_row last_row]);
readerobj.close();
% Or you can use read_complex_data.m in a single line of code if you won't be reading multiple chunks from an image.

It is important to stress that, since the metadata returned will always be in SICD format regardless of the original format of the data, as long as one writes code to the SICD standard, that code will generically process all of the above formats.

To write data to SICD:

writer_object = NITFWriter(filename, sicdmetadata);
writer_object.write_chip(data, [first_row first_column]);
% The file will be closed when writer_object is deleted or goes out of scope.

Note also that convert_complex_data.m will take a complex image from any format recognized and convert it to SICD file(s).

SICD Validation

For those wanting to produce SICD files from their own SAR data sources, validate_sicd.m is a function that runs a set of over one hundred tests to check for validity in SICD files. It does this through a set of checks for internal consistency with SICD metadata, as well as a set of interactive tests for testing consistency between the SICD metadata and the SICD pixel data.

Processing

Geometry/Projections provides implementations of precise scene-to-image and image-to-scene projections using the SICD sensor model.

Examples using interactive tools are provided for subaperture processing (ApertureTool.m), radiometric measurement (RCSTool.m), and polarimetric visualization (PolTool.m).

With all of these tools, every effort was made to assure they were generic to a wide variety of SAR data types (spotlight/stripmap, zero Doppler range migration/polar format algorithm, etc.)

Visualization

The Taser tool (or TaserClean, if you prefer) provides a way to easily and quickly browse/zoom/pan through large complex SAR datasets that might be too large and cumbersome to fit into memory and then potentially call other tools on selections of that data. The component in those tools that enables this is a reusable component (hg_mitm_viewer.m) that can be easily added into new tools (as was done with the RCSTool and PolTool).

There are also tools for visualizing a SAR collection geometry in KML (Image2KMLGUI.m), browsing image metadata (MetaView.m), and generating a "metaicon" for summarizing a SAR collection (MIM.m).

Origin

The MATLAB SAR Toolbox was developed at the National Geospatial-Intelligence Agency (NGA). The software use, modification, and distribution rights are stipulated within the MIT license.

Pull Requests

If you'd like to contribute to this project, please make a pull request. We'll review the pull request and discuss the changes. All pull request contributions to this project will be released under the MIT license.

Software source code previously released under an open source license and then modified by NGA staff is considered a "joint work" (see 17 USC ยง 101); it is partially copyrighted, partially public domain, and as a whole is protected by the copyrights of the non-government authors and must be released according to the terms of the original open source license.

More Repositories

1

geoq

Django web application to collect geospatial features and manage feature collection among groups of users
JavaScript
652
star
2

hootenanny

Hootenanny conflates multiple maps into a single seamless map.
JavaScript
337
star
3

geopackage-js

GeoPackage JavaScript Library
TypeScript
298
star
4

gamification-server

Server to track gamification elements (badges, points, tags) to work pages or apps
JavaScript
239
star
5

sarpy

A basic Python library to demonstrate reading, writing, display, and simple processing of complex SAR data using the NGA SICD standard.
Python
230
star
6

mrgeo

MrGeo is a geospatial toolkit designed to provide raster-based geospatial capabilities that can be performed at scale. MrGeo is built upon Apache Spark and the Hadoop ecosystem to leverage the storage and processing of hundreds of commodity computers. See the wiki for more details.
Java
199
star
7

opensphere

OpenSphere
JavaScript
178
star
8

elasticgeo

ElasticGeo provides a GeoTools data store that allows geospatial features from an Elasticsearch index to be published via OGC services using GeoServer.
Java
167
star
9

fog-machine

iOS Swift framework for parallel processing
Swift
121
star
10

scale

Processing framework for containerized algorithms
Python
105
star
11

geopackage-android

GeoPackage Android Library
Java
87
star
12

mage-server

Mobile Awareness GEOINT Environment Server
TypeScript
86
star
13

geopackage-java

GeoPackage Java Library
Java
77
star
14

tiff-java

Tagged Image File Format Java Library
Java
71
star
15

six-library

Sensor Independent XML Library
C++
68
star
16

geopackage-ios

GeoPackage iOS Library
Objective-C
51
star
17

social-media-picture-explorer

Backend for social-media-picture-explorer-ui, a tool for using deep learning to interactively explore social media
Jupyter Notebook
50
star
18

geoevents

The GeoEvents project is a dynamic and customizable open source web presence that provides a common operational picture to consolidate activities, manage content, and provides a single point of discovery. GeoEvents was used by deployers and first responders in over 100 real-world events.
JavaScript
40
star
19

mage-android

Mobile Awareness GEOINT Environment Android
Kotlin
39
star
20

MAGE

Main Page for the Mobile Awareness GEOINT Environment
JavaScript
38
star
21

GeoPackage

Main Page for NGA GeoPackage Efforts
37
star
22

geopackage-mapcache-android

GeoPackage MapCache Android App
Python
35
star
23

simple-features-geojson-java

Simple Features GeoJSON Java Library
Java
33
star
24

mage-ios

Mobile Awareness GEOINT Environment iOS
Swift
33
star
25

geopackage-android-map

GeoPackage Android Map Library
Java
33
star
26

geopackage-core-java

GeoPackage Core Java Library
Java
31
star
27

geoint-standards

co-create and grow GEOINT standards transparenlty
HTML
30
star
28

tiff-ios

Tagged Image File Format iOS Library
Objective-C
28
star
29

opensphere-desktop

opensphere-desktop
Java
28
star
30

hootenanny-ui

Hootenanny UI is a submodule of the Hootennany vector conflation project.
JavaScript
28
star
31

voxel-globe

calibrates aerial camera models and constructs 3D models from video sequences
Python
26
star
32

endpoint.js

Web application discovery, execution and streaming library
JavaScript
26
star
33

geoq-chef-installer

Chef recipes and configuration files to install the 'geoq' app onto a Virtual Machine
Ruby
25
star
34

map-of-world-api

Map of the World API supports multiple web-based mapping libraries and provides a consistent set of methods for interacting with any supported implementations
JavaScript
25
star
35

mapcache-electron

Desktop application for creating and editing GeoPackages
JavaScript
24
star
36

Nounalyzer

Analyze the nouns and entities in a rss feed
HTML
21
star
37

mapcache-server

MapCache Server
JavaScript
21
star
38

geopackage-mapcache-ios

GeoPackage MapCache iOS App
Objective-C
21
star
39

simple-features-wkb-java

Simple Features Well-Known Binary Java Library
Java
20
star
40

state-of-the-data

content suitability assessment tools
Python
19
star
41

social-media-picture-explorer-ui

A user interface to explore social media more graphically
JavaScript
19
star
42

csm

Community Sensor Model
C++
18
star
43

conduit

content curation tool
JavaScript
18
star
44

anti-piracy-android-app

Anti-Shipping Activity Messages (ASAM) App for Android displays location and descriptive information about hostile acts against ships and mariners. The app caches warning data and works without a Wi-Fi or cellular connection.
Java
18
star
45

Rational-Polynomial-Coefficients-Mapper

C++ class that uses RPC coefficients to map an object space coordinate represented in Latitude, Longitude, and Altitude to a sensor position represented in X,Y
C++
18
star
46

mgrs-java

Military Grid Reference System Java Library
Java
16
star
47

simple-features-java

Simple Features Java Library
Java
16
star
48

anti-piracy-iOS-app

Anti-Shipping Activity Messages (ASAM) App for iOS displays location and descriptive information about hostile acts against ships and mariners. The app caches warning data and works without a Wi-Fi or cellular connection.
Swift
16
star
49

leaflet-geopackage

Leaflet GeoPackage
JavaScript
16
star
50

mage-ios-sdk

Mobile Awareness GEOINT Environment iOS SDK
Objective-C
15
star
51

sarpy_apps

Python
15
star
52

geoint-in-motion

data comparison tools written in python
Python
14
star
53

disconnected-content-explorer-iOS

Disconnected Interactive Content Explorer (DICE) is an app for iOS, Android, and Windows that allows users to load interactive content generated in HTML, CSS, and Javascript to a mobile device so the device can display interactive content without a network connection.
Objective-C
14
star
54

disconnected-content-explorer-android

Disconnected Interactive Content Explorer (DICE) is an app for iOS, Android, and Windows that allows users to load interactive content generated in HTML, CSS, and Javascript to a mobile device so the device can display interactive content without a network connection.
Java
13
star
55

geopackage-viewer-js

JavaScript
13
star
56

color-java

Color Java Library
Java
13
star
57

keycloak-login.gov-integration

HTML
12
star
58

rfi-generator

The RFI Generator helps first responders and HQ analysts work Requests for Information (RFIs) within a geospatial context.
JavaScript
12
star
59

simple-features-proj-java

Simple Features Projection Java Library
Java
11
star
60

Sensor_Integration_Framework

The purpose of this document is to provide guidance required for sensor data producers and consumers to implement a sensor information enterprise that meets operational requirements, achieves United States (U.S.) Department of Defense (DoD) and Intelligence Community (IC) Chief Information Officer (CIO) goals, and conforms to applicable policy.
10
star
61

mrgeo-geoserver-plugin

Java
9
star
62

cocreate

Open source environment for development, integration and testing
Python
9
star
63

opensphere-asm

opensphere-asm
JavaScript
9
star
64

opensphere-electron

Run OpenSphere in an Electron container.
JavaScript
9
star
65

Geospatial-Analysis-Integrity-Tool

The Geospatial Analysis Integrity Tool (GAIT) validates data against a data model. GAIT checks geometry, feature codes, attribute values and domains, and metadata. The tool writes its results as line and point shapefiles to an output directory. GAIT can execute against data in MGCP, GIFD, TDS, and VMap data models.
C
9
star
66

Spectral-Library-Reader

C++ Library that reads the splib06a file, which is a custom binary spectral reflectance database file created by USGS
C++
8
star
67

wedge-maker-4-gis

An ArcGIS Python toolbox for creating wedge and arcband shapes
Python
8
star
68

ogc-api-features-json-java

OGC API Features JSON Java Library
Java
8
star
69

projections-ios

Projections iOS Library
Objective-C
7
star
70

SWIRSignalDetection

analyzes shortwave infrared reflectance
Cuda
7
star
71

geogig

Java
7
star
72

mgrs-ios

Military Grid Reference System iOS Library
Swift
7
star
73

tk_builder

Python
7
star
74

coordinate-reference-systems-java

Coordinate Reference Systems Java Library
Java
7
star
75

scale-ui

UI front-end for Scale - Processing framework for containerized algorithms
TypeScript
6
star
76

DigitalGlobeReader

C++
6
star
77

mage-android-wear

Mobile Awareness GEOINT Environment Android Wear
Java
6
star
78

seed

Standard for discovery and consumption of Docker containerized jobs.
SCSS
6
star
79

opensphere-yarn-workspace

opensphere-yarn-workspace
JavaScript
6
star
80

mgrs-android

Military Grid Reference System Android Library
Java
6
star
81

geowave-osm

OSM Data processing for GeoWave
Java
5
star
82

mage-android-wear-bridge

MAGE Android Wear Bridge
Java
5
star
83

geopackage-geojson-js

GeoPackage GeoJSON Converter
JavaScript
5
star
84

hootenanny-rpms

RPMs needed for a Hootenanny install
Shell
5
star
85

simple-features-wkb-ios

Simple Features Well-Known Binary iOS Library
Objective-C
5
star
86

simple-features-wkt-java

Simple Features Well-Known Text Java Library
Java
5
star
87

mage-chronostouch-android

Mobile Awareness GEOINT Environment Chronostouch Android
Java
5
star
88

seed-silo

Rest API for discovering Seed images
Go
5
star
89

mgrs-js

Military Grid Reference System Javascript Library
TypeScript
5
star
90

grid-js

Grid Javascript Library
TypeScript
5
star
91

seed-cli

Algorithm developer CLI supporting Seed compliant image publish and testing.
Go
5
star
92

geowave-vagrant

Vagrant environment for geowave development.
Shell
5
star
93

marlin-ios

Swift
4
star
94

ogc-api-features-json-ios

OGC API Features JSON iOS Library
Objective-C
4
star
95

opensphere-plugin-example

opensphere-plugin-example
JavaScript
4
star
96

geoevents-chef-installer

This is a set of Chef recipes (think of them as macros to automatically build a running Virtual Machine) that will work to set the geoevents app up on either a local Virtualbox VM or onto an Amazon Web Service VM.
Ruby
4
star
97

gars-java

Global Area Reference System Java Library
Java
3
star
98

opensphere-build-index

opensphere-build-index
JavaScript
3
star
99

disconnected-content-explorer-examples

Example reports for the Disconnected Interactive Content Explorer (DICE) app
JavaScript
3
star
100

seed-images

An Angular component for Seed image discovery
TypeScript
3
star