•MAPEDIA•
MAPEDIA BLOG
Published in
1 min readAug 21, 2019

--

การ Intersects โดยใช้ PostgreSQL/PostGIS

การ Intersects ด้วยคำสั่งใน PostGIS ผมได้ยกตัวอย่างโดยการใช้ข้อมูลจุด (point) กับข้อมูลพื้นที่ปิด (polygon) ซึ่งถ้าไม่คิดอะไรมากเราก็สามารถใช้เครื่องมือ Geoprocessing ใน QGIS ก็ได้ แต่ถ้าเราจะต้องจัดการข้อมูลในฐานข้อมูลเชิงพื้นที่เราจำเป็นต้องใช้คำสั่งของ PostGIS ในการทำงานเป็นส่วนให้แทนการคลิกปุ่มเครื่องมือบน QGIS โดยส่วนตัวผมแล้วผมคิดว่ามันเร็วกว่า QGIS ครับ ก่อนหน้านี้ผมได้พยายามแก้ไขปัญหาในเรื่องของการสืบค้นที่ใช้ระยะเวลานานมากสำหรับการ intersects ใน PostGIS ซึ่งวันนี้ผมได้วิธีการแก้ไขปัญหาที่ทำให้การ intersects ที่เร็วขึ้นครับ โดยการเพิ่มคำสั่งของ ST_CoveredBy และ ST_Intersection ท่านสามารถศึกษาได้จากคำสั่งด้านล่างนี้

SELECT hp.gid, c.lcode, c.texture_en,c.cn,
CASE
WHEN ST_CoveredBy(hp.geom, c.geom)
THEN hp.geom
ELSE
ST_Multi(
ST_Intersection(hp.geom, c.geom)
) END AS geom
FROM fire_archive AS hp
INNER JOIN cn_nan AS c
ON ST_Intersects(hp.geom, c.geom)
WHERE c.cn = 65;
-- LIMIT 30;
sql on qgis db manager plugin
output from intersects

--

--