Praca z danymi geoprzestrzennymi w Pythonie
Joris Van den Bossche
Open source software developer and teacher, GeoPandas maintainer

Źródło obrazu: dokumentacja QGIS



import rasterio
import rasterio
src = rasterio.open("DEM_world.tif")
Metadane:
src.count
1
src.width, src.height
(4320, 2160)
array = src.read()
Standardowa tablica numpy:
array
array([[[-4290, -4290, -4290, ..., -4290, -4290, -4290],
[-4278, -4278, -4278, ..., -4278, -4278, -4278],
[-4269, -4269, -4269, ..., -4269, -4269, -4269],
...,
[ 2804, 2804, 2804, ..., 2804, 2804, 2804],
[ 2804, 2804, 2804, ..., 2804, 2804, 2804],
[ 2804, 2804, 2804, ..., 2804, 2804, 2804]]], dtype=int16)
Metoda rasterio.plot.show():
import rasterio.plot
rasterio.plot.show(src, cmap='terrain')


rasterstats: Statystyki podsumowujące rastrowych danych geoprzestrzennych na podstawie geometrii wektorowych (https://github.com/perrygeo/python-rasterstats)
Dla geometrii punktowych:
rasterstats.point_query(geometries, "path/to/raster",
interpolation='nearest'|'bilinear')
Dla geometrii poligonowych:
rasterstats.zonal_stats(geometries, "path/to/raster",
stats=['min', 'mean', 'max'])
result = rasterstats.zonal_stats(countries.geometry, "DEM_gworld.tif", stats=['mean'])countries['mean_elevation'] = pd.DataFrame(result)countries.sort_values('mean_elevation', ascending=False).head()
name continent geometry mean_elevation
157 Tajikistan Asia POLYGON ((74.98 37.41, ... 3103.231105
85 Kyrgyzstan Asia POLYGON ((80.25 42.34, ... 2867.717142
24 Bhutan Asia POLYGON ((91.69 27.77, ... 2573.559846
119 Nepal Asia POLYGON ((81.11 30.18, ... 2408.907816
6 Antarctica Antarctica (POLYGON ((-59.57 -80.04... 2374.075028
.. ... ... ... ...
Praca z danymi geoprzestrzennymi w Pythonie