Arbeta med geospatial data i Python
Joris Van den Bossche
Open source software developer and teacher, GeoPandas maintainer

Bildkälla: QGIS-dokumentation



import rasterio
import rasterio
src = rasterio.open("DEM_world.tif")
Metadata:
src.count
1
src.width, src.height
(4320, 2160)
array = src.read()
Vanlig numpy-array:
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)
Använd metoden rasterio.plot.show():
import rasterio.plot
rasterio.plot.show(src, cmap='terrain')


rasterstats: Sammanfattande statistik för geospatiala rasterdatamängder baserat på vektorgeometrier (https://github.com/perrygeo/python-rasterstats)
För punktvektorer:
rasterstats.point_query(geometries, "path/to/raster",
interpolation='nearest'|'bilinear')
För polygonvektorer:
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
.. ... ... ... ...
Arbeta med geospatial data i Python