आम तौर पर, पॉलीगॉन को लाइन में बदलना आसान नहीं हो सकता है क्योंकि है कोई एक-से-एक मैपिंग नहीं और बहुभुज के विभिन्न तत्व अलग-अलग लिनेस्ट्रिंग (बाहरी रिंग, आंतरिक रिंग, आदि) के लिए मैप करते हैं।
इसे ध्यान में रखते हुए, आपको उनमें से प्रत्येक को इस तरह संभावित दृष्टिकोण का पालन करते हुए अलग-अलग विभाजित करने की आवश्यकता होगी:
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
) AS linestrings
) AS segments;
इस पर निर्भर करता है कि mypolygontable
. में कौन सा बहुभुज डेटा संग्रहीत है , आप न केवल सीमा को डंप करना चाह सकते हैं (जैसा कि ऊपर ST_Boundary
. का उपयोग करके किया गया है) ) लेकिन अन्य तत्व भी। अधिक विस्तृत अवलोकन के साथ उपरोक्त कोड पोस्टगिस-उपयोगकर्ता सूची से लिया गया है:बहुभुज को N लिनेस्ट्रिंग में विभाजित करें
PostGIS में अलग-अलग वैक्टर में लिनेस्ट्रिंग या पॉलीगॉन का विस्फोट करना