How to get points (latitude and longitude) between two point (Point A and Point B) in PostGIS?(在PostGIS中如何获取两点(A点和B点)之间的点(经纬度)?)
问题描述
A我正在使用PostGIS(OSM),我没有一个解决方案来获取位置在两个点(点A和点B)之间的点(纬度和经度)。我知道ST_Distance函数,但是这个函数不返回带位置的点,这个函数只计算点之间的距离。如何通过位置获得积分?
推荐答案
假设您要检索的点是道路上的位置(线串),您可以在这两个点之间拆分线串,然后选择与其重叠或接近的点。
考虑分别存储在表points
和line
中的这些点和线串:
您可以使用函数ST_LineLocatePoint
获取直线中给定点的确切位置,并使用这些位置使用ST_LineSubstring
将线串切割成一个子集。有了这个子集,您可以检查哪些点与其相交或接近。下面的示例检索位于POINT(-4.71 54.12)
和POINT(-4.53 54.21)
之间的直线上的点-第二个和前一个最后一点:
SELECT points.geom
FROM line
JOIN points ON
ST_Intersects(
points.geom,
ST_LineSubstring(
line.geom,
ST_LineLocatePoint(line.geom,'SRID=4326;POINT(-4.71 54.12)'::geometry),
ST_LineLocatePoint(line.geom,'SRID=4326;POINT(-4.53 54.21)'::geometry)))
演示:db<>fiddle
这篇关于在PostGIS中如何获取两点(A点和B点)之间的点(经纬度)?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在PostGIS中如何获取两点(A点和B点)之间的点(经纬度)?


- 如何使 JFrame 背景和 JPanel 透明且仅显示图像 2022-01-01
- GC_FOR_ALLOC 是否更“严重"?在调查内存使用情况时? 2022-01-01
- 在 Java 中,如何将 String 转换为 char 或将 char 转换 2022-01-01
- java.lang.IllegalStateException:Bean 名称“类别"的 BindingResult 和普通目标对象都不能用作请求属性 2022-01-01
- 未找到/usr/local/lib 中的库 2022-01-01
- 转换 ldap 日期 2022-01-01
- Eclipse 的最佳 XML 编辑器 2022-01-01
- 如何指定 CORS 的响应标头? 2022-01-01
- 将 Java Swing 桌面应用程序国际化的最佳实践是什么? 2022-01-01
- 获取数字的最后一位 2022-01-01