https://github.com/jericks/geometrycommands
Commandline application for manipulating geometry.
https://github.com/jericks/geometrycommands
cli geometry java jts
Last synced: 6 months ago
JSON representation
Commandline application for manipulating geometry.
- Host: GitHub
- URL: https://github.com/jericks/geometrycommands
- Owner: jericks
- License: mit
- Created: 2012-01-05T02:43:22.000Z (over 14 years ago)
- Default Branch: master
- Last Pushed: 2023-11-18T19:12:43.000Z (over 2 years ago)
- Last Synced: 2025-04-03T04:34:21.690Z (about 1 year ago)
- Topics: cli, geometry, java, jts
- Language: Java
- Homepage: http://jericks.github.io/geometrycommands/index.html
- Size: 10 MB
- Stars: 24
- Watchers: 2
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.rst
- License: LICENSE
Awesome Lists containing this project
- awesome-starred - jericks/geometrycommands - Commandline application for manipulating geometry. (cli)
README
.. image:: https://github.com/jericks/geometrycommands/workflows/Maven%20Build/badge.svg
:target: https://github.com/jericks/geometrycommands/actions
Geometry command line library.
==============================
Geometry commands is a command line library for processing geometry that follows the unix philosophy. Each command does one thing well (buffer, centroid, envelope) by reading in a geometry, processing the geometry, and writing the geometry out as WKT. Individual commands can be connected with unix pipes. For more information please visit the `web site `_.
Libraries
---------
JTS:
https://locationtech.github.io/jts/
Proj4j:
http://trac.osgeo.org/proj4j/
Args4J:
http://args4j.kohsuke.org/
Examples:
---------
Geometry input with -g argument::
>>> geom buffer -g "POINT (10 10)" -d 2
Geometry input using standard input stream::
>>> echo "POINT (10 10)" | geom buffer -d 20
Piping results of one geometry command to another::
>>> geom buffer -g "POINT (10 10)" -d 2 | geom envelope
Determine if one geometry contains another::
>>> echo "POINT (0 0)" | geom buffer -d 10 | geom contains -o "POINT (5 5)"
true
>>> echo "POINT (0 0)" | geom buffer -d 10 | geom contains -o "POINT (25 25)"
false
Buffer a point, get coordinates, draw coordinates to image, and open the image::
>>> echo "POINT (10 10)" | geom buffer -d 5 | geom coordinates | geom draw && open image.png
List available geometry commands::
>>> geom list
list
buffer
centroid
contains
convexHull
draw
difference
envelope
intersection
Getting Help
------------
Each command contains a --help option::
>>> geom buffer --help
geom buffer: Buffer a geometry by a distance.
--help : Print help message
-c (--endCapStyle) VAL : The end cap style (round, flat/butt, square)
-d (--distance) N : The buffer distance
-g (--geometry) VAL : The input geometry
-q (--quadrantSegments) N : The number of quadrant segments
-s (--singleSided) : The flag for whether the buffer should be single sided
There is a man page for each subcommand::
>>> man geom-buffer
geom-buffer(1) geom-buffer(1)
NAME
geom buffer
DESCRIPTION
Buffer a geometry by a distance.
USAGE
geom buffer -g "POINT (1 1)" -d 10
Finally, there is a bash completion script which makes using geom with bash much easier.
Install it in your .bash_profile::
source /Users/you/geom/shell/geom_bash_comp
Build
-----
Geometry Commands depends on the Java Topology Suite (JTS) and Proj4j and uses Maven as a build tool.::
git checkout https://github.com/jericks/geometrycommands.git
cd /geometrycommands
mvn clean install
Build Native App
----------------
You can build a native app using Graalvm for MacOS or Linux. Download `Graalvm `_ and export a GRAALVM_HOME variable::
export GRAALVM_HOME=/Users/you/Applications/graalvm-ce-21.3.0/Contents/Home
Then you can run::
./mvnw clean install -DskipTests -Pnative
This will create a native geom executable.
Presentations
-------------
`geometry commands `_
License
-------
Geometry Commands is open source and licensed under the MIT License.