Bekerja dengan data raster

Bekerja dengan Data Geospasial di Python

Joris Van den Bossche

Open source software developer and teacher, GeoPandas maintainer

Ilustrasi kisi nilai

Sumber gambar: dokumentasi QGIS

Bekerja dengan Data Geospasial di Python

Data raster

Peta peluang hujan

Bekerja dengan Data Geospasial di Python

Data raster multi-band

Bekerja dengan Data Geospasial di Python

Paket rasterio

import rasterio
  • Binding "Pythonic" untuk GDAL
  • Membaca dan menulis file raster
  • Alat pemrosesan (masking, reproyeksi, resampling, ..)

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

Bekerja dengan Data Geospasial di Python

Membuka file raster

import rasterio

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

Metadata:

src.count
1
src.width, src.height
(4320, 2160)
Bekerja dengan Data Geospasial di Python

Data raster = array numpy

array = src.read()

Array numpy standar:

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)
Bekerja dengan Data Geospasial di Python

Memplot dataset raster

Menggunakan metode rasterio.plot.show():

import rasterio.plot

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

Bekerja dengan Data Geospasial di Python

Ekstraksi info berbasis data vektor

rasterstats: Statistik ringkas untuk dataset raster geospasial berbasis geometri vektor (https://github.com/perrygeo/python-rasterstats)

Bekerja dengan Data Geospasial di Python

Ekstrak nilai raster dengan rasterstats

  • Untuk vektor titik:

    rasterstats.point_query(geometries, "path/to/raster", 
                            interpolation='nearest'|'bilinear')
    
  • Untuk vektor poligon:

    rasterstats.zonal_stats(geometries, "path/to/raster",
                            stats=['min', 'mean', 'max'])
    
Bekerja dengan Data Geospasial di Python

Ekstrak nilai raster dengan rasterstats

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
..           ...          ...                          ...             ...
Bekerja dengan Data Geospasial di Python

Ayo berlatih!

Bekerja dengan Data Geospasial di Python

Preparing Video For Download...