nismod / snail

spatial networks impact assessment library 🐌
https://nismod.github.io/snail/
MIT License
9 stars 1 forks source link

Revise CLI #52

Closed tomalrussell closed 1 year ago

tomalrussell commented 1 year ago

This PR revises the main command-line interface to snail, based on scripted usage across projects:

Split features on a grid defined by its transform, width and height:

snail split --features input.shp --transform 1 0 -180 0 -1 90 --width 360 --height 180 --output split.gpkg

Split features on a grid defined by a GeoTIFF, optionally adding the values from each raster band to each split feature as a new attribute:

snail split --features lines.geojson --raster gridded_data.tif --attribute --output split_lines_with_raster_values.geojson

Split multiple vector feature files along the grids defined by multiple raster files, attributing all raster values:

snail process -fs features.csv -rs rasters.csv

Where at a minimum, each CSV has a column path with the path to each file.

Transform

A note on transform - these six numbers define the transform from i,j cell index (column/row) coordinates in the rectangular grid to x,y geographic coordinates, in the coordinate reference system of the input and output files. They effectively form the first two rows of a 3x3 matrix:

| x |   | a  b  c | | i |
| y | = | d  e  f | | j |
| 1 |   | 0  0  1 | | 1 |

In cases without shear or rotation, a and e define scaling or grid cell size, while c and f define the offset or grid upper-left corner:

| x_scale 0       x_offset |
| 0       y_scale y_offset |
| 0       0       1        |

See rasterio/affine and GDAL Raster Data Model for more documentation.