आसन्न बहुभुजों को मिलाएं और सभी (आसन्न और आसन्न नहीं) को मल्टीपोलिगन के रूप में लौटाएं?


11

मेरे पास प्रशासनिक सीमाओं और उनकी ज्यामिति के साथ एक पोस्टग्रेज डेटाबेस है। उन सीमाओं में से प्रत्येक की एक पहचान संख्या है।

मैं क्या हासिल करना चाहता हूं:

पहले मैं उन सभी पंक्तियों का चयन करना चाहता हूं जो एक विशेष ज़िप कोड के साथ शुरू हो रही हैं। उदाहरण के लिए:

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 पंक्तियाँ मिलती हैं, और ऐसा लगता है कि यह वही हो सकता है जो मैं चाहता हूँ, लेकिन मुझे परिणाम als ST_AsText नहीं मिल सकता है।

क्या कोई कथन है जो सभी बहुभुजों को विलय कर देता है जहां आवश्यक हो और इसे आदर्श रूप से जेजोन या पाठ के रूप में वापस कर सकते हैं?

जवाबों:


1

ओपी का जवाब:

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;

तो आप जियोमेट्री तक पहुंच सकते हैं और इसे जियोसन में बदल सकते हैं। आसन्न ज्यामिति विलीन हो जाती हैं और आपको अन्य सभी ज्यामिति मिलती हैं जो विलयित बहुभुज में शामिल नहीं हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.