postgresql – 在指定的距离限制和顺序中找到沿线串的最近点
我有这样的问题,我会很高兴,如果有人可以帮助我.
我有GIST索引的积分表.这些要点不会及时改变. 我想获取一些给定线串附近的点. 对于从1点到5点的给定道路,我想从道路上获取最大5公里的POI,并沿着道路从点1到5获取.所以结果应该是: POI_ID 1 5 6 8 9 10 12 13 这应该告诉我在沿着这条路旅行时可以以最低成本访问的POI. 有没有人有一些想法如何用postgres和postgis做到这一点?
假设您的几何列geom使用表道路(LINESTRING)和poi(POINT)中的米的预计SRID,则查询5公里范围内所有POI(其中id = 123)的查询应类似于:
SELECT poi.*,ST_Distance(road.geom,poi.geom)/1000.0 AS distance_km FROM road,poi WHERE 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),则可以使用该距离. 如果您使用具有长/纬度值的地理类型,此查询也可能有效,因为它会自动计算米 – 而不是度.查看文档了解更多信息: > (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |