การใช้ operation แบบกำหนดเองกับแต่ละ geometry
เมื่อรู้วิธีหาอุทยานแห่งชาติที่ใกล้ที่สุดสำหรับจุดเดียวแล้ว คราวนี้มาทำสิ่งเดียวกันกับทุกจุดกัน โดยจะเริ่มจากการเขียนฟังก์ชันที่รับจุดเดียวเป็นอาร์กิวเมนต์และคืนค่าผลลัพธ์ที่ต้องการ จากนั้นจึงนำฟังก์ชันนี้ไปใช้กับทุกจุด
ชุดข้อมูลแหล่งเหมือง (mining_sites) และอุทยานแห่งชาติ (national_parks) ถูกโหลดไว้แล้ว และแหล่งเหมืองเดี่ยวจากแบบฝึกหัดก่อนหน้าถูกกำหนดไว้แล้วในตัวแปร single_mine
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การทำงานกับข้อมูลเชิงพื้นที่ใน Python
คำแนะนำการฝึกหัด
- สร้างฟังก์ชัน
closest_national_park()ที่ทำการวิเคราะห์แบบเดียวกับแบบฝึกหัดก่อนหน้า คือรับจุดเดียวและข้อมูลอุทยานแห่งชาติทั้งหมด แล้วคืนชื่ออุทยานแห่งชาติที่ใกล้ที่สุด - ทดสอบโดยเรียกฟังก์ชันนี้กับจุดเดียว (
single_mine) แล้วพิมพ์ผลลัพธ์ออกมา ได้ผลเหมือนเดิมหรือไม่ ("Virunga National park")? - นำฟังก์ชันนี้ไปใช้กับทุกจุดใน
mining_sitesและกำหนดผลลัพธ์ให้กับคอลัมน์ชื่อ'closest_park'
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# Define a function that returns the closest national park
def closest_national_park(geom, national_parks):
dist = ____
idx = ____
closest_park = ____
return closest_park
# Call the function on single_mine
print(closest_national_park(____, ____))
# Apply the function to all mining sites
mining_sites['closest_park'] = mining_sites.geometry.____(____, ____=____)
print(mining_sites.head())