postgresql – 在指定的距离限制和顺序中找到沿线串的最近点

postgresql – 在指定的距离限制和顺序中找到沿线串的最近点,第1张

概述我有这样的问题,我会很高兴,如果有人可以帮助我. 我有GIST索引的积分表.这些要点不会及时改变. 我想获取一些给定线串附近的点. 示例:想象一下,线串是道路,道路上的点是poi. 我想去距离特定道路5公里的poi.我想以正确的顺序取得那些poi(沿路的驾驶秩序).看图像: 对于从1点到5点的给定道路,我想从道路上获取最大5公里的POI,并沿着道路从点1到5获取.所以结果应该是: POI_ID1 我有这样的问题,我会很高兴,如果有人可以帮助我.
我有GIST索引的积分表.这些要点不会及时改变.

我想获取一些给定线串附近的点.
示例:想象一下,线串是道路,道路上的点是poi.
我想去距离特定道路5公里的poi.我想以正确的顺序取得那些poi(沿路的驾驶秩序).看图像:

对于从1点到5点的给定道路,我想从道路上获取最大5公里的POI,并沿着道路从点1到5获取.所以结果应该是:

POI_ID15689101213

这应该告诉我在沿着这条路旅行时可以以最低成本访问的POI.

有没有人有一些想法如何用postgres和postgis做到这一点?

假设您的几何列geom使用表道路(linesTRING)和poi(POINT)中的米的预计SRID,则查询5公里范围内所有POI(其中ID = 123)的查询应类似于:
SELECT poi.*,ST_distance(road.geom,poi.geom)/1000.0 AS distance_kmFROM road,poiWHERE road.ID = 123 AND ST_DWithin(road.geom,poi.geom,5000.0)ORDER BY ST_lineLocatePoint(road.geom,poi.geom),poi.geom);

ST_lineLocatePoint的第一个ORDER部分使用0.0到1.0之间的分数,具体取决于linesTRING中的点.如果道路的方向是“错误的方式”,则附加DESC以反转订单.第二个ORDER部分基于距离,如果该点稍微超过linesTRING的开始/结束(其中ST_lineLocatePoint将分别返回0.0或1.0),则可以使用该距离.

如果您使用具有长/纬度值的地理类型,此查询也可能有效,因为它会自动计算米 – 而不是度.查看文档了解更多信息:

> ST_Distance
> ST_DWithin
> ST_LineLocatePoint(或旧版PostGIS的ST_line_Locate_Point)

总结

以上是内存溢出为你收集整理的postgresql – 在指定的距离限制和顺序中找到沿线串的最近点全部内容,希望文章能够帮你解决postgresql – 在指定的距离限制和顺序中找到沿线串的最近点所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1166266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存