การทำงานกับข้อมูลเชิงพื้นที่ใน Python
Joris Van den Bossche
Open source software developer and teacher, GeoPandas maintainer

สำหรับจุดเดียว (cairo):
area = cairo.buffer(50000)rivers_within_area = rivers.intersection(area)print(rivers_within_area.length.sum() / 1000)
186.397219642
Series.apply(): เรียกฟังก์ชันกับแต่ละค่าใน Series
Series.apply(function, **kwargs)
function: ฟังก์ชันที่ถูกเรียกกับแต่ละค่า โดยค่านั้นจะถูกส่งเป็นอาร์กิวเมนต์แรก**kwargs: อาร์กิวเมนต์เพิ่มเติมที่ส่งให้ฟังก์ชันสำหรับ GeoSeries ฟังก์ชันจะถูกเรียกในรูปแบบ function(geom, **kwargs) สำหรับแต่ละ geom ใน GeoSeries
ฟังก์ชันที่จะใช้:
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)
ประยุกต์ใช้กับทุกเมือง:
cities.geometry.apply(river_length, rivers=rivers)
0 0.000000
1 0.000000
2 106.072198
...
ประยุกต์ใช้กับทุกเมืองและกำหนดผลลัพธ์ไปยังคอลัมน์ใหม่:
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