นี่ค่อนข้างง่ายในการใช้ QGIS (ฉันคิดว่าจะใช้เวอร์ชั่นใด) และคำสั่ง SQL ที่ง่ายมากในตัวจัดการฐานข้อมูล แต่สำหรับสิ่งที่คุณต้องอยู่ในฐานข้อมูลเชิงพื้นที่ (Postgis หรือ spatialite) เนื่องจากคนส่วนใหญ่เข้าถึงได้มากขึ้นฉันจะถือว่าใช้ spatialite แต่คำสั่ง SQL จะเหมือนกันสำหรับ Postgis
- สร้างฐานข้อมูล Spatialite ใหม่
- นำเข้าเลเยอร์จุดและรูปหลายเหลี่ยมของคุณไปยังฐานข้อมูลใหม่
- เปิดตัวจัดการฐานข้อมูล DB เลือกฐานข้อมูลและเรียกใช้หนึ่งในคำสั่ง SQL ต่อไปนี้:
ระยะทางจากจุดทั้งหมดไปยังขอบเขตรูปหลายเหลี่ยมทั้งหมด
SELECT
f.point_id,
g.polygon_id,
st_distance(g.geom, f.geom) AS distance
FROM
points_table AS f,
polygons_table AS g
ระยะทางถึงจุดทั้งหมดไปยังขอบเขตรูปหลายเหลี่ยมที่เกี่ยวข้อง (สมมติว่ามีสนามทั่วไปอยู่)
SELECT
f.point_id,
g.polygon_id,
st_distance(g.geom, f.geom) AS distance
FROM
points_table AS f JOIN
polygons_table AS g ON (g.common_field = f.common_field)
ระยะทางไปยังทุกจุดสู่ศูนย์กลางรูปหลายเหลี่ยมที่เกี่ยวข้อง :
SELECT
f.point_id,
g.polygon_id,
st_distance(f.geom, st_centroid(g.geom)) AS distance
FROM
points_table AS f JOIN
polygons_table AS g ON (g.common_field = f.common_field)
โปรดสังเกตว่าคุณสามารถเพิ่มฟิลด์ใด ๆ จากเลเยอร์ของคุณไปยังผลลัพธ์:
SELECT
f.point_id,
f.point_number,
g.polygon_id,
g.parcel_name,
st_distance(f.geom, st_centroid(g.geom)) AS distance
FROM
points_table AS f JOIN
polygons_table AS g ON (g.common_field = f.common_field)
หรือทุกสาขา:
SELECT
f.*,
g.*,
st_distance(f.geom, st_centroid(g.geom)) AS distance
FROM
points_table AS f JOIN
polygons_table AS g ON (g.common_field = f.common_field)