PostgreSQL查询中的地理坐标

时间:2016-02-23 10:55:16

标签: sql postgresql gis

数据库表中有两个字段,纬度经度。 (其他领域也是如此,但现在它们并不重要。)

我有一个功能,其中有三个参数:纬度经度 max_distance (km)。

有没有办法构建原始PostgreSQL查询,只返回表示位置的行,该行位于从给定纬度和经度测量的 max_distance (km)内?

示例参数latitude = 59.9138699,经度= 10.7522451,max_distance = 10

1 个答案:

答案 0 :(得分:0)

为此,请使用postgis。

Postgis具有ST_DistanceST_PointFromText等功能:

select * from tbl
where ST_Distance(
    ST_PointFromText('POINT(' || longitude || ' ' || latitude || ')', 4326), 
    ST_PointFromText('POINT(10.7522451 59.9138699)', 4326)
) < 10000;

要快速执行此操作,您应使用几何字段并将其编入索引。

您还应该了解一下空间参考系统和SRID。 SRID 4326表示WGS84坐标系统,通常在网络上使用。