Làm việc với Dữ liệu Không gian địa lý trong Python
Joris Van den Bossche
Open source software developer and teacher, GeoPandas maintainer

Nguồn ảnh: Tài liệu QGIS



import rasterio
import rasterio
src = rasterio.open("DEM_world.tif")
Siêu dữ liệu:
src.count
1
src.width, src.height
(4320, 2160)
array = src.read()
Mảng numpy chuẩn:
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)
Dùng phương thức rasterio.plot.show():
import rasterio.plot
rasterio.plot.show(src, cmap='terrain')


rasterstats: Thống kê tóm tắt cho raster địa lý dựa trên hình học vector (https://github.com/perrygeo/python-rasterstats)
Với vector điểm:
rasterstats.point_query(geometries, "path/to/raster",
interpolation='nearest'|'bilinear')
Với vector đa giác:
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
.. ... ... ... ...
Làm việc với Dữ liệu Không gian địa lý trong Python