{ "info": { "author": "John Truckenbrodt", "author_email": "john.truckenbrodt@uni-jena.de", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python" ], "description": "

\n
\n pyroSAR\n

\n

A Python Framework for Large-Scale SAR Satellite Data Processing

\n\n

\n Description \u2022\n Installation \u2022\n Dependencies \u2022\n Example \u2022\n Notes \u2022\n Authors\n

\n\n

\n \"Travis\n Appveyor Status\n \n Coveralls Status \n \n Documentation Status\n \n PIP Status\n

\n\n# Description\n\nThe pyroSAR package aims at providing a complete solution for the scalable organization and processing of SAR satellite data:\n* Reading of data from various past and present satellite missions\n* Handling of acquisition metadata\n* User-friendly access to processing utilities in SNAP and GAMMA Remote Sensing software\n* Formatting of the preprocessed data for further analysis\n\n[Here](https://pyrosar.readthedocs.io/en/latest/?badge=latest) you can find the documentation.\n\npyroSAR is/was used in these projects:\n* [BACI](http://www.baci-h2020.eu/index.php/Main/HomePage)\n* [CCI Biomass](http://cci.esa.int/biomass)\n* [GlobBiomass](http://globbiomass.org/)\n* [SALDI](https://www.saldi.uni-jena.de/)\n* [SenThIS](https://eos-jena.com/en/projects/)\n* [Sentinel4REDD](https://www.dlr.de/rd/en/Portaldata/28/Resources/dokumente/re/Projektblatt_Sentinel4REDD_engl.pdf)\n* [SWOS](https://www.swos-service.eu/)\n\nYou know of other projects? We'd be happy to know.\n\n# Installation\nFirst we need to install pip. On Windows pip is installed together with Anaconda, on Linux you can easily install it\n via command line:\n```sh\nsudo apt-get install python-pip\n```\nThe latest stable release of pyroSAR can then be installed:\n```sh\npython -m pip install pyroSAR\n```\n\nFor installation of the latest master branch on GitHub, we need the version control system git. On Windows, git can be \ndownloaded from [here](https://git-scm.com/downloads). On Linux you can install it via command line:\n```sh\nsudo apt-get install git\n```\nOnce everything is set up, pyroSAR is ready to be installed:\n```sh\npython -m pip install git+https://github.com/johntruckenbrodt/pyroSAR.git\n```\n\n# Dependencies\nIf you are using Windows, the easiest way to work with pyroSAR and Python in general is by using \n[Anaconda](https://www.anaconda.com/download/). It comes with all basic requirements of pyroSAR.\nThe more specific instructions below are intended for Linux users.\n### GDAL\npyroSAR requires GDAL version 2.1 with GEOS and PROJ4 as dependencies as well as the GDAL Python binding.\n#### Ubuntu\nStarting with release Yakkety (16.10), Ubuntu comes with GDAL >2.1. \nSee here. \nYou can install it like this:\n```bash\nsudo apt-get install python-gdal python3-gdal gdal-bin\n```\nFor older Ubuntu releases you can add the ubuntugis repository to apt prior to installation to install version >2.1:\n```sh\nsudo add-apt-repository ppa:ubuntugis/ppa\nsudo apt-get update\n```\nThis way the required dependencies (GEOS and PROJ4 in particular) are also installed.\nYou can check the version by typing:\n```sh\ngdalinfo --version\n```\n#### Debian\nStarting with Debian 9 (Stretch) GDAL is available in version >2.1 in the official repository.\n#### Building from source\nAlternatively, you can build GDAL and the dependencies from source. The script `pyroSAR/install/install_deps.sh` \ngives specific instructions on how to do it. It is not yet intended to run this script via shell, but rather to \nfollow the instructions step by step.\n### SQLite + SpatiaLite\nWhile `sqlite3` and its Python binding are usually already installed, the `spatialite` extension needs to be \nadded. Two packages exist, `libspatialite` and `mod_spatialite`. Both can be used by pyroSAR.\nOn Ubuntu, `mod_spatialite` has been found to be easier to setup with `sqlite` and can be installed via `apt`:\n```sh\nsudo apt-get install libsqlite3-mod-spatialite\n```\nOn CentOS, `libspatialite` including shared objects for extension loading can be installed via `yum`:\n```sh\nsudo yum install libspatialite-devel\n```\nThe following can be run in Python to test the needed functionality:\n```Python\nimport sqlite3\n# setup an in-memory database\ncon=sqlite3.connect(':memory:')\n# enable loading extensions and load spatialite\ncon.enable_load_extension(True)\ntry:\n con.load_extension('mod_spatialite.so')\nexcept sqlite3.OperationalError:\n con.load_extension('libspatialite.so')\n```\nIn case loading extensions is not permitted you might need to install the package `pysqlite2` \ntogether with a static build of `sqlite3`. \nSee the script `pyroSAR/install/install_deps.sh` for instructions. \nThere you can also find instructions on how to install `spatialite` from source.\nTo test `pysqlite2` you can import it as follows and then run the test above:\n```Python\nfrom pysqlite2 import dbapi2 as sqlite3\n```\nInstalling this package is likely to cause problems with the `sqlite3` library installed on the system. \nThus, it is safer to build a static `sqlite3` library for it (see installation script).\n\n\n# Example\nNow that everything is installed, we can start working with our satellite data.\nLet's assume you have a Sentinel-1 scene in a local directory. \nAt first we load the scene into pyroSAR for analysis of the metadata:\n```python\nfrom pyroSAR import identify\nname = 'S1A_IW_GRDH_1SDV_20150222T170750_20150222T170815_004739_005DD8_3768.zip'\nscene = identify(name)\nprint(scene)\n```\nThis will automatically identify the scene, scan it for metadata and print a summary of selected metadata entries.\nThe names of the attributes (e.g. sensor and acquisition_mode) are standardized for all SAR scenes.\nFurther entries, whose names are not standardized, can be found in a dictionary `scene.meta`.\n\nNow that we have made ourselves familiar with the scene, we import it into a sqlite database:\n```python\nfrom pyroSAR import Archive\ndbfile = 'scenes.db'\nwith Archive(dbfile) as archive:\n archive.insert(scene)\n```\n`dbfile` is a file either containing an already existing database or one to be created.\n\nLet's assume our database contains a number of scenes and we want to select some for processing. \nWe have a shapefile, which contains a geometry delimiting our test site for which we want to \nprocess some Sentinel-1 scenes. \nWe already processed some scenes in the past and the results are stored in a directory\n`outdir`. We only want to select scenes which have not been processed to this directory before. \nFurthermore, we are only interested in scenes acquired in Ground Range Detected (GRD) Interferometric Wide \nSwath mode (IW), which contain a VV band.\n\n```python\nfrom spatialist import Vector\narchive = Archive('scenes.db')\nsite = Vector('site.shp')\noutdir = '/path/to/processed/results'\nmaxdate = '20171231T235959'\nselection_proc = archive.select(vectorobject=site,\n processdir=outdir,\n maxdate=maxdate,\n sensor=('S1A', 'S1B'),\n product='GRD',\n acquisition_mode='IW',\n vv=1)\narchive.close()\n```\nHere we use pyroSAR's own vector geometry driver for loading the shapefile and pass it, together with the other parameters,\nto the method `Archive.select`. You can also use the `with` statement like in the code block above.\nThe returned `selection_proc` is a list of file names for the scenes we selected from the database, which we can now \npass to a processing function:\n```python\nfrom pyroSAR.snap import geocode\n\n# the target pixel resolution in meters\nresolution = 20\n\nfor scene in selection_proc:\n geocode(infile=scene, outdir=outdir, tr=resolution, scaling='db', shapefile=site)\n```\nThe function `geocode` is a basic utility for SNAP. It will perform all necessary steps to subset, resample, orthorectify,\ntopographically normalize and scale the input image and write GeoTiff files to the selected output directory. \nAll necessary files like orbit state vectors and SRTM DEM tiles are downloaded automatically in the background by SNAP. \nSNAP is most conveniently used with workflow XMLs. The function geocode parses a workflow for the particular scene,\nparametrizes it depending on the scene type and selected processing parameters and writes it to the output directory. \nIt then calls the command `gpt`, which is SNAP's command line interface, on the workflow to execute the processing steps. \n\n# Notes\n### A Word on File Naming\npyroSAR internally uses a fixed naming scheme to keep track of processed results. For each scene an identifier is created,\nwhich contains the sensor, acquisition mode, orbit (ascending or dsescending) and the time stamp of the acquisition start.\nFor the example above it is `S1A__IW___A_20150222T170750`, which can be created by calling `scene.outname_base()`. For each\nattribute a fixed number of digits is reserved. In case the attribute is shorter than this number, \nthe rest of the digits is filled with underscores. I.e., the sensor field is four digits long, but 'S1A' only three.\nThus, `S1A_` is the sensor slot. In the same way, `IW__` is the acquisition mode slot, which is also four digits long. \n`A` denotes ascending orbit, the time stamp is in format YYYYmmddTHHMMSS.\n\nProcessing functions like `geocode` add suffixes to this identifier to further keep track of individual processing\nsteps performed on the dataset. \nThis core concept is used by many pyroSAR functions internally to keep track of which scenes have been processed before.\n\n### Long Description\n\nThe launch of recent satellite missions, the Sentinel fleet of ESA\u2019s Copernicus programme in particular, has led to a\ntremendous increase in available earth observation data provided at no cost. The increase in data availability opens up\nnew opportunities for analysing data not only in the spatial but also temporal domain by observing time series and thus\nthe possibility to visualise processes on the earth\u2019s surface. Although this is not entirely new to optical satellite\ndata, Synthetic Aperture Radar (SAR) data was only infrequently acquired in the past. With the new ESA SAR satellites\nSentinel-1A and Sentinel-1B there is now the possibility to observe the earth\u2019s surface with a repeat rate of up to six\ndays and a spatial resolution of 20 m independent of atmospheric effects and sun illumination.\nTogether with the increase in data availability comes the challenge of organizing data and preparing it for scientific\nanalysis. While traditional software aimed at analysing single images, the need arises for fully automated organization\nof large image archives with thousands of images together with a highly capable processing framework to make full use of\navailable hardware resources.\nThe pyroSAR environment aims at providing a complete solution for the organization and processing of SAR satellite data\nfor applications scalable from personal computers to large server infrastructures using various open source tools and\nlibraries. Its purpose is to provide complex functionality for reading various data formats from past and present\nsatellite missions, handling metadata about acquisition characteristics in a database, and providing homogenised\nuser-friendly access to processing utilities in ESA\u2019s Sentinel Application Platform (SNAP) as well as GAMMA Remote\nSensing software.\nThe data reader uses the Geo Data Abstraction Library (GDAL) where possible and own implementations otherwise.\nThe metadata attributes are homogenised to enable database access of specific acquisition characteristics across\ndifferent sensor platforms. The metadata is ingested into a SpatiaLite database from which the original imagery can be\nselected for processing.\nThe SAR processor provides functionality to distribute the tasks on different computing cores as well as different\nserver nodes. By following a stringent naming scheme of processed images as well as annotated metadata XMLs, processing\ncan be organized to be performed by several operators in a server network. This way, redundant usage of disk space and\nprocessing resources can be reduced.\nOnce the images are processed, further functionalities are available for mosaicking and resampling images to common\npixel boundaries suited for time series analysis. Thus, the scientist is provided with data stacks cropped to the study\narea and directly formatted for analysis without spending time with SAR-specific processing and general data management\nissues.\nThis software is currently being developed within EU Horizon-2020 project \u2018Satellite-based Wetland Observation Service\n(SWOS)\u2019. In an effort to better monitor wetlands from space with both optical and radar data, the dense time series of\nthe Sentinel-1 satellites is exploited in order to derive high temporal resolution surface water dynamics maps. This is\nrealized by applying clustering techniques in the temporal image domain of all available datasets.\n\n# Authors\n* **John Truckenbrodt** (john.truckenbrodt@uni-jena.de)\n* **Felix Cremer** (felix.cremer@uni-jena.de)\n* **Ismail Baris** (i.baris@outlook.de)\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/johntruckenbrodt/pyroSAR.git", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyroSAR", "package_url": "https://pypi.org/project/pyroSAR/", "platform": "", "project_url": "https://pypi.org/project/pyroSAR/", "project_urls": { "Homepage": "https://github.com/johntruckenbrodt/pyroSAR.git" }, "release_url": "https://pypi.org/project/pyroSAR/0.9.1/", "requires_dist": [ "progressbar2", "pathos (>=0.2)", "numpy", "scoop", "spatialist (==0.2.9)", "pyyaml", "sphinx ; extra == 'docs'" ], "requires_python": "", "summary": "a framework for large-scale SAR satellite data processing", "version": "0.9.1" }, "last_serial": 5489038, "releases": { "0.5": [ { "comment_text": "", "digests": { "md5": "5c7a0d9100c5aa32805a2192f770f3ee", "sha256": "ae3c8596ef99e27f20e54afc2a2e556c98ce360eaa4c06a5317d3f7ddf23ef22" }, "downloads": -1, "filename": "pyroSAR-0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "5c7a0d9100c5aa32805a2192f770f3ee", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 74768, "upload_time": "2018-08-06T15:45:19", "url": "https://files.pythonhosted.org/packages/ba/00/dbc6442114fd6adf1f2ed0139f4418530d02d9cd66d0cdf4fd03e7e69ef1/pyroSAR-0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7cb6331eb37fe7a2d7342955b1f86aea", "sha256": "91b1ed49f3785dc49264ac746f8dbc27d126a36a0d99890bf101843363183529" }, "downloads": -1, "filename": "pyroSAR-0.5.tar.gz", "has_sig": false, "md5_digest": "7cb6331eb37fe7a2d7342955b1f86aea", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73694, "upload_time": "2018-08-06T15:45:20", "url": "https://files.pythonhosted.org/packages/97/dd/ad479d8fde2ed29a331830e9f220abe4d369209a0c2948fac8c012eb82e7/pyroSAR-0.5.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "c97e5f7fca8bbfa398f89fe6b1ddfa23", "sha256": "3e2354e7ae8c8ca2e170bb95b7dfd50148259fa2964a91c71ab4a5578dbbaa83" }, "downloads": -1, "filename": "pyroSAR-0.5.1-py2.7.egg", "has_sig": false, "md5_digest": "c97e5f7fca8bbfa398f89fe6b1ddfa23", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 4810721, "upload_time": "2018-11-20T13:27:26", "url": "https://files.pythonhosted.org/packages/52/35/80557d4600305cb00e652b6165f9acde5d7239ae3460bc9b8ac9832f7bc2/pyroSAR-0.5.1-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "fc9b7a4a6b4e75aff25ec0a6b3d92668", "sha256": "7061fe863e17b1dc16b0f54b4db5b6ebd93d7db94c199e00b48fa11612b004ab" }, "downloads": -1, "filename": "pyroSAR-0.5.1-py2-none-any.whl", "has_sig": false, "md5_digest": "fc9b7a4a6b4e75aff25ec0a6b3d92668", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 80697, "upload_time": "2018-08-07T17:19:44", "url": "https://files.pythonhosted.org/packages/e6/ec/21529dc93bf6f36aa138778061921c6042c5593e0137a022dc25590e8ce6/pyroSAR-0.5.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6aa49d71e4b96f5bde4db8ac443584ff", "sha256": "d99cb983efaeef32d28dc64af75499d6f85d68da18dd67e4d3276fbb2eac3dee" }, "downloads": -1, "filename": "pyroSAR-0.5.1-py3.6.egg", "has_sig": false, "md5_digest": "6aa49d71e4b96f5bde4db8ac443584ff", "packagetype": "bdist_egg", "python_version": "3.6", "requires_python": null, "size": 4812146, "upload_time": "2018-11-20T13:27:37", "url": "https://files.pythonhosted.org/packages/65/e5/e4d1b98078a65860ea292a6b760b342e6a4773aa2650f9fe6db50eb21836/pyroSAR-0.5.1-py3.6.egg" }, { "comment_text": "", "digests": { "md5": "af7fc1df0f56d117d2563418b53196a2", "sha256": "6c0bff3cf4255b5e38fc545263f11ef0cf2a3565512fad73862f808c3408c53b" }, "downloads": -1, "filename": "pyroSAR-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "af7fc1df0f56d117d2563418b53196a2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 74644, "upload_time": "2018-08-07T17:19:46", "url": "https://files.pythonhosted.org/packages/26/22/0d020855fa7c1b476a66952370ad84d4aa6b10f30be0dec36b59ea15b2c3/pyroSAR-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f9fc3c0e36af890cd370993b7104a41", "sha256": "537e46484cf0adfd75b715424958fe42b3c119e1cbe7425806ee4a0cf3bf2d1c" }, "downloads": -1, "filename": "pyroSAR-0.5.1.tar.gz", "has_sig": false, "md5_digest": "2f9fc3c0e36af890cd370993b7104a41", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 73719, "upload_time": "2018-08-07T17:19:48", "url": "https://files.pythonhosted.org/packages/28/b4/0f468acfabb398111adacd7e8be1e5e33a7afd01d3771e37f692c4157b75/pyroSAR-0.5.1.tar.gz" } ], "0.6": [ { "comment_text": "", "digests": { "md5": "31349329e9f40bb378fc577255e2902c", "sha256": "71ec42fd5abc563b8e114d56a66bc3ee41ae7f4c201024c8ed60fc1f02de2339" }, "downloads": -1, "filename": "pyroSAR-0.6-py2-none-any.whl", "has_sig": false, "md5_digest": "31349329e9f40bb378fc577255e2902c", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 4746686, "upload_time": "2018-11-20T13:27:15", "url": "https://files.pythonhosted.org/packages/d9/a4/4cd53ad6076133285b9dd0b7802f98c2398c0f9fdaccd561306f96420eed/pyroSAR-0.6-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8eb9c3ad076d42d34b09042eb1b0253d", "sha256": "3047caa354c361b7cefa941d76ac8d29b3165e560525b435105bf5c889c9d3f7" }, "downloads": -1, "filename": "pyroSAR-0.6.tar.gz", "has_sig": false, "md5_digest": "8eb9c3ad076d42d34b09042eb1b0253d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4732443, "upload_time": "2018-11-20T13:27:50", "url": "https://files.pythonhosted.org/packages/36/1b/50e5e2607b9d78c4800511cf491ab8e3185bda36f5bd8a030e157718bd3e/pyroSAR-0.6.tar.gz" } ], "0.7": [ { "comment_text": "", "digests": { "md5": "aea1c5beffea0547d335fa0346453ff6", "sha256": "c6f189c3fe0611c52ddaa3fcac00df6cccc6effd2d41bb1862657619a62fe026" }, "downloads": -1, "filename": "pyroSAR-0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "aea1c5beffea0547d335fa0346453ff6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4764494, "upload_time": "2019-01-04T12:24:37", "url": "https://files.pythonhosted.org/packages/56/28/59ea12ee5939e84600c59c6c642feda01f91f5ba1b26a3ba2c6ebc66e860/pyroSAR-0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f38d268bf098843bd38cd8d1bfa0e89b", "sha256": "7f33eae5234dde552ef20f4b538fae2282b29ba8ae59fba657427c72f83b0f6c" }, "downloads": -1, "filename": "pyroSAR-0.7.tar.gz", "has_sig": false, "md5_digest": "f38d268bf098843bd38cd8d1bfa0e89b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4754046, "upload_time": "2019-01-04T12:25:18", "url": "https://files.pythonhosted.org/packages/41/39/ee8a2b9d5f4d2f3f077d1b4c3adafbeef58c9284ca4a0abe0ad0cdbddee9/pyroSAR-0.7.tar.gz" } ], "0.8": [ { "comment_text": "", "digests": { "md5": "9564ed1ceccd2801b588ff87e4456636", "sha256": "cd666bc27a36c9c903bea26c75c5d3ccd93ba7bd290c6cf0e6ef2e6cb3e0fac1" }, "downloads": -1, "filename": "pyroSAR-0.8.tar.gz", "has_sig": false, "md5_digest": "9564ed1ceccd2801b588ff87e4456636", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4753614, "upload_time": "2019-02-11T17:10:49", "url": "https://files.pythonhosted.org/packages/dc/21/3c6ed3ffe6e3bef8eb9c5a2325ddab537906ed88b9e62b3b2358b06e4d3b/pyroSAR-0.8.tar.gz" } ], "0.9": [ { "comment_text": "", "digests": { "md5": "04802776caad55294ab692ffa7b61c2e", "sha256": "a8041339477673c862bf8b5a69b6c257de459f68190c5248cd454bc7c6a901d7" }, "downloads": -1, "filename": "pyroSAR-0.9.tar.gz", "has_sig": false, "md5_digest": "04802776caad55294ab692ffa7b61c2e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4769861, "upload_time": "2019-06-18T11:51:49", "url": "https://files.pythonhosted.org/packages/75/b5/2e9cb282dededa751e53b0efb02efa41774296fd1b142c8e526de5c351f9/pyroSAR-0.9.tar.gz" } ], "0.9.1": [ { "comment_text": "", "digests": { "md5": "7855e849150b4f0c477b9810dd7915f1", "sha256": "cbe5445e7f42fdc71272fb8d92f738ed6fa6eff1e08e8058fbfb8e46473c30b6" }, "downloads": -1, "filename": "pyroSAR-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7855e849150b4f0c477b9810dd7915f1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4779857, "upload_time": "2019-07-04T23:38:43", "url": "https://files.pythonhosted.org/packages/1c/19/d46d4463507f8a8e845d1fb890387ec17bb9d15675546ef537599ce9eb4f/pyroSAR-0.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4fb79179a9b57af44ba3ae8fba04d48", "sha256": "83805ccea39bccb36b4029507189f9748c4b5a9077a3bb35a3309884acf26f7d" }, "downloads": -1, "filename": "pyroSAR-0.9.1.tar.gz", "has_sig": false, "md5_digest": "b4fb79179a9b57af44ba3ae8fba04d48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4770437, "upload_time": "2019-07-04T23:38:52", "url": "https://files.pythonhosted.org/packages/ab/b2/53814cc97f6b97f09f9ba6641442c89bd4e7aea235c28fc23aacd06de735/pyroSAR-0.9.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "7855e849150b4f0c477b9810dd7915f1", "sha256": "cbe5445e7f42fdc71272fb8d92f738ed6fa6eff1e08e8058fbfb8e46473c30b6" }, "downloads": -1, "filename": "pyroSAR-0.9.1-py3-none-any.whl", "has_sig": false, "md5_digest": "7855e849150b4f0c477b9810dd7915f1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 4779857, "upload_time": "2019-07-04T23:38:43", "url": "https://files.pythonhosted.org/packages/1c/19/d46d4463507f8a8e845d1fb890387ec17bb9d15675546ef537599ce9eb4f/pyroSAR-0.9.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b4fb79179a9b57af44ba3ae8fba04d48", "sha256": "83805ccea39bccb36b4029507189f9748c4b5a9077a3bb35a3309884acf26f7d" }, "downloads": -1, "filename": "pyroSAR-0.9.1.tar.gz", "has_sig": false, "md5_digest": "b4fb79179a9b57af44ba3ae8fba04d48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4770437, "upload_time": "2019-07-04T23:38:52", "url": "https://files.pythonhosted.org/packages/ab/b2/53814cc97f6b97f09f9ba6641442c89bd4e7aea235c28fc23aacd06de735/pyroSAR-0.9.1.tar.gz" } ] }