पोस्टगिस में अंतरिक्ष विभाजन को कैसे गति दें?


9

मेरे पास ओवरलैपिंग बहुभुजों का एक गुच्छा है और मैं अतिव्यापी होने से बचने के लिए अंतरिक्ष को विभाजित करने की कोशिश कर रहा हूं। मुझे लगता है कि मेरी समस्या काफी सरल है। कुछ ESRI उत्पाद और http://arcscripts.esri.com/details.asp?dbid=16700 का उपयोग करते हुए मेरे सहकर्मी ने 48 में इसकी गणना की।

मैं इसे http://s3.opengeo.org/postgis-power.pdf#page=24 ( http://trac.osgeo.org/postgis/wiki/UikiWikiWimSimplifyPreserveTopology का उपयोग करके विवरणों का अनुमान लगाते हुए) पोस्टगिस के साथ करने की कोशिश कर रहा हूं प्रेरणा के रूप में) लेकिन यह इतना धीमा है कि मैं इसे 10 से अधिक पोल के साथ नहीं कर सकता (मुझे विभाजित करने के लिए उनमें से 800 मिला है)। धीमा हिस्सा ST_Union है, मैंने विभिन्न चीजों की कोशिश की, लेकिन कोई भी सफल नहीं है, यहां वर्तमान स्थिति है:

select geom from
(select st_linemerge(st_union(geom)) as geom from
    (select st_exteriorring((st_dumprings((st_dump(t.geom)).geom)).geom) as geom from
        (SELECT geometry AS geom, id
               FROM tt
              WHERE campaign_id = 204
              ORDER BY id limit 200) t) t2) t3

यह 26 मिनट (linemerge) (वास्तव में नहीं है) के लिए कंप्यूटिंग कर रहा है। Pol_dump बग्स के मामले में पोल ​​मल्टीपॉलीगॉन हैं।

क्या आपके पास कोई टिप है? लाइनवर्क का st_union () बहुत धीमा हिस्सा है।

धन्यवाद,

निको।

पुनश्च: यहाँ कुछ संख्याएँ हैं: 852 मल्टीप्लगॉन, 14880 पॉलीगॉन के लिए अग्रणी, 215567 लिनेस्टार्स के लिए अग्रणी 315513 कोने।


यदि कोई जवाब नहीं देता है, तो आप पोस्टिंग मेलिंग सूची की कोशिश कर सकते हैं।
जीआईएस-जोनाथन

मैं वास्तव में मेलिंग सूचियों का प्रशंसक नहीं हूं, इसके अलावा, यह एक GEOS समस्या भी हो सकती है, जो JTS के बारे में शिकायत कर सकते हैं, ठीक है, मैं समस्या को खुला रखना पसंद करता हूं।
nraynaud

लाइनवर्क को इकट्ठा करके और खाली ज्यामिति के साथ एक संघ बनाकर, मैं इसे 800 के दशक में कर सकता हूं: st_union (st_collect (geom), st_setsrid (geomfromtext ('POINT EMPTY), 900913)) जो ESRI सामान की तुलना में लगभग 20 गुना धीमा है।
nraynaud

1
स्मृति से, st_unemerge से st_union छोड़ने की कोशिश करें (st_union ...) अगर यह मदद करता है
simplexio

जवाबों:


3

यह उत्तर सीधे @nraynaud की मदद नहीं कर सकता है, लेकिन उम्मीद है कि इस विषय पर कुछ प्रकाश डालेगा।

GEOS के साथ एक समस्या के कारण स्पैटियालाइट <4.0 में एक समान मुद्दा है। मुद्दे की चर्चा के लिए इस लिंक को देखें ।

वर्कअराउंड ST_Union () फ़ंक्शन को ST_UnaryUnion (ST_Collect ()) से बदलना है। दुर्भाग्य से, ST_UnaryUnion पोस्टगिस 2.0 तक उपलब्ध नहीं है (जहां तक ​​मैं बता सकता हूं।)


1

आप PostGIS के किस संस्करण का उपयोग कर रहे हैं? यदि आप PostGIS <1.4 या GEOS <3.2 का उपयोग कर रहे हैं तो यूनियनिंग बहुत धीमी है। बहुत तेज़ संघ 1.4 में पेश किया गया था, लेकिन इसके लिए GEOS 3.2+ की आवश्यकता है। तो पहले अगर आप 1.4 से कम का उपयोग कर रहे हैं, तो मैं कम से कम 1.5 में अपग्रेड करूंगा।

SELECT postgis_full_version();

जाँच करने के लिए।

इसके अलावा बहुभुज के मूल किनारों को रखने का आपका इरादा है। यदि आप अतिव्यापी क्षेत्रों को भंग करना चाहते हैं,

SELECT ST_Union(geom) FROM tt WHERE campaign_id = 204;

चाल चलेगी।


नमस्ते, यहाँ परिणाम है: "POSTGIS =" 1.5.3 "GEOS =" 3.3.2-CAPI-1.7.2 "PROJ =" Rel। 4.8.0, 6 मार्च 2012 "LIBXML =" 2.7.3 "USE_STATS"। मुझे हाल ही में GEOS में संघ के लिए कोई प्रासंगिक जोड़ नहीं मिला। मैंने बहुभुज संघों में एक स्पीडअप पाया, लेकिन मैं बहुभुजों का विलय नहीं कर रहा हूं, और यह स्पीडअप विवादास्पद लगता है। मैं बिलकुल नहीं चाहता कि मैं अपने बहुविवाह का समर्थन करूँ क्योंकि मुझे बहुविवाह के लिए मूल्यों को जोड़ना है।
nraynaud
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.