20 votos

PostGIS selecciona por cuadro delimitador de latitud y longitud

Tengo un minLat, minLong, maxLat y maxLong de una caja dibujada en un mapa. En este momento, mi consulta para obtener todos los puntos de la caja se parece a esto:

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

Quiero utilizar la columna de geometría en lugar de las columnas de lat/long para obtener los resultados. He probado esta consulta:

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

de este puesto: Seleccionar el cuadro delimitador mediante postgis pero no devuelve ningún resultado.

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

19voto

NilObject Puntos 7874

Tus datos no están en lat/lon, así que tienes que empujar tu caja al espacio de coordenadas de tus datos:

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X