├── .github └── workflows │ └── check-links.yml ├── LICENSE ├── README.dev.md ├── README.md └── cover_image.jpg /.github/workflows/check-links.yml: -------------------------------------------------------------------------------- 1 | name: Check Markdown links 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | schedule: 8 | # every sunday at 03:00 9 | - cron: "0 3 * * 0" 10 | 11 | jobs: 12 | markdown-link-check: 13 | runs-on: ubuntu-latest 14 | steps: 15 | - uses: actions/checkout@v3 16 | - uses: gaurav-nelson/github-action-markdown-link-check@v1 17 | with: 18 | base-branch: 'main' 19 | use-verbose-mode: 'yes' 20 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.dev.md: -------------------------------------------------------------------------------- 1 | # README development 2 | 3 | This repo uses the GitHub Action [markdown-link-check](https://github.com/marketplace/actions/markdown-link-check) for finding dead links. 4 | 5 | It can be run a locally with: (see [markdown-link-check](https://github.com/tcort/markdown-link-check) for details) 6 | 7 | ```shell 8 | docker run -v ${PWD}:/tmp:ro --rm -i ghcr.io/tcort/markdown-link-check:stable /tmp/README.md 9 | ``` 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Geospatial Commandline Tools 2 | 3 | [![Check Markdown links](https://github.com/JakobMiksch/geospatial-cli/actions/workflows/check-links.yml/badge.svg)](https://github.com/JakobMiksch/geospatial-cli/actions/workflows/check-links.yml) 4 | 5 | ![cover image geospatial commandline tools](cover_image.jpg) 6 | 7 | A collection of geospatial programs with commandline interface. The starting point of the list was this [tweet](https://twitter.com/JakobMiksch/status/1358012117924904960) which contains many useful responses. 8 | 9 | ## Generic Vector & Raster 10 | 11 | - [GDAL/OGR](https://gdal.org/) - Powerful tools for conversion and processing of most geospatial formats. 12 | - [QGIS/qgis_process](https://docs.qgis.org/3.16/en/docs/user_manual/processing/standalone.html) - Interface for accessing QGIS processing tools. 13 | - [GRASS](https://grass.osgeo.org/grass-stable/manuals/grass.html) - Execute GRASS GIS algorithms. 14 | - [SAGA GIS](http://www.saga-gis.org/en/index.html) - Execute SAGA GIS algorithms. 15 | - [Whitebox Tools](https://github.com/jblindsay/whitebox-tools) - Execute geospatial algorithms. 16 | 17 | ## Vector 18 | 19 | - [Fiona](https://github.com/Toblerity/Fiona/blob/master/docs/cli.rst) - Process vector data. 20 | - [shp2pgsql / pgsql2shp / shpdump](http://shapelib.maptools.org/shapelib-tools.html) Shapefile related tools. 21 | - [spatialite](https://www.gaia-gis.it/fossil/spatialite-tools/index) - A SQLite bases database for spatial data. 22 | - [topojson](https://github.com/topojson/topojson) - Handling the TopoJSON format. 23 | - [geojsonhint](https://github.com/mapbox/geojsonhint) - Validate GeoJSON files. 24 | - [csv2geojson](https://github.com/mapbox/csv2geojson) - Convert CSV to GeoJSON. 25 | - [d3-geo](https://github.com/d3/d3-geo) - Geographic projections, spherical shapes and spherical trigonometry. 26 | - [d3-geo-projection](https://github.com/d3/d3-geo-projection) - Extended geographic projections for d3-geo. 27 | - [geojson-merge](https://github.com/mapbox/geojson-merge) - Merge multiple GeoJSON files. 28 | - [Mapshaper](https://github.com/mbloch/mapshaper) - Convert between Shapefile, GeoJSON, TopoJSON and CSV. 29 | - [geojsonio](https://github.com/mapbox/geojsonio-cli) - Display GeoJSON files in the browser. 30 | - [wellknown](https://github.com/mapbox/wellknown) - Handle WKT (well known text) geometries. 31 | - [ogr2postgis](https://github.com/mapcentia/ogr2postgis) - Load vector data to PostGIS. 32 | 33 | ## Raster & Remote Sensing 34 | 35 | - [Rasterio](https://rasterio.readthedocs.io/en/latest/cli.html) - Process raster data. 36 | - [libtiff](http://www.libtiff.org/man/tiffsplit.1.html) - TIFF Library and Utilities. 37 | - [Orfeo ToolBox](https://www.orfeo-toolbox.org/) A toolbox for remote sensing. 38 | - [OpenDroneMap](https://github.com/OpenDroneMap/ODM) - Process drone imagery. 39 | - [TauDEM](https://hydrology.usu.edu/taudem/taudem5/index.html) - a suite of Digital Elevation Model (DEM) tools. 40 | - [felicette](https://github.com/plant99/felicette) - Download satellite images. 41 | - [eodag](https://github.com/CS-SI/eodag) - Earth Observation Data Access Gateway. 42 | - [micmac](https://micmac.ensg.eu) - Photogrammetric suite. 43 | - [sat-search](https://github.com/sat-utils/sat-search) - Access SpatioTemporal Asset Catalog (STAC) API. 44 | - [PkTools](http://pktools.nongnu.org/html/index.html) - Utilities for image processing. 45 | - [go-spatial](https://github.com/jblindsay/go-spatial) - Manipulation of geospatial data. 46 | - [stactools](https://github.com/stac-utils/stactools) - Command line utility and Python library for STAC. 47 | - [gdal-exprtk](https://github.com/mmomtchev/gdal-exprtk) - GDAL-based raster calculation with JavaScript and ExprTk expresssions. 48 | - [cogger](https://github.com/airbusgeo/cogger) - GeoTIFF to COG converter. 49 | - [geeup](https://github.com/samapriya/geeup) - Simple tool for Google Earth Engine uploads. 50 | 51 | ## Rendering and Styling 52 | 53 | - [GMT](https://www.generic-mapping-tools.org/) - Display geospatial data. 54 | - [mapnik](https://mapnik.org/) - Mapping Toolkit. 55 | - [GeoStyler](https://geostyler.org/) - Conversion from and to various geospatial style formats. 56 | - [carto](https://github.com/mapbox/carto) - Edit CartCSS styles. 57 | - [t-Rex](https://t-rex.tileserver.ch) - Creation and Serving of vector tiles. 58 | - [tippecanoe](https://github.com/mapbox/tippecanoe) - Build vector tiles. 59 | - [mbgl-renderer](https://github.com/consbio/mbgl-renderer) - Static Renderer for MapboxGL. 60 | - [BareMaps](https://github.com/baremaps/baremaps) - Creation of custom vector tiles. 61 | - [Mapproxy](https://mapproxy.org/) - Proxy for geospatial data. 62 | - [pygeoapi](https://pygeoapi.io/) - A Python server implementation of the OGC API suite of standards. 63 | - [pg_tileserv](https://github.com/CrunchyData/pg_tileserv) - A PostGIS-only tile server in Go. 64 | - [pg_featureserv](https://github.com/CrunchyData/pg_featureserv) - Geospatial Feature Server for PostGIS in Go. 65 | 66 | ## OpenStreetMap 67 | 68 | - [osmium](https://osmcode.org/osmium-tool/) - Powertool for any type of OpenStreetMap data processing. 69 | - [pyosmium](https://docs.osmcode.org/pyosmium/latest/tools.html) - Utilities for updating OSM files. 70 | - [osm2pgsql](https://osm2pgsql.org/) - Load OpenStreetMap data in a PostgreSQL/PostGIS Database. Written in C++. 71 | - [osmprj](https://github.com/travishathaway/osmprj) - Import OSM data to Postgres and create reports. 72 | - [osmtogeojson](https://github.com/tyrasd/osmtogeojson) - Convert OpenStreetMap XML to GeoJSON. 73 | - [Imposm](https://imposm.org/) - Load OpenStreetMap data in a PostgreSQL/PostGIS Database. Written in Go. 74 | - [osmctools](https://gitlab.com/osm-c-tools/osmctools) - Convert, filter and update OpenStreetMap data files. 75 | - [osm-tags-transform](https://github.com/osmcode/osm-tags-transform) - Transform tags in OSM files using Lua code. 76 | - [mapsplit](https://github.com/simonpoole/mapsplit) - Split OSM data in to a portable tiled format. 77 | - [99boundaries](https://github.com/TimMcCauley/nintynine-boundaries) - Generate administrative boundaries from OpenStreetMap. 78 | - [gol](https://github.com/clarisma/gol-tool) - Build an OpenStreetMap database and perform queries. 79 | - [QuackOSM](https://github.com/kraina-ai/quackosm) - Download, filter and transform OSM data into GeoParquet files using DuckDB. 80 | 81 | ## Point Cloud 82 | 83 | - [PDAL](https://pdal.io/) - Point Data Abstraction Library. 84 | - [CloudCompare](https://www.cloudcompare.org/doc/wiki/index.php?title=Command_line_mode) - Tools for processing point clouds. 85 | - [OPALS](https://opals.geo.tuwien.ac.at/html/stable/usr_getting_started.html) - Processing of airborn laser scanning. 86 | - [LAStools](https://github.com/LAStools/LAStools) - Tools for processing point clouds. 87 | 88 | ## Other 89 | 90 | - [PROJ](https://proj.org/index.html) - Converts coordinate reference systems. 91 | - [pyproj](https://pyproj4.github.io/pyproj/stable/cli.html) - Python interface to PROJ. 92 | - [GEOS](https://github.com/libgeos/geos/blob/main/util/geosop/README.md) - Performs geometric operations. 93 | - [pygeometa](https://geopython.github.io/pygeometa/) - Create geospatial metadata. 94 | - [MDAL](https://www.mdal.xyz/) - Mesh Data Abstraction Library. 95 | - [valhalla](https://github.com/valhalla/valhalla) - Routing Engine. 96 | - [PCRaster](https://pcraster.geo.uu.nl/) - Software for environmental modelling. 97 | - [Cesium Terrain Builder](https://github.com/geo-data/cesium-terrain-builder) - Create terrain tiles for use in the Cesium JavaScript library. 98 | - [geodiff](https://github.com/lutraconsulting/geodiff) - Handle differences in geospatial data. 99 | - [GeoGig](http://geogig.org/) - Geospatial version control. 100 | - [Kart](https://kartproject.org) - Geospatial version control. 101 | - [mergin](https://github.com/lutraconsulting/mergin-py-client) - Python client module for access to [Mergin](https://cloudmergin.com) and a command-line tool for access to data stored in Mergin. 102 | - [wetterdienst](https://wetterdienst.readthedocs.io/en/latest/usage/cli.html) - Retrieve weather data from multiple sources. 103 | 104 | ## Links 105 | 106 | - [Command-Line Cartography](https://medium.com/@mbostock/command-line-cartography-part-1-897aa8f8ca2c#06f4) - Blog Post Series of Mike Bostock. 107 | - [Vector Tiles](https://github.com/mapbox/awesome-vector-tiles#cli-utilities) - Section about vector tile related CLI tools. 108 | - [Fiona/Rasterio Cheatsheet](https://github.com/sgillies/frs-cheat-sheet) 109 | - [Talk: Are be going back to Command Line GIS](https://media.ccc.de/v/bucharest-212-are-we-going-back-to-command-line-gis-) 110 | - [Slides: Command-Line Geography](https://nerik.github.io/cli-geography) 111 | -------------------------------------------------------------------------------- /cover_image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JakobMiksch/geospatial-cli/6b0e6383f15fee795d785262e5be0d58817593db/cover_image.jpg --------------------------------------------------------------------------------