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?


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);
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.