{"id":13642050,"url":"https://github.com/ngageoint/sarpy","last_synced_at":"2026-01-07T22:16:33.313Z","repository":{"id":38051769,"uuid":"126400199","full_name":"ngageoint/sarpy","owner":"ngageoint","description":"A basic Python library to demonstrate reading, writing, display, and simple processing of complex SAR data using the NGA SICD standard.","archived":false,"fork":false,"pushed_at":"2025-05-09T17:08:34.000Z","size":4609,"stargazers_count":275,"open_issues_count":16,"forks_count":95,"subscribers_count":33,"default_branch":"master","last_synced_at":"2025-05-09T18:24:22.218Z","etag":null,"topics":["radar","sar","sicd","synthetic-aperture-radar"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ngageoint.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-03-22T22:03:23.000Z","updated_at":"2025-05-08T20:17:47.000Z","dependencies_parsed_at":"2023-02-19T11:16:10.838Z","dependency_job_id":"c5c538a2-d096-4142-824c-37f1a246b8b1","html_url":"https://github.com/ngageoint/sarpy","commit_stats":{"total_commits":394,"total_committers":28,"mean_commits":"14.071428571428571","dds":"0.47208121827411165","last_synced_commit":"11d19a0440725181678cff89873c6f2315c6a96d"},"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngageoint%2Fsarpy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngageoint%2Fsarpy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngageoint%2Fsarpy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ngageoint%2Fsarpy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ngageoint","download_url":"https://codeload.github.com/ngageoint/sarpy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253302708,"owners_count":21886824,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["radar","sar","sicd","synthetic-aperture-radar"],"created_at":"2024-08-02T01:01:26.870Z","updated_at":"2026-01-07T22:16:33.270Z","avatar_url":"https://github.com/ngageoint.png","language":"Python","funding_links":[],"categories":["Radar Related GitHub Repos","Python"],"sub_categories":["Software and Utilities"],"readme":"SarPy\n=====\nSarPy is a basic Python library to read, write, and do simple processing\nof complex SAR data using the NGA SICD format *(standards linked below)*. \nIt has been released by NGA to encourage the use of SAR data standards\nthroughout the international SAR community. SarPy complements the\n[SIX](https://github.com/ngageoint/six-library) library (C++) and the\n[MATLAB SAR Toolbox](https://github.com/ngageoint/MATLAB_SAR), which are\nimplemented in other languages but have similar goals.\n\nSome sample SICD files can be found \n[here](https://github.com/ngageoint/six-library/wiki/Sample-SICDs).\n\nRelevant Standards Documents\n----------------------------\nA variety of SAR format standard are mentioned throughout this ReadMe, here are \nassociated references. \n\n*Sensor Independent Complex Data (SICD)* - latest version (1.3.0; 2021-11-30)\n\n1. [Volume 1, Design \u0026 Implementation Description Document](https://nsgreg.nga.mil/doc/view?i=5381)\n2. [Volume 2, File Format Description Document](https://nsgreg.nga.mil/doc/view?i=5382)\n3. [Volume 3, Image Projections Description Document](https://nsgreg.nga.mil/doc/view?i=5383)\n4. [Schema](https://nsgreg.nga.mil/doc/view?i=5418)\n\n*Sensor Independent Derived Data (SIDD)* - latest version (3.0; 2021-11-30)\n1. [Volume 1, Design and Implementation Description Document](https://nsgreg.nga.mil/doc/view?i=5440)\n2. [Volume 2, NITF File Format Description Document]( https://nsgreg.nga.mil/doc/view?i=5441)\n3. [Volume 3, GeoTIFF File Format Description Document](https://nsgreg.nga.mil/doc/view?i=5442)\n4. [Schema](https://nsgreg.nga.mil/doc/view?i=5231)\n\n*Compensated Phase History Data (CPHD)* - latest version (1.1.0; 2021-11-30)\n1. [Design \u0026 Implementation Description](https://nsgreg.nga.mil/doc/view?i=5388)\n2. [Design \u0026 Implementation Schema](https://nsgreg.nga.mil/doc/view?i=5421)\n\nBoth SICD and SIDD files are NITF files following specific guidelines\n*Basic Image Interchange Format (BIFF)* - latest edition (2021.2; 2021-04-20)\n1. [National Imagery Transmission Format](https://nsgreg.nga.mil/doc/view?i=5262)\n\nFor other NGA standards inquiries, the standards registry can be searched\n\n[here](https://nsgreg.nga.mil/registries/search/index.jsp?registryType=doc).\n \nBasic Capability\n----------------\nThe basic capabilities provided in SarPy is generally SAR specific, and largely \ngeared towards reading and manipulating data provided in NGA SAR file formats. \nFull support for reading and writing SICD, SIDD, CPHD, and CRSD (standard pending) \nand associated metadata structures is currently provided, and this is the main \nfocus of this project.\n\nThere is additionally support for reading data from complex data formats analogous \nto SICD format, *usually called Single Look Complex (SLC) or Level 1*, from a \nvariety of commercial or other sources including \n- Capella (**partial support**)\n- COSMO-SkyMed (1st and 2nd generation)\n- GFF (Sandia format)\n- ICEYE\n- NISAR\n- PALSAR2\n- RadarSat-2\n- Radar Constellation Mission (RCM)\n- Sentinel-1\n- TerraSAR-X.\n\nFor this SLC format data, it is read directly as though it were coming from a SICD \nfile. *This ability to read does not generally apply to data products other \nthan the SLC or Level 1 product, and there is typically no direct NGA standard \nanalog for these products.*\n\nSome general TIFF and NITF reading support is provided, but this is not the main \ngoal of the SarPy library.\n\nDocumentation\n-------------\nDocumentation for the project is available at \n[readthedocs](https://sarpy.readthedocs.io/en/latest/).\n\nIf this documentation is inaccessible, it can be built locally after checking out \nthis repository using sphinx via the command `python setup.py build_sphinx`. \nThis depends on python package `sphinx`.\n\nOrigins\n-------\nSarPy was developed at the National Geospatial-Intelligence Agency (NGA). The \nsoftware use, modification, and distribution rights are stipulated within the \nMIT license.\n\nDependencies\n------------\nThe core library functionality depends only on `numpy` and `scipy`. \n\nOptional Dependencies and Behavior\n----------------------------------\nThere are a small collection of dependencies representing functionality which may \nnot be core requirements for much of the sarpy targeted tasks. The tension between\nrequiring the least extensive list of dependencies possible for core functionality \nand not having surprise unstated dependencies which caused unexpected failures is \nevident here. It is evident that there are many viable arguments for making any \nor all of these formally stated dependencies. The choices made here are guided by \npractical realities versus what is generally considered best practices.\n\nFor all packages on this list, the import is tried (where relevant), and any \nimport errors for these optional dependencies are caught and handled. In other words, \na missing optional dependency **will not** be presented as import time. Excepting \nthe functionality requiring `h5py`, this import error handling is probably silent. \n\nEvery module in sarpy can be successfully imported, provided that numpy and scipy \nare in the environment. Attempts at using functionality depending on a missing \noptional dependency will generate an error **at run time** with accompanying \nmessage indicating the missing optional dependency.\n\n- Support for reading single look complex data from certain sources which provide \n  data in hdf5 format require the `h5py` package, this includes Cosmo-Skymed, ICEYE, \n  and NISAR data.\n\n- Reading an image segment in a NITF file using jpeg or jpeg 2000 compression,\n  reading a GeoTIFF DEM, and/or writing a kmz image overlay requires the `pillow` \n  package.\n\n- CPHD consistency checks, presented in the `sarpy.consistency` module, depend on \n  `lxml\u003e=4.1.1`, `networkx\u003e=2.5`, `shapely\u003e=1.6.4`, and `pytest\u003e=3.3.2`. Note that these\n  are the versions tested for compliance.\n\n- Some less commonly used (in the sarpy realm) NITF functionality requires the use \n  and interpretation of UTM coordinates, and this requires the `pyproj` package. \n\n- Building sphinx documentation (mentioned below) requires packages `sphinx`, \n  and `sphinx_gallery`.\n\n- Optional portions of running unit tests (unlikely to be of relevance to anyone \n  not performing development on the core sarpy package itself) require the `lxml`\n  package\n\nInstallation\n------------\nFrom PyPI, install using pip (may require escalated privileges e.g. sudo):\n```bash\npip install sarpy\n```\nNote that here `pip` represents the pip utility for the desired Python environment.\n\nFor verbose instructions for installing from source, see \n[here](https://docs.python.org/3/install/index.html). It is recommended that \nstill the package is built locally and installed using pip, which allows a proper \npackage update mechanism, while `python setup.py install` **does not**.\n\nIssues and Bugs\n---------------\nSupport for Python 2 has been dropped. The core sarpy functionality has been \ntested for Python 3.8, 3.9, 3.10, 3.11, 3.12.\n\nChanges to sarpy for the sole purpose of supporting a Python version beyond \nend-of-life are unlikely to be considered.\n\nInformation regarding any discovered bugs would be greatly appreciated, so please\nfeel free to create a GitHub issue. If more appropriate, contact richard.m.naething@nga.mil.\n\nIntegration Branches\n--------------------\nIntegration branches (branches prefixed with `integration/`) are used to stage content under\nconsideration for inclusion in the `master` branch and future SarPy releases.\nThese branches can be used to access features and bug fixes that have not been fully released.\n\nPull Requests\n-------------\nEfforts at direct contribution to the project are certainly welcome, and please\nfeel free to make a pull request. Pull requests should be authored against the `master`\nbranch but may be retargeted to a suitable integration branch upon review.\nNote that any and all contributions to this project will be released under the MIT license.\n\nSoftware source code previously released under an open source license and then \nmodified by NGA staff is considered a \"joint work\" (see 17 USC 101); it is partially \ncopyrighted, partially public domain, and as a whole is protected by the copyrights \nof the non-government authors and must be released according to the terms of the \noriginal open source license.\n\nAssociated GUI Capabilities\n---------------------------\nSome associated SAR specific graphical user interface tools are maintained in the \n[sarpy_apps project](https://github.com/ngageoint/sarpy_apps). \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngageoint%2Fsarpy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fngageoint%2Fsarpy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fngageoint%2Fsarpy/lists"}