2011-09-29 212 views

回答

16

通常,轉換多邊形線可以是不直接的,因爲there is no one-to-one mapping和多邊形映射到不同的線串(外環,內環,等等)的各種元件。

考慮到這一點,你需要拆分每個這樣的單獨以下可能辦法:

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)還有其他元素。有更詳細的介紹上面的代碼是從PostGIS的用戶列表中的值:Split a polygon to N linestrings

還有一個通用的解決問題的方法在Exploding a linestring or polygon into individual vectors in PostGIS

0

解釋這是先打上谷歌,當你搜索這個問題。我不知道是否有這麼多時間已經過去了,但是對於未來的谷歌用戶來說,ST_ExteriorRings(geom)非常適合我。 http://postgis.net/docs/ST_ExteriorRing.html

+0

雖然你的答案是100%正確的,它也有可能成爲100%無用 如果該鏈接被移動,更改合併到另一個或主站點 剛好消失... **: - (**因此,請[編輯]您的答案,並將 從鏈接中的相關步驟複製到您的答案中,從而保證您的答案爲本網站整個生命週期的100%!**; - )**您可以隨時保留 鏈接在您的答案的底部作爲您的材料的來源...。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。 –

相關問題