An open API service indexing awesome lists of open source software.

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.

Awesome Lists containing this project

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.