PostGIS按纬度/经度边界框选择


18

我在地图上绘制的框中有一个minLat,minLong,maxLat和maxLong。现在,我要获取框中所有点的查询如下所示:

SELECT *
FROM geomTable
WHERE (longitude BETWEEN minLon AND maxLon)
AND (latitude BETWEEN minLat AND maxLat)

我想使用几何列而不是纬度/经度列来获取结果。我试过这个查询:

SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326);

从这篇文章中:使用postgis选择边界框,但未返回任何结果。

有没有人举过一个例子,说明如何使用Postgis中的几何图形在由最小和最大纬度/经度创建的框中选择所有点?


您正在使用哪个版本的PostGIS?
Mapperz

我的PostGIS版本是2.0.1
bl8rchk 2013年

2
两个geom列在同一SRID中吗?
尼克,

我想我的方法可能还很遥远...我只有一个geom列。它的SRID是2223
bl8rchk

@ bl8rchk的表geomTable和字段是mytable.geom什么?
theartofbeing

Answers:


16

您的数据不在纬度/经度中,因此您需要将方框推入数据的坐标空间:

SELECT *
FROM mytable
WHERE 
  mytable.geom && 
  ST_Transform(ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326), 2223);
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.