PostGIS seleccione por el cuadro delimitador lat / long

18

Tengo un minLat, minLong, maxLat y maxLong de un cuadro dibujado en un mapa. En este momento, mi consulta para obtener todos los puntos en el cuadro se ve así:

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

Quiero usar la columna de geometría en lugar de columnas de lat / long para obtener los resultados. Intenté esta consulta:

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

de esta publicación: Seleccione el cuadro delimitador usando postgis pero no devuelve ningún resultado.

¿Alguien tiene un ejemplo de cómo seleccionar todos los puntos dentro de un cuadro creado por min y max lat / longs usando geometría en postgis?

bl8rchk
fuente
¿Qué versión de PostGIS estás usando?
Mapperz
Mi PostGIS es la versión 2.0.1
bl8rchk
2
son ambas columnas geom en el mismo SRID?
nickves
Creo que podría estar muy lejos con mi enfoque ... Solo tengo una columna geom. Su SRID es 2223
bl8rchk
@ bl8rchk, ¿qué es la tabla geomTabley el campo mytable.geom?
theartofbeing

Respuestas:

16

Sus datos no están en lat / lon, por lo que debe insertar su caja en el espacio de coordenadas de sus datos:

SELECT *
FROM mytable
WHERE 
  mytable.geom && 
  ST_Transform(ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326), 2223);
Paul Ramsey
fuente