| Crates.io | geoq |
| lib.rs | geoq |
| version | 0.0.25 |
| created_at | 2018-07-10 04:51:36.989622+00 |
| updated_at | 2023-01-11 01:36:54.154196+00 |
| description | Geospatial utility CLI |
| homepage | https://github.com/worace/geoq |
| repository | https://github.com/worace/geoq |
| max_upload_size | |
| id | 73571 |
| size | 688,078 |
Geoq is a command-line tool for working with geospatial data.
It combines common GIS serialization formats with utilities for manipulating and visualizing data on a map.
For example:
# Print the geometry and the set of level 2 geohashes which covers the given geometry
$ echo '{"type":"Polygon","coordinates":[[[-34,38],[-37,32],[-23,33],[-34,38]]]}' | geoq gh covering 2 -o
{"type":"Polygon","coordinates":[[[30,10],[40,40],[20,40],[10,20],[30,10]]]}
eq
en
em
ej
# Feed that output into a map on geojson.io
$ echo '{"type":"Polygon","coordinates":[[[-34,38],[-37,32],[-23,33],[-34,38]]]}' | geoq gh covering 2 -o | geoq map
See the Manual for more examples and available commands.
Geoq is installed via cargo, the Rust package manager, and requires nightly rust.
If you have all this set up, you can just run cargo install geoq.
To install Rust and the Cargo toolchain:
curl https://sh.rustup.rs -sSf | sh
rustup toolchain install nightly
rustup default nightly
cargo install geoq
You'll also need to add Cargo's bin directory to your path:
# e.g. in your ~/.bash_profile or other shell profile
export PATH="$HOME/.cargo/bin:$PATH"
To pull and install a newer version from crates.io, run:
cargo install geoq --force
Geoq will detect the following GIS input formats automatically:
34.0,-118.09q5POINT (-118.0, 34.0){"type": "Point", "coordinates": [-118.0, 34.0]}8c274996e1683ffGeoq processes text inputs on a per-line basis, and it expects inputs not to stretch across multiple lines.
This sometimes causes problems, especially with GeoJSON, because many JSON processing tools like to output pretty-printed JSON in a multi-line format.
One way to fix this problem with pretty-printed GeoJSON is to use the jq tool:
echo '{
"type": "Point",
"coordinates": [30, 10]
}
' | jq -c . | geoq map
See the built-in command help using geoq --help or geoq <subcommand> --help for more detailed information on these:
bbox - Give bounding boxes for geometries, or for a stream of geometries collectivelycentroid - Cet the centroid of a geometryfilter - Spatial predicate filtering
intersects - Select features intersecting a given query geometrycontains - Select features contained by a given query geometrygh - Geohash subcommands
children - Get children of a geohashcovering - Output geohashes that "cover" a geometryneighbors - Get neighbors of a Geohashpoint - Output base 32 Geohash for a given Lat,Longj - GeoJSON subcommands
f - Output geometry as GeoJSON featuregeom - Output geometry as GeoJSON geometryfc - Collect all input geometries into a GeoJSON Feature Collectionjson - JSON -> GeoJSON coercion
munge - Attempt to convert arbitrary JSON to a GeoJSON Feature.map - Visualization with geojson.iomeasure - Measurement subcommands
distance - Measure distances between featurescoord-count - Give the number of vertices in geometriesread - Debugging / format validationshp - Convert shapefiles to GeoJSONsimplify - Simplify geometries, either with fixed threshold or iteratively toward target coord-countwhereami - Output IP geolocation-based current lat/lon as GeoJSONwkt - Output geometries as WKTfgb - Working with flatgeobuf
write - write flatgeobuf files from GeoJSON lines to STDINread - read flatgeobuf files to GeoJSON with optional bbox filterh3 - Working with H3 spatial grid system
children- Get children for h3 cell(s)covering - Generate set of H3 cells covering a geometry.from-str - Convert h3 hexadecimal string IDs to 64-bit numeric idsgrid-disk - Get disk of given radius around given cellshierarchy - Output all h3 cells for a given point, from res 0 to 15parent - Get parent (or ancestor) for cellspoint - Get H3 cell for a pointresolution - Get resolution for an H3 cellto-str - Convert 64-bit numeric h3 index its hexadecimal string representationSee the Manual for more examples and available commands.
cargo test
cargo publish
git tag release/<VERSION>
git push origin release/<VERSION>