การประยุกต์ใช้การดำเนินการเชิงพื้นที่แบบกำหนดเอง

การทำงานกับข้อมูลเชิงพื้นที่ใน Python

Joris Van den Bossche

Open source software developer and teacher, GeoPandas maintainer

การทำงานกับข้อมูลเชิงพื้นที่ใน Python

ความยาวรวมของแม่น้ำภายในรัศมี 50 กม. จากแต่ละเมือง?

สำหรับจุดเดียว (cairo):

area = cairo.buffer(50000)

rivers_within_area = rivers.intersection(area)
print(rivers_within_area.length.sum() / 1000)
186.397219642
การทำงานกับข้อมูลเชิงพื้นที่ใน Python

เมธอด apply()

Series.apply(): เรียกฟังก์ชันกับแต่ละค่าใน Series

Series.apply(function, **kwargs)

  • function: ฟังก์ชันที่ถูกเรียกกับแต่ละค่า โดยค่านั้นจะถูกส่งเป็นอาร์กิวเมนต์แรก
  • **kwargs: อาร์กิวเมนต์เพิ่มเติมที่ส่งให้ฟังก์ชัน

สำหรับ GeoSeries ฟังก์ชันจะถูกเรียกในรูปแบบ function(geom, **kwargs) สำหรับแต่ละ geom ใน GeoSeries

การทำงานกับข้อมูลเชิงพื้นที่ใน Python

การประยุกต์ใช้การดำเนินการเชิงพื้นที่แบบกำหนดเอง

ฟังก์ชันที่จะใช้:

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

เรียกฟังก์ชันกับรูปทรงเรขาคณิตเดียว:

river_length(cairo, rivers=rivers)
186.3972196423455

ประยุกต์ใช้กับทุกเมือง:

cities.geometry.apply(river_length, rivers=rivers)
การทำงานกับข้อมูลเชิงพื้นที่ใน Python

การประยุกต์ใช้การดำเนินการเชิงพื้นที่แบบกำหนดเอง

ประยุกต์ใช้กับทุกเมือง:

cities.geometry.apply(river_length, rivers=rivers)
0        0.000000
1        0.000000
2      106.072198
          ...    
การทำงานกับข้อมูลเชิงพื้นที่ใน Python

การประยุกต์ใช้การดำเนินการเชิงพื้นที่แบบกำหนดเอง

ประยุกต์ใช้กับทุกเมืองและกำหนดผลลัพธ์ไปยังคอลัมน์ใหม่:

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
..            ...                            ...           ...
การทำงานกับข้อมูลเชิงพื้นที่ใน Python

มาฝึกกันเถอะ!

การทำงานกับข้อมูลเชิงพื้นที่ใน Python

Preparing Video For Download...