2011-04-20 83 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