{ "info": { "author": "David Shean", "author_email": "dshean@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "# pygeotools\nLibraries and command line tools for geospatial data processing and analysis\n\n## Features\n- Resample/warp rasters to common resolution/extent/projection\n- Many functions to handle rasters with NoData gaps using [NumPy masked arrays](https://docs.scipy.org/doc/numpy/reference/maskedarray.generic.html)\n- Point data coordinate transformations, sampling, and interpolation routines (e.g., arrays of xyz points)\n- Common raster filtering operations\n\n### Libraries [pygeotools/lib](./pygeotools/lib) \n- geolib - Coordinate transformations, raster to vector, vector to raster\n- malib - NumPy Masked Array operations, DEMStack class\n- warplib - On-the-fly GDAL warp operations for abitrary number of input datasets\n- iolib - File input/output, wrappers for GDAL I/O, masked array write to disk\n- timelib - Time conversions, extract timestamps from filenames, useful for raster time series analysis\n- filtlib - Collection of filters for 2D masked arrays (Gauss, rolling median, high pass, etc.)\n\n### Command-line utilities (run with no arguments for usage)\n- warptool.py - Warp arbitrary rasters to common res/extent/proj\n- make_stack.py - Create a \"stack\" of input rasters (a raster time series object) and compute stats\n- clip_raster_by_shp.py - Clip and mask an input raster using a polygon shapefile\n- apply_mask.py - Apply mask from one raster to another\n- filter.py - Apply various filters available in filtlib\n- trim_ndv.py - Remove rows/cols containing only NoData from raster margins\n- replace_ndv.py - Replace NoData value\n- proj_select.py - Automatically determine projection for input lat/lon or raster\n- raster2shp.py - Create polygon shapefile of input raster footprints\n- ogr_merge.sh - Merge shapefiles\n- ...\n\n## Examples \n\n### Warping multiple datasets to common grid, computing difference, writing out\n```\nfrom pygeotools.lib import iolib, warplib, malib\nfn1 = 'raster1.tif'\nfn2 = 'raster2.tif'\nds_list = warplib.memwarp_multi_fn([fn1, fn2], res='max', extent='intersection', t_srs='first', r='cubic')\nr1 = iolib.ds_getma(ds_list[0])\nr2 = iolib.ds_getma(ds_list[1])\nrdiff = r1 - r2\nmalib.print_stats(rdiff)\nout_fn = 'raster_diff.tif'\niolib.writeGTiff(rdiff, out_fn, ds_list[0])\n```\nor, from the command line... \n\nWarp all to match raster1.tif projection with common intersection and largest pixel size:\n\n`warptool.py -tr max -te intersection -t_srs first raster1.tif raster2.tif raster3.tif`\n\nCreate version of raster1.tif that matches resolution, extent, and projection of raster2.tif:\n\n`warptool.py -tr raster2.tif -te raster2.tif -t_srs raster2.tif raster1.tif`\n\nReproject and clip to user-defined extent, preserving original resolution of each input raster:\n\n`warptool.py -tr source -te '439090 5285360 458630 5306450' -t_srs EPSG:32610 raster1.tif raster2.tif`\n\n### Creating a time series \"stack\" object:\n```\nfrom pygeotools.lib import malib\nfn_list = ['20080101_dem.tif', '20090101_dem.tif', '20100101_dem.tif']\ns = malib.DEMStack(fn_list, res='min', extent='union')\n#Stack standard deviation\ns.stack_std\n#Stack linear trend\ns.stack_trend\n```\nor, from the command line...\n\n`make_stack.py -tr 'min' -te 'union' 20*.tif`\n\n## Documentation\n\nhttp://pygeotools.readthedocs.io\n\n## Installation\n\nInstall the latest release from PyPI:\n\n pip install pygeotools \n\n**Note**: by default, this will deploy executable scripts in /usr/local/bin\n\n### Building from source\n\nClone the repository and install:\n\n git clone https://github.com/dshean/pygeotools.git\n pip install -e pygeotools\n\nThe -e flag (\"editable mode\", setuptools \"develop mode\") will allow you to modify source code and immediately see changes.\n\n### Core requirements \n- [GDAL/OGR](http://www.gdal.org/)\n- [NumPy](http://www.numpy.org/)\n- [SciPy](https://www.scipy.org/)\n\n### Optional requirements (needed for some functionality) \n- [matplotlib](http://matplotlib.org/)\n- [NASA Ames Stereo Pipeline (ASP)](https://ti.arc.nasa.gov/tech/asr/intelligent-robotics/ngt/stereo/)\n\n## Disclaimer \n\nThis originated as a personal repo that I am slowly cleaning up and distributing. There are some useful things that work very well, other things that were hastily written for a one-off task several years ago, and some confusing things that were never finished. \n\nContributions, bug reports, and general feedback are all welcome. My time is limited, I have some bad habits, and I could really use some help. Thanks in advance.\n\nThis was all originally developed for Python 2.X, but should now also work with Python 3.X thanks to [@dlilien](https://github.com/dlilien)\n\nSome of this functionality now exists in the excellent, mature, well-supported [rasterio](https://github.com/mapbox/rasterio). Eventually, I will integrate rasterio API calls where appropriate.\n\n## License\n\nThis project is licensed under the terms of the MIT License.\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/dshean/pygeotools", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pygeotools", "package_url": "https://pypi.org/project/pygeotools/", "platform": "", "project_url": "https://pypi.org/project/pygeotools/", "project_urls": { "Homepage": "https://github.com/dshean/pygeotools" }, "release_url": "https://pypi.org/project/pygeotools/0.6.0/", "requires_dist": null, "requires_python": "", "summary": "Libraries and command-line utilities for geospatial data processing/analysis", "version": "0.6.0" }, "last_serial": 4808073, "releases": { "0.1.1": [ { "comment_text": "", "digests": { "md5": "562f85d40932562863fae7c12ea442ef", "sha256": "c15cbf1dbd26645bf9db0a6f6fb93f7735d0e9d981ae5c8b7643fd01e9249012" }, "downloads": -1, "filename": "pygeotools-0.1.1.tar.gz", "has_sig": false, "md5_digest": "562f85d40932562863fae7c12ea442ef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58332, "upload_time": "2016-11-08T03:51:27", "url": "https://files.pythonhosted.org/packages/c3/05/b6c32851f3b14d4772db9a9051a025e8599f5db3f2477245f914d6e39415/pygeotools-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "ab2fee11382d2b3de22ba1282081a461", "sha256": "a28fd5fe230534d977a57e0a293acb5721034aa358f70545ea2760bc60bfeb5b" }, "downloads": -1, "filename": "pygeotools-0.1.2.tar.gz", "has_sig": false, "md5_digest": "ab2fee11382d2b3de22ba1282081a461", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56871, "upload_time": "2016-11-08T04:26:29", "url": "https://files.pythonhosted.org/packages/ef/5f/00a15697c000328a8029a7b42b6e25efc92892b359694d8e44463c0a0433/pygeotools-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "462c3be0bbe544fcee3a9888ea6f69e7", "sha256": "abecd966c07638b1e8aacea711165c277acf761e462037d7401ba26b228ce3d9" }, "downloads": -1, "filename": "pygeotools-0.1.3.tar.gz", "has_sig": false, "md5_digest": "462c3be0bbe544fcee3a9888ea6f69e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 56854, "upload_time": "2016-11-10T04:46:34", "url": "https://files.pythonhosted.org/packages/78/2f/01e1ea03f0bb78b67d04a3d9b5717cce25787c36f1c63b4a6d9cf8f8d0ab/pygeotools-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "68571b89a30fe6886d89fc3cb0a7fe5d", "sha256": "1d85b13944da426a9f3c1dae6b55b6889201a049a61ff371e393fd83be4cbe6b" }, "downloads": -1, "filename": "pygeotools-0.1.4.tar.gz", "has_sig": false, "md5_digest": "68571b89a30fe6886d89fc3cb0a7fe5d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58377, "upload_time": "2016-11-14T05:20:57", "url": "https://files.pythonhosted.org/packages/db/3d/fe601e8c6d097589d1490a88415562b60e62a076a985e1aad60487cd4f91/pygeotools-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "169187b455d27f2c2463830c3130c067", "sha256": "00459c43b7bab8967bcd70d43dd4fbe0d8a803b39e1bc448c2c10955f3696915" }, "downloads": -1, "filename": "pygeotools-0.1.5.tar.gz", "has_sig": false, "md5_digest": "169187b455d27f2c2463830c3130c067", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60452, "upload_time": "2016-12-02T19:37:10", "url": "https://files.pythonhosted.org/packages/5e/dd/ef28fa4a04b50a9f9b49b0dd43805e4cf4dc96448778cf2bc04d76e0c036/pygeotools-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "cabbf5bb24d6acee173805010633f0f3", "sha256": "02fea5ab512b6a7e77650931f8a1b99b16b0f5cd0b9a6a3f677b6ac49fe181d7" }, "downloads": -1, "filename": "pygeotools-0.1.6.tar.gz", "has_sig": false, "md5_digest": "cabbf5bb24d6acee173805010633f0f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61008, "upload_time": "2017-01-05T04:51:37", "url": "https://files.pythonhosted.org/packages/72/70/da4ecb05292e04a05aac8ca7437a2a2bb507922672b86e7159fc515d85f6/pygeotools-0.1.6.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "724e3acc5a856acf702abb2bfb0855ab", "sha256": "05ca49617befa9e4af0b3439a31c01cba2665315d93564b36f6ff71b54a9b36d" }, "downloads": -1, "filename": "pygeotools-0.2.0.tar.gz", "has_sig": false, "md5_digest": "724e3acc5a856acf702abb2bfb0855ab", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 66051, "upload_time": "2017-01-10T21:59:54", "url": "https://files.pythonhosted.org/packages/2d/75/7e6ec4fbbaad5762013749d8e2200488a57e4b15801ffa1873cb0b2ab973/pygeotools-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "981b231821eea80fab82b59fc2f7623d", "sha256": "1484c27f8378f67cbd03e8850b63de3be43e376414097d0efb3b978ad1225d43" }, "downloads": -1, "filename": "pygeotools-0.3.0.tar.gz", "has_sig": false, "md5_digest": "981b231821eea80fab82b59fc2f7623d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68215, "upload_time": "2017-06-11T19:44:16", "url": "https://files.pythonhosted.org/packages/4f/8b/a91a0d96d895524dae04b5957fd303fce1a843afeee1c1fe561a20225ae1/pygeotools-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "484170d92c5fdc4f8ac85c0f0c6a96b7", "sha256": "802e45df33499acf66af9f632330c3c11c8dec15d1cea26b6d2f5eaa3aee8842" }, "downloads": -1, "filename": "pygeotools-0.4.0.tar.gz", "has_sig": false, "md5_digest": "484170d92c5fdc4f8ac85c0f0c6a96b7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70368, "upload_time": "2017-09-11T05:59:57", "url": "https://files.pythonhosted.org/packages/0c/d0/ce293b42b91ce133717c3ec5d77b26a4bfce59ee9d4e5f1274ee53a49070/pygeotools-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "b1defa7cb2737cd05768ec6f9070156c", "sha256": "bdcc34415ec700e43265aa8d4863ff3cccdef38fa292ce8f700e376ae9261617" }, "downloads": -1, "filename": "pygeotools-0.5.0.tar.gz", "has_sig": false, "md5_digest": "b1defa7cb2737cd05768ec6f9070156c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 76053, "upload_time": "2018-08-13T18:49:10", "url": "https://files.pythonhosted.org/packages/f8/b0/8922fdc410b1085b8f6759c5e0345391a88d98a037b71bf92a02f870e8db/pygeotools-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "77ca8c3c590cf9802d522af31940b551", "sha256": "089216cde083d34d54f67a997956bb5d1e470257f3c96d2ff9b70ef5ae63f298" }, "downloads": -1, "filename": "pygeotools-0.6.0.tar.gz", "has_sig": false, "md5_digest": "77ca8c3c590cf9802d522af31940b551", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80208, "upload_time": "2019-02-11T21:47:29", "url": "https://files.pythonhosted.org/packages/38/17/cf124d91fc7375cca0d2f1c11ac6c1604c09c5ce43ee4ee117d9abf933db/pygeotools-0.6.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "77ca8c3c590cf9802d522af31940b551", "sha256": "089216cde083d34d54f67a997956bb5d1e470257f3c96d2ff9b70ef5ae63f298" }, "downloads": -1, "filename": "pygeotools-0.6.0.tar.gz", "has_sig": false, "md5_digest": "77ca8c3c590cf9802d522af31940b551", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 80208, "upload_time": "2019-02-11T21:47:29", "url": "https://files.pythonhosted.org/packages/38/17/cf124d91fc7375cca0d2f1c11ac6c1604c09c5ce43ee4ee117d9abf933db/pygeotools-0.6.0.tar.gz" } ] }