簡體   English   中英

查詢以查找點列與PostGis中點之間的距離

[英]Query to find distance between a point column and a point in PostGis

我在我的應用程序中使用PostGis進行基於位置的計算。 在一個表中,我有一列在地理類型(Point(lon lat))中稱為``位置''的列。 我想傳遞一個點(Point(lon lat lat))並檢查該點(我傳遞)與所有行中的位置列之間的距離....如果距離小於5 m ....它將返回名稱要點。如何查詢。

假設您對數據的要求是4326,那么您要查找的查詢是:

SELECT the_geom FROM mytable WHERE ST_DWithin(the_geom,ST_GeomFromEWKT("srid=4326;POINT(lon lat)"), 0.0008);

請注意,ST_DWithin中的單位(0.0008)與投影的單位相同,在4326情況下為度。 如果您的投影數據以米為單位,則可以使用米。

對於生產應用程序,應該使用幾何類型,速度更快。 從stackoverflow上一個問題

簡短的答案:地理是一種支持遠程距離測量的新數據類型。 如果您使用地理-您無需了解太多有關平面坐標系的知識。 如果您所關心的只是測量距離和長度,並且擁有來自世界各地的數據,那么地理通常是最好的。 Geometry數據類型是一種較舊的數據類型,具有許多支持它的功能,並且得到了第三方工具的大力支持。 如果您對空間參考系統非常滿意,或者正在處理將所有數據都放在一個空間參考系統(SRID)中的本地化數據,或者您需要進行大量空間處理,那將是最好的選擇。 請參閱第8.8節“ PostGIS功能支持列表”以了解當前支持的內容和不支持的內容。

太好了謝謝。 它在數據庫中工作正常。 我有以下來自PHP..it的代碼,例如Query Failed:
$ locationresult = pg_query($ con,“ SELECT id,name from gps.locationnames WHERE ST_DWithin(location,ST_GeographyFromText('POINT(lon lat)'),500)”“)或死亡('Query Failed:'。pg_last_error($ con ));

這里有什么問題..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM