ฉันกำลังพยายามวิเคราะห์แบบอักษรพื้นฐานโดยใช้ PostGIS จุดประสงค์ของฉันคือการค้นหารูปหลายเหลี่ยมที่สัมผัสรูปหลายเหลี่ยมอื่น ๆ เมื่อต้องการทำเช่นนี้ฉันคิดว่าST_GetFaceEdges
จะทำงานได้ ( อ้างอิง ) ฉันต้องการตรวจสอบทุกรูปหลายเหลี่ยมในฐานข้อมูลของฉันและรายการรูปหลายเหลี่ยมอื่น ๆ ทั้งหมดที่สัมผัส ในภาพด้านล่างฉันคาดหวังว่าผลลัพธ์จะบอกว่ารูปหลายเหลี่ยมสองอัน (ซึ่งเป็นอาคาร) แตะหนึ่งอาคารและผลลัพธ์ของอีก 4 รูปกล่าวว่าพวกเขาแตะ 0 รูปหลายเหลี่ยม
อย่างไรก็ตามฉันมีปัญหาในการทำความเข้าใจว่าจะทำอย่างไร เมื่อฉันพยายามคัดลอกตัวอย่างมีบางส่วนที่ฉันไม่เข้าใจ
-- Returns the sequence, edge id
-- , and geometry of the edges that bound face 1
-- If you just need geom and seq, can use ST_GetFaceGeometry
SELECT t.seq, t.edge, geom
FROM topology.ST_GetFaceEdges('tt',1) As t(seq,edge)
INNER JOIN tt.edge AS e ON abs(t.edge) = e.edge_id;
ฉันไม่แน่ใจว่าtopology
เป็นชื่อของตารางคอลัมน์หรือส่วนหนึ่งของฟังก์ชั่น ฉันคิดว่ามันเป็นโต๊ะ แต่ฉันไม่แน่ใจ
-- try out on sample of data
-- Table is called 'TestArea', column used is 'fid_1'
SELECT t.seq, t.edge, geom
FROM TestArea.ST_GetFaceEdges('fid_1', 1) As t(seq,edge)
INNER JOIN tt.edge AS e ON abs(t.edge) = e.edge_id;
ฉันยังไม่แน่ใจว่าหน้าที่ของการรวมภายในคืออะไร - สิ่งนี้เข้าร่วมผลลัพธ์กับวัตถุต้นฉบับหรือไม่
AddTopoGeometryColumn
ตารางก่อนเรียกใช้แบบสอบถามหรือไม่ ขึ้นอยู่กับผลลัพธ์จากST_Touches
ค่าที่ฉันตรวจสอบทั้งหมดสมเหตุสมผล แต่อาจเป็นไปได้โดยบังเอิญ
AddTopoGeometryColumn
แต่ข้อมูลของคุณจะต้องถูกแปลงเป็นดิจิทัลในวิธีที่สอดคล้องกับทอพอโลยี ตัวอย่างเช่นตามเนื้อผ้าคุณจะแปลงบ้านแฝดสองหลังเป็นดิจิทัลเป็นรูปหลายเหลี่ยมสองรูปและใช้ "snap to vertex" ใน GIS ของคุณเพื่อให้แน่ใจว่าผนังที่ใช้ร่วมกันสัมผัส แต่มันจะถูกเก็บไว้เป็นเส้นคู่สองเส้น แต่การทอพอโลยีแบบดิจิทัลพวกเขาหมายความว่ากำแพงที่ใช้ร่วมกันจริงๆเป็นเพียงหนึ่งบรรทัดและสองโหนดที่ใช้ร่วมกันโดยแต่ละรูปหลายเหลี่ยม ST_Touches
ตรวจสอบความใกล้ชิดเชิงพื้นที่เพียงอย่างเดียวไม่ใช่ทอพอโลยี
CreateTopology
และอื่น ๆ ( bit.ly/oLk8QY ) แต่วิธีการที่อาคารของคุณ เหมือนพวกมันมีโทโพโลยีที่แตกต่างแม้จะมองเห็นขอบของพวกเขาอย่างใกล้ชิด มีเพียงบางสิ่งสำหรับผู้ถามในอนาคตที่ต้องระวัง