2011-04-20 25 views
0

我是新來的postgis,我試圖給線條給出兩個初始點,開始和結束點在同一層(幾何類型是linestring)。這linestrings代表道路,河流,地下管道..等等。使用名爲'length3d'的postgis函數我可以測量一行(一個表的記錄),但我需要measue多重連續的行;像這個例子一樣(使用下面的註解作爲解釋的例子)PostGIS測量多個線條

  • | S | - >線路起點
  • | E | - >行結束點
  • @ - >管線點
  • (S) - >用戶開始點
  • (E) - >用戶終點

實施例:

|S|[email protected][email protected]===(s)==|E-S|[email protected][email protected][email protected]==|E-S|[email protected][email protected]===(e)[email protected]==|E| 

線串格式:

LINESTRING(-6.366424 38.93301,-6.3625 38.938,-6.361 38.9572,-6.36158230284898 38.9397667955807,-6.36131118520776) 

用戶點可能是betwe兩個現有的點組成該行。

| S |到| E-S |是DB | E-S |中的一條記錄到| E-S |是其他記錄和| E-S |到| E |是其他記錄。

我如何測量從(s)到(e)的距離?

在此先感謝!

回答

1

使用PL/pgSQL您可以創建一個函數來測量路徑中的每個組件(從(s)到[E-S],從[E-S]到[E-S]等等)。

您可以預處理並創建一個表示(s)和(e)之間的連線的臨時線串(或多線串),然後直接在該線上使用ST_Length3D