Raster verilerle çalışmak

Python ile Coğrafi Verilerle Çalışma

Joris Van den Bossche

Open source software developer and teacher, GeoPandas maintainer

Değerler ızgarası görseli

Görsel kaynağı: QGIS belgeleri

Python ile Coğrafi Verilerle Çalışma

Raster veriler

Yağmur olasılığı haritası

Python ile Coğrafi Verilerle Çalışma

Çok bantlı raster veriler

Python ile Coğrafi Verilerle Çalışma

rasterio paketi

import rasterio
  • GDAL için "Pythonic" bağlar
  • Raster dosyaları okuma ve yazma
  • İşleme araçları (maskleme, yeniden projeksiyon, yeniden örnekleme, ..)

https://rasterio.readthedocs.io/en/latest/

Python ile Coğrafi Verilerle Çalışma

Raster dosyası açma

import rasterio

src = rasterio.open("DEM_world.tif")

Üstveri:

src.count
1
src.width, src.height
(4320, 2160)
Python ile Coğrafi Verilerle Çalışma

Raster veri = numpy dizisi

array = src.read()

Standart numpy dizisi:

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)
Python ile Coğrafi Verilerle Çalışma

Raster veri setini çizmek

rasterio.plot.show() yöntemiyle:

import rasterio.plot

rasterio.plot.show(src, cmap='terrain')

Python ile Coğrafi Verilerle Çalışma

Vektör veriye göre bilgi çıkarma

rasterstats: Vektör geometrilerine dayalı coğrafi raster veri özet istatistikleri (https://github.com/perrygeo/python-rasterstats)

Python ile Coğrafi Verilerle Çalışma

rasterstats ile raster değerleri çıkarma

  • Nokta vektörler için:

    rasterstats.point_query(geometries, "path/to/raster", 
                            interpolation='nearest'|'bilinear')
    
  • Poligon vektörler için:

    rasterstats.zonal_stats(geometries, "path/to/raster",
                            stats=['min', 'mean', 'max'])
    
Python ile Coğrafi Verilerle Çalışma

rasterstats ile raster değerleri çıkarma

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 ile Coğrafi Verilerle Çalışma

Hadi pratik yapalım!

Python ile Coğrafi Verilerle Çalışma

Preparing Video For Download...