การทำงานกับข้อมูลเชิงพื้นที่ใน 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: สถิติสรุปของชุดข้อมูล raster เชิงภูมิสารสนเทศโดยอิงตามเรขาคณิตเวกเตอร์ (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