รวมรูปหลายเหลี่ยมที่อยู่ติดกันและส่งคืนทั้งหมด (ติดกันและไม่ติดกัน) เป็น Multipolygon?


11

ฉันมีฐานข้อมูล postgres ที่มีขอบเขตการบริหารและรูปทรงเรขาคณิตของพวกเขา แต่ละขอบเขตมีจำนวนรหัส

สิ่งที่ฉันต้องการบรรลุ:

ก่อนอื่นฉันต้องการเลือกแถวทั้งหมดที่เริ่มต้นด้วยรหัสไปรษณีย์เฉพาะ ตัวอย่างเช่น:

SELECT * FROM "post" WHERE "post"."ident" LIKE '101%'

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

ฉันลองข้อความเหล่านี้แล้ว:

หนึ่งนี้ฉันมีจากคำตอบนี้:

เข้าร่วมรูปหลายเหลี่ยมขนาดเล็กจำนวนมากเพื่อสร้างรูปหลายเหลี่ยมขนาดใหญ่ขึ้นโดยใช้ PostGIS

with t as (
select (st_dump(geom)).geom 
from "post"
where "post"."ident" LIKE '593%'
) select ST_UNION(geom) from t;

แต่คำสั่งนี้จะส่งกลับเฉพาะรูปหลายเหลี่ยมที่อยู่ติดกัน แต่ไม่รวมอยู่ในรูปอื่น

with t as (
select (st_dump(geom)).geom 
from "post"
where "post"."ident" LIKE '593%'
) select ((ST_Dump(ST_UNION(geom)))) from t;

ฉันได้รับ 2 แถวและดูเหมือนว่านี่อาจเป็นสิ่งที่ฉันต้องการ แต่ฉันไม่สามารถรับผลลัพธ์ได้เช่นกัน ST_AsText

มีคำสั่งที่ส่งคืนรูปหลายเหลี่ยมทั้งหมดที่รวมกันในกรณีที่จำเป็นและส่งกลับอย่างสมบูรณ์แบบเป็น geoJSON หรืออาจเป็นข้อความหรือไม่?

คำตอบ:


1

คำตอบของ OP:

with t as (
select (st_dump(geom)).geom 
from "post"
where "post"."ident" LIKE '593%'
) select ST_AsGeoJSON((ST_Dump(ST_UNION(geom))).geom) from t;

ดังนั้นคุณสามารถเข้าถึงรูปเรขาคณิตและแปลงเป็น geoJSON รูปทรงเรขาคณิตที่อยู่ติดกันจะถูกรวมเข้าด้วยกันและคุณจะได้รูปทรงเรขาคณิตอื่น ๆ ทั้งหมดซึ่งยังไม่รวมอยู่ในรูปหลายเหลี่ยมที่ผสาน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.