Áp dụng phép toán không gian tùy chỉnh

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

Làm việc với Dữ liệu Không gian địa lý trong Python

Tổng chiều dài sông trong 50 km quanh mỗi thành phố?

Với một điểm (cairo):

area = cairo.buffer(50000)

rivers_within_area = rivers.intersection(area)
print(rivers_within_area.length.sum() / 1000)
186.397219642
Làm việc với Dữ liệu Không gian địa lý trong Python

Phương thức apply()

Series.apply(): gọi hàm trên từng giá trị của Series

Series.apply(function, **kwargs)

  • function: hàm được gọi với mỗi giá trị; giá trị truyền làm đối số đầu tiên
  • **kwargs: đối số bổ sung truyền vào hàm

Với GeoSeries, hàm được gọi như function(geom, **kwargs) cho từng geom trong GeoSeries

Làm việc với Dữ liệu Không gian địa lý trong Python

Áp dụng phép toán không gian tùy chỉnh

Hàm cần áp dụng:

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

Gọi hàm trên một hình học đơn lẻ:

river_length(cairo, rivers=rivers)
186.3972196423455

Áp dụng cho tất cả thành phố:

cities.geometry.apply(river_length, rivers=rivers)
Làm việc với Dữ liệu Không gian địa lý trong Python

Áp dụng phép toán không gian tùy chỉnh

Áp dụng cho tất cả thành phố:

cities.geometry.apply(river_length, rivers=rivers)
0        0.000000
1        0.000000
2      106.072198
          ...    
Làm việc với Dữ liệu Không gian địa lý trong Python

Áp dụng phép toán không gian tùy chỉnh

Áp dụng cho tất cả thành phố và gán vào cột mới:

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
..            ...                            ...           ...
Làm việc với Dữ liệu Không gian địa lý trong Python

Ayo berlatih!

Làm việc với Dữ liệu Không gian địa lý trong Python

Preparing Video For Download...