วิธีการบรรลุเทียบเท่ากับละลายจาก ArcGIS สำหรับเดสก์ท็อปโดยใช้ ST_Union


11

ฉันพยายามที่จะบรรลุเทียบเท่ากับเครื่องมือละลายจาก ArcGIS สำหรับเดสก์ท็อปโดยใช้ ST_Union จาก PostGIS แต่ดูเหมือนว่าฉันไม่ได้รับผลลัพธ์ตามที่คาดไว้

ฉันมีตารางหนึ่งตารางที่มีคุณลักษณะบางอย่างที่มีรูปหลายเหลี่ยมเรขาคณิต (เช่น FID, Locstat, Loccnt, รูปร่าง)

นี่คือคำถามของฉัน:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;

1
คุณช่วยอธิบายผลลัพธ์ที่คุณคาดหวังและสิ่งที่คุณได้รับ กำลังทำงาน: SELECT AsText (ST_Union ... ) FROM ... อาจช่วยค้นหาข้อผิดพลาดได้
ปาสเตอร์

ในตารางฉันมี 6842 บันทึกตามผลลัพธ์ ArcGIS ฉันควรได้รับ 1,653 บันทึกที่ใช้แบบสอบถามที่ฉันได้รับ 6842 บันทึก ฉันยังลอง ST_Aggr_Union ซึ่งให้ฉัน 742 บันทึกด้วยค่า null หลายอัน
Dhams

คำตอบ:


14

ปัญหาของคุณน่าจะเป็นเพราะสิ่งที่คุณได้รวมไว้ในกลุ่มโดยเขต

ST_UNION เป็นฟังก์ชั่นรวมซึ่งหมายความว่ามันจะละลายขึ้นอยู่กับสิ่งที่คุณระบุเป็นGROUPพารามิเตอร์

นี่คือสิ่งที่คุณป้อน:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c Group by c.fid,c.boundaryshape;

ตามนี้คุณกำลังจัดกลุ่มโดยของคุณfidซึ่งอาจเป็นตัวระบุที่ไม่ซ้ำกันและด้วยboundaryshapeซึ่งเป็นรูปทรงเรขาคณิต ปัญหาของเรื่องนี้ก็คือมันไม่น่าเป็นไปได้อย่างมากที่ฟีเจอร์ที่ใช้รหัสเฉพาะจะมีรูปทรงเหมือนกัน ดังนั้นST_Unionอาจจะจบลงด้วยสิ่งดังต่อไปนี้:

Input:   
fid     boundaryshape  
1         11  
1         12  
1         11  
1         13  
2         12  
2         13  
2         12  
3          5  
3          2  
3          4  

Output:  
fid     boundaryshape  
1        (11 + 11)  
1        12  
1        13  
2        (12 + 12)  
2        13  
3        2  
3        4  
3        5

ในกรณีนี้คุณควรละลายโดยใช้ตัวระบุที่ไม่ซ้ำกันของคุณเท่านั้นเว้นแต่ว่าคุณมีรูปทรงเรขาคณิตที่ซ้ำกันจำนวนมากที่เหมือนกันfidซึ่งคุณกำลังพยายามกำจัด แม้ว่าในสถานการณ์นั้นคุณควรจัดกลุ่มตามfidและสหภาพจะดูแลการทำซ้ำเรขาคณิต

ฉันจะลองต่อไปนี้:

SELECT c.fid, ST_Union(c.boundaryshape) FROM c GROUP BY c.fid;

fidที่ควรให้ผลที่ต้องการของการละลายคุณสมบัติทั้งหมดขึ้นอยู่กับคุณลักษณะทั่วไป

นี่คือเอกสารช่วยเหลือที่ไซต์ PostGIS: ST_Union

ดูตัวอย่างแรกที่แสดงอยู่ที่ด้านล่างและสังเกตเห็นว่ามันไม่ได้รวมรูปทรงเรขาคณิตในกลุ่มโดยส่วน


1
ในบางกรณีจะดีกว่าที่จะ snap รูปเรขาคณิตกับกริดก่อนทำการรวม: SELECT ST_Union (ST_SnapToGrid (geom, 0.0001)) จากกลุ่ม geo_area โดย level_identifier;
Maxim Eliseev
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.