本文介紹了在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點)之間的點(經緯度)?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,