Bu örnek, bir linestring'in her iki tarafında iki çokgen oluşturur. PostGIS 1.5 veya üstünü gerektirir. Kendilerini geçen çizgilerle ne kadar iyi başa çıkacağından emin değilim.
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
));
Çıktıları:
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)
Kod şu şekilde çalışır:
- ST_Buffer kullanarak linestring arabelleğe alın. Hiçbir uç sınırı belirtmek için özel uç kapaklarını destekleyen PostGIS 1.5 özelliğinden yararlanıyoruz. Aşağıdaki örneğe bakın.
- Wiki'de belgelenen yöntemi kullanarak, orijinal satırı kullanarak arabelleğe alınmış çokgeni ikiye bölün .
Bu, gelecekte kendi kendine kesişen çizgilerle başa çıkmak için geliştirilebilir.