Seleção PostGIS por caixa delimitadora lat / long

18

Eu tenho um minLat, minLong, maxLat e maxLong de uma caixa desenhada em um mapa. No momento, minha consulta para obter todos os pontos da caixa fica assim:

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

Eu quero usar a coluna de geometria em vez de colunas lat / long para obter os resultados. Eu tentei esta consulta:

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

desta postagem: selecione a caixa delimitadora usando o postgis, mas não retornará resultados.

Alguém tem um exemplo de como selecionar todos os pontos dentro de uma caixa criada por min e max lat / longs usando geometria no postgis?

bl8rchk
fonte
Qual versão do PostGIS você está usando?
Mapperz
Meu PostGIS é a versão 2.0.1
bl8rchk
2
as duas colunas geom estão no mesmo SRID?
nickves 14/05
Acho que posso estar muito longe da minha abordagem ... só tenho uma coluna geom. É SRID é 2223 #
bl8rchk
@ bl8rchk qual é a tabela geomTablee o campo mytable.geom?
theartofbeing

Respostas:

16

Seus dados não estão em lat / lon, então você precisa colocar sua caixa no espaço de coordenadas dos seus dados:

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