यह नमूना एक अलसी के दोनों ओर दो बहुभुज बनाता है। इसके लिए PostGIS 1.5 या उससे अधिक की आवश्यकता होती है। मुझे यकीन नहीं है कि यह खुद को पार करने वाली लाइनों के साथ कितनी अच्छी तरह से सामना करेगा।
SELECT ST_AsText(geom)
FROM ST_Dump ((
SELECT
ST_Polygonize(GEOMUNION(ST_Boundary(ST_Buffer(the_geom, 0.5, 'endcap=flat join=round')), the_geom)) AS buffer_sides
FROM
(SELECT ST_GeomFromText('LINESTRING(1 1, 1 5, 5 5)') AS the_geom) AS table1
));
यह आउटपुट:
st_astext
------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------
POLYGON((0.5 5,0.509607359798385 5.09754516100806,0.538060233744357 5.19134171618254,0.584265193848727 5.2777851165098,
0.646446609406726 5.35355339059327,0.722214883490199 5.41573480615127,0.808658283817455 5.46193976625564,0.9024548389919
36 5.49039264020162,1 5.5,5 5.5,5 5,1 5,1 1,0.5 1,0.5 5))
POLYGON((5 5,5 4.5,1.5 4.5,1.5 1,1 1,1 5,5 5))
(2 rows)
कोड निम्नलिखित तरीके से काम करता है:
- ST_Buffer का उपयोग करके linestring बफर करें। हम कस्टम एंडकैप का समर्थन करने वाले PostGIS 1.5 फीचर का लाभ उठाते हैं ताकि कोई भी एंड कैप न हो। नीचे उदाहरण देखें।
- विकी में प्रलेखित विधि का उपयोग करके, मूल लाइन का उपयोग करते हुए, दो बहुभुज को विभाजित करें ।
इससे भविष्य में सेल्फ-क्रॉसिंग लाइनों का सामना करने के लिए सुधार किया जा सकता है।