Работа с геопространственными данными в Python
Joris Van den Bossche
Open source software developer and teacher, GeoPandas maintainer

Источник изображения: документация QGIS



import rasterio
import rasterio
src = rasterio.open("DEM_world.tif")
Метаданные:
src.count
1
src.width, src.height
(4320, 2160)
array = src.read()
Стандартный массив 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)
Метод rasterio.plot.show():
import rasterio.plot
rasterio.plot.show(src, cmap='terrain')


rasterstats: сводная статистика растровых геопространственных данных на основе векторных геометрий (https://github.com/perrygeo/python-rasterstats)
Для точечных векторов:
rasterstats.point_query(geometries, "path/to/raster",
interpolation='nearest'|'bilinear')
Для полигональных векторов:
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
.. ... ... ... ...
Работа с геопространственными данными в Python