0

我是 postgis 的新手,我正在尝试测量线串,给出两个初始点,同一层中的起点和终点(几何类型是线串)。此线串代表道路、河流、地下管道等。

使用名为“length3d”的postgis函数,我可以测量一行(表的一个记录),但我需要测量多条连续的行;类似这个例子的东西(使用下一个注释作为解释例子)

  • |S| --> 线起点
  • |电子| --> 线终点
  • @ --> 点在行中
  • (s) --> 用户起点
  • (e) --> 用户端点

例子:

|S|===@===@===(s)==|E-S|===@==@===@==|E-S|===@===@===(e)==@==|E|

线串格式:

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

用户点可能位于组成线的两个现有点之间。

|S| 到 |ES| 是 DB |ES| 上的一条记录 到 |ES| 是其他记录和|ES| 到 |E| 是其他记录。

我如何测量从(s)到(e)的距离?

提前致谢!

4

1 回答 1

1

使用PL/pgSQL,您可以创建一个函数来测量路径的每个组件(从 (s) 到 [ES],从 [ES] 到 [ES] 等等)。

您可以预处理并创建一个临时线串(或多线串)来表示(s)和(e)之间的线,然后ST_Length3D直接在其上使用。

于 2011-04-28T16:45:30.873 回答