And*_*lbe 1 postgresql postgis
我有一个包含locations以下列的表格:
latitudelongitude现在我想查询给定纬度/经度点的特定半径内的所有条目。
SELECT * FROM locations
WHERE ST_DWithin(
ST_MakePoint(longitude, latitude),
ST_MakePoint(-0.63098, 51.18291),
100
);
Run Code Online (Sandbox Code Playgroud)
上面的查询解释了我作为输入的数据以及我必须查询的数据。
有什么想法吗?
ST_DWithin可以使用地理和几何类型。ST_MakePoint返回一个几何类型。当与几何体一起使用时ST_DWithin,它将使用空间参考系统定义的距离单位。
当您想要以米为单位进行比较时,首先必须将值转换为地理类型。那么查询就变成:
SELECT * FROM locations
WHERE ST_DWithin(
ST_MakePoint(longitude, latitude)::geography,
ST_MakePoint(-0.63098, 51.18291)::geography,
100
);
Run Code Online (Sandbox Code Playgroud)
详细解释地理和几何之间差异的答案如下:https: //gis.stackexchange.com/questions/6681/what-are-the-pros-and-cons-of-postgis-geography-and-geometry-类型
| 归档时间: |
|
| 查看次数: |
3385 次 |
| 最近记录: |