fio_planet: Fiona CLI plugins from Planet Labs.
Project description
fio-planet
A package of Fiona CLI plugins from Planet Labs.
These CLI commands are for creating Unix pipelines which manipulate streams of GeoJSON features. Such pipelines provide a subset of the functionality of more complicated tools such as GeoPandas, PostGIS, or QGIS, and are intended for use with streams of hundreds of features, where the overhead of JSON serialization between pieces of a pipeline is tolerable.
Installation
python -m pip install --user --pre fio-planet
Usage
fio-planet adds filter
, map
, and reduce
commands to Fiona's fio
program. These commands afford some of the capabilities of spatial SQL, but act
on features of a GeoJSON feature sequence instead of rows of a spatial RDBMS
table. fio-filter decimates a seqence of features, fio-map multiplies and
transforms features, and fio-reduce turns a sequence of many features into a
sequence of exactly one. In combination, many transformations are possible.
Expressions take the form of parenthesized lists which may contain other expressions. The first item in a list is the name of a function or method, or an expression that evaluates to a function. The second item is the function's first argument or the object to which the method is bound. The remaining list items are the positional and keyword arguments for the named function or method. The list of functions and callables available in an expression includes:
- Python operators such as
+
,/
, and<=
- Python builtins such as
dict
,list
, andmap
- All public functions from itertools, e.g.
islice
, andrepeat
- All functions importable from Shapely 2.0, e.g.
Point
, andunary_union
- All methods of Shapely geometry classes
- Functions specific to fio-planet
Here's an expression that evaluates to a Shapely Point instance.
(Point 0 0)
Point
is a callable instance constructor and the pair of 0
values are
positional arguments. Note that the outermost parentheses of an expression are
optional.
Here's an expression that evaluates to a Polygon, using buffer
.
buffer (Point 0 0) :distance 1.0
The inner expression (Point 0 0)
evaluates to a Shapely Point instance,
buffer
evaluates to shapely.buffer()
, and :distance 1.0
assigns a value
of 1.0 to that method's distance
keyword argument.
In a fio-planet expression, all coordinates and geometry objects are in the
OGC:CRS84
reference system, like GeoJSON. However, function arguments related
to length or area, such as buffer's distance argument, are understood to have
units of meters.
fio-filter and fio-map evaluate expressions in the context of a GeoJSON feature
and its geometry attribute. These are named f
and g
. For example, here is
an expression that tests whether the input feature is within 50 meters of the
given point.
<= (distance g (Point -105.0 39.753056)) 50.0
fio-reduce evaluates expressions in the context of the sequence of all input
geometries, which is named c
. For example, this expression dissolves input
geometries using Shapely's unary_union
.
unary_union c
Support
Documentation is hosted at Read the Docs: https://fio-planet.readthedocs.io/en/latest/.
For usage help, please use the project discussion forum or email developers@planet.com.
If you think you've found a bug, please use the project issue tracker.
Roadmap
Version 1.0 adds filter
, map
, and reduce
to Fiona's fio
CLI.
Note that there are no conditional forms in 1.0's expressions. The project will
likely add a cond
after 1.0.
Contributing
Before 1.0 the project is looking for feedback on the existing commands more than it is looking for new commands.
The project uses black, flake8, mypy, and tox for static checks and testing.
black src tests && flake8 && mypy && tox
Authors and acknowledgment
Contributors to this project are
- Sean Gillies sean.gillies@planet.com
License
Apache License, Version 2.0.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file fio_planet-1.0rc1.tar.gz
.
File metadata
- Download URL: fio_planet-1.0rc1.tar.gz
- Upload date:
- Size: 57.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ab3bae5cafbe1c3a971d3c00a607c1d264eee8e85c4717e5787fe7071031898 |
|
MD5 | 60daffac3ae255894224f44a7feafcde |
|
BLAKE2b-256 | 3fa47220e4514abf4b09161c4954da4d8871c0f95e4ccf618c8f74e784485524 |
File details
Details for the file fio_planet-1.0rc1-py3-none-any.whl
.
File metadata
- Download URL: fio_planet-1.0rc1-py3-none-any.whl
- Upload date:
- Size: 16.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.8.10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3d08647d5143fbe3890c4ca5f8cd8359691877dd5ab8fc726f0a6995f5ff0f9a |
|
MD5 | 9cef043bd97832099d92434c09fb46e3 |
|
BLAKE2b-256 | 52577b66693e7cc5658f972c28890c00a804577a8a185f7567d0a093df3031c6 |