पोस्टगिस 1.5 में व्यक्तिगत खंडों में बहुभाषी विस्फोट


10

मैं एक MULTILINESTRINGPostGIS में है जिसमें कई शामिल हैं LINESTRING। प्रत्येक पर विचार LINESTRINGका एक सेट है करने के लिए POINTकी

पी 1 , पी 2 , ... पी एन

लाइन खंडों का गठन

एल 1 , एल 2 , ... एल एन -1

जहां L X , P X से P X + 1 को जोड़ने वाला लाइन खंड है ।

PostGIS 1.5 का उपयोग करके मैं MULTILINESTRINGप्रत्येक के व्यक्तिगत लाइन सेगमेंट में कैसे विस्फोट कर सकता हूं LINESTRING?

जवाबों:


11

दो विकल्प दिमाग में आते हैं। यदि आप एक विशिष्ट चाहते हैं LINESTRINGतो आप ST_NumGeometries () और ST_GeometryN () का उपयोग कर सकते हैं । वैकल्पिक रूप से, यदि आप सभी उप- जिओमेट्री चाहते हैं, तो ST_Dump () जाने का रास्ता है।

वास्तव में सवाल पढ़ने के बाद, आपको पोस्टगिस-उपयोगकर्ता सूची से इस पोस्ट के समान कुछ करने की आवश्यकता होगी :

SELECT ST_AsText( ST_MakeLine(sp,ep) )
FROM
-- extract the endpoints for every 2-point line segment for each linestring
(SELECT
  ST_PointN(geom, generate_series(1, ST_NPoints(geom)-1)) as sp,
  ST_PointN(geom, generate_series(2, ST_NPoints(geom)  )) as ep
FROM
   -- extract the individual linestrings
  (SELECT (ST_Dump(ST_Boundary(geom))).geom
   FROM mypolygontable
   -- eliminate 0 length linestring 
    where st_x(st_startpoint(geom))<> st_x(st_endpoint(geom))
   ) AS linestrings
) AS segments;

मैं कैसे प्राप्त करने के लिए के रूप में अपने जवाब पढ़ें LINESTRING'एक से है MULTILINESTRING। लेकिन मैं एक स्तर और गहरा जाना चाहता हूं, मैं व्यक्तिगत लाइन सेगमेंट चाहता हूं, जो विलय होने पर LINESTRINGफिर से, जब विलय हो जाता है, तो मूल रूप बनाते हैं MULTILINESTRING। क्या इसका कोई मतलब है?
चौ ०

1
आह! हां, अब मेरे पास एक कॉफी है जिसे मैं देख सकता हूं कि आपने क्या लिखा है ...
MerseyViking

1
मुझे समझ में नहीं आ रहा है कि मैं कॉफी नहीं पीता;)
चाऊ

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