PostGIS seleziona per riquadro di selezione lat / long


18

Ho un minLat, minLong, maxLat e maxLong da una casella disegnata su una mappa. In questo momento, la mia richiesta per ottenere tutti i punti nella casella è simile al seguente:

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

Voglio usare la colonna geometria anziché le colonne lat / long per ottenere i risultati. Ho provato questa query:

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

da questo post: selezionare il riquadro di delimitazione utilizzando Postgis ma non restituisce risultati.

Qualcuno ha un esempio di come selezionare tutti i punti all'interno di un riquadro creato da min / max lat / long usando la geometria in postgis?


Quale versione di PostGIS stai usando?
Mapperz

My PostGIS è la versione 2.0.1
bl8rchk,

2
sono entrambe le colonne geom nello stesso SRID?
nichel

Penso che potrei essere molto distante dal mio approccio ... Ho solo una colonna geom. È SRID è 2223
bl8rchk

@ bl8rchk qual è la tabella geomTablee il campo mytable.geom?
theartofbeing

Risposte:


16

I tuoi dati non sono in lat / lon, quindi devi inserire la casella nello spazio delle coordinate dei tuoi dati:

SELECT *
FROM mytable
WHERE 
  mytable.geom && 
  ST_Transform(ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326), 2223);
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.