Spatial operations extend fiona and rasterio
Project description
Geo-Sardine :fish:
Spatial operations extend fiona and rasterio. Collection of spatial operation which i occasionally use written in python:
- Interpolation with IDW (Inverse Distance Weighting) Shepard
- Drape vector to raster
- Spatial join between two vector
- Raster wrapper, for better experience. ie: math operation between two raster, resize and resample
:blue_book: documentation: https://sahitono.github.io/geosardine
Setup
install with pip
pip install geosardine
or anaconda
conda install -c sahitono geosardine
How to use it
Drape and spatial join
import geosardine as dine
import rasterio
import fiona
with rasterio.open("/home/user/data.tif") as raster, fiona.open("/home/user/data.shp") as vector:
draped = dine.drape_geojson(vector, raster)
joined = dine.spatial_join(vector, raster)
IDW Interpolation
import numpy as np
import geosardine as dine
xy = np.array([
[106.8358, -6.585 ],
[106.6039, -6.7226],
[106.7589, -6.4053],
[106.9674, -6.7092],
[106.7956, -6.5988]
])
values = np.array([132., 127., 37., 90., 182.])
"""
if epsg not provided, it will assume that coordinate is in wgs84 geographic
Find your epsg here https://epsg.io/
"""
interpolated = dine.interpolate.idw(xy, values, spatial_res=(0.01,0.01), epsg=4326)
# Save interpolation result to tiff
interpolated.save('idw.tif')
# shapefile or geojson can be used too
interp_file = dine.interpolate.idw("points.shp", spatial_res=(0.01,0.01), column_name="value")
interp_file.save("idw.tif")
# The result array can be accessed like this
print(interpolated.array)
"""
[[ 88.63769859 86.24219616 83.60463194 ... 101.98185127 103.37001289
104.54621272]
[ 90.12053232 87.79279317 85.22030848 ... 103.77118852 105.01425289
106.05302554]
[ 91.82987695 89.60855271 87.14722258 ... 105.70090081 106.76928067
107.64635337]
...
[127.21214817 127.33208302 127.53878268 ... 97.80436475 94.96247196
93.12113458]
[127.11315081 127.18465002 127.33444124 ... 95.86455668 93.19212577
91.51135399]
[127.0435062 127.0827023 127.19214624 ... 94.80175756 92.30685734
90.75707134]]
"""
Raster Wrapper
Geosardine include wrapper for raster data. The benefit are:
-
math operation (addition, subtraction, division, multiplication) between rasters of different size, resolution and reference system. The data type result is equal to the first raster data type
for example:
raster1 = float32 and raster2 = int32 raster3 = raster1 - raster2 raster3 will be float32
-
resample with opencv
-
resize with opencv
-
split into tiled
from geosardine import Raster
"""
minimum parameter needed to create raster are
1. 2D numpy array, example: np.ones(18, dtype=np.float32).reshape(3, 3, 2)
2. spatial resolution, example: 0.4 or ( 0.4, 0.4)
3. left coordinate / x minimum
4. bottom coordinate / y minimum
"""
raster1 = Raster(np.ones(18, dtype=np.float32).reshape(3, 3, 2), resolution=0.4, x_min=120, y_max=0.7)
## resample
resampled = raster.resample((0.2,0.2))
## resize
resized = raster.resize(height=16, width=16)
## math operation between raster
raster_2 = raster + resampled
raster_2 = raster - resampled
raster_2 = raster * resampled
raster_2 = raster / resampled
## math operation raster to number
raster_3 = raster + 2
raster_3 = raster - 2
raster_3 = raster * 2
raster_3 = raster / 2
### plot it using raster.array
import matplotlib.pyplot as plt
plt.imshow(raster_3)
plt.show()
Geosardine CLI
You can use it through terminal or command prompt by calling dine
$ dine --help
Usage: dine [OPTIONS] COMMAND [ARGS]...
GeoSardine CLI
Options:
--help Show this message and exit.
Commands:
drape Drape vector to raster to obtain height value
info Get supported format
join-spatial Join attribute by location
idw Create raster with Inverse Distance Weighting interpolation
License
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 geosardine-0.13.1.tar.gz
.
File metadata
- Download URL: geosardine-0.13.1.tar.gz
- Upload date:
- Size: 24.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.8.6 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a3737c9dad7d52b41f6cebb18d6c085c5a0ad14a9dc2c23f977c42be305db1b5 |
|
MD5 | d3c5b85d392904b36f91a9027b4ded31 |
|
BLAKE2b-256 | 4e98d5077a17f1e13b2a37506cba6b661f02fd11774c71cf8d430c4e1825b03d |
File details
Details for the file geosardine-0.13.1-py3-none-any.whl
.
File metadata
- Download URL: geosardine-0.13.1-py3-none-any.whl
- Upload date:
- Size: 26.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.6 CPython/3.8.6 Windows/10
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 72c6335f951165a7e950f924281f74d37fa15e67309aea8a6fe326b4b3eac8bb |
|
MD5 | 481bed83c335ac93e9a35c909af7a367 |
|
BLAKE2b-256 | 8930828ab02f862aa93a5d11879a41c9b6fa13df4da12ec2c93f3a04e51d7f74 |