Menerapkan operasi spasial kustom

Bekerja dengan Data Geospasial di Python

Joris Van den Bossche

Open source software developer and teacher, GeoPandas maintainer

Bekerja dengan Data Geospasial di Python

Total panjang sungai dalam 50 km dari tiap kota?

Untuk satu titik (cairo):

area = cairo.buffer(50000)

rivers_within_area = rivers.intersection(area)
print(rivers_within_area.length.sum() / 1000)
186.397219642
Bekerja dengan Data Geospasial di Python

Metode apply()

Series.apply(): memanggil fungsi pada tiap nilai Series

Series.apply(function, **kwargs)

  • function: fungsi yang dipanggil untuk tiap nilai; nilai jadi argumen pertama
  • **kwargs: argumen tambahan untuk fungsi

Untuk GeoSeries, fungsi dipanggil sebagai function(geom, **kwargs) untuk tiap geom dalam GeoSeries

Bekerja dengan Data Geospasial di Python

Menerapkan operasi spasial kustom

Fungsi yang diterapkan:

def river_length(geom, rivers):
    area = geom.buffer(50000)
    rivers_within_area = rivers.intersection(area)
    return rivers_within_area.length.sum() / 1000

Panggil fungsi pada satu geometri:

river_length(cairo, rivers=rivers)
186.3972196423455

Menerapkan pada semua kota:

cities.geometry.apply(river_length, rivers=rivers)
Bekerja dengan Data Geospasial di Python

Menerapkan operasi spasial kustom

Menerapkan pada semua kota:

cities.geometry.apply(river_length, rivers=rivers)
0        0.000000
1        0.000000
2      106.072198
          ...    
Bekerja dengan Data Geospasial di Python

Menerapkan operasi spasial kustom

Menerapkan pada semua kota dan menyimpan hasil ke kolom baru:

cities['river_length'] = cities.geometry.apply(river_length, rivers=rivers)
cities.head()
             name                       geometry  river_length
0    Vatican City    POINT (1386304.6 5146502.5)      0.000000
1      San Marino    POINT (1385011.5 5455558.1)      0.000000
2           Vaduz    POINT (1059390.7 5963928.5)    106.072198
..            ...                            ...           ...
Bekerja dengan Data Geospasial di Python

Ayo berlatih!

Bekerja dengan Data Geospasial di Python

Preparing Video For Download...