2012-05-09 12 views
5

Sto provando a trovare un modo per individuare tutta la geometria che interseca un determinato punto con PostGIS su CartoDB.com (cloud ospitato db spaziale).Trova tutta la geometria che interseca un punto

Il più vicino che ho potuto arrivare a riprodurre questo è:

SELECT * FROM sf_blocks WHERE ST_Contains(the_geom, ST_GeomFromText('POINT(-122.44107 37.750066)')); 

Purtroppo questa errori fuori con 'ERRORE:. Operazione su geometrie SRID misti'

Qual è la sintassi corretta per selezionare la geometria da una tabella che si interseca con un punto? La mia tabella, sf_blocks sono tutti poligoni.

+0

Si scopre che non avevo lo SRID, che è richiesto. Per chiarire, 'the_geom' è un poligono. – nym

risposta

5

La funzione ST_GeomFromText accetta un secondo argomento: lo SRID. Così, se il livello di sf_blocks è in Lon/Lat, WGS84 allora il codice EPSG è 4326. In questo caso

SELECT * 
FROM sf_blocks 
WHERE ST_Contains(
    the_geom, 
    ST_GeomFromText('POINT(-122.44107 37.750066)', 4326) 
); 

dovrebbe farlo. Se il layer sf_blocks si trova in qualche altro sistema di coordinate, (e la coordinata del punto sembra essere Lon/Lat), allora si vorrà usare ST_Transform attorno alla parte GeomFromText.

1

st_transform consente di trasformare in altro SRID, dare un'occhiata sul web. 4326 è il più comune ... mi dispiace, mi manca un po 'di tempo per scrivere completamente una risposta.

modifica ... basta confermare 'the_geom' nell'esempio è un poligono o un multipoligono?

Problemi correlati