2012-05-09 17 views
5

Próbuję znaleźć sposób zlokalizowania całej geometrii, która przecina dany punkt z PostGIS na CartoDB.com (hostowane przestrzenne db).Znajdź całą geometrię, która przecina punkt

Najbliżej byłem w stanie dostać się do reprodukcji to:

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

Niestety to błędy Out With 'Błąd:. Operacji na mieszanych geometrii SRID'

Jaka jest prawidłowa składnia, aby wybrać geometrię z tabeli, która przecina się z punktem? Mój stół, sf_blocks to wszystkie wielokąty.

+0

Okazuje się, że nie mam SRID, który jest wymagany. Aby wyjaśnić, "the_geom" jest wielokątem. – nym

Odpowiedz

5

Funkcja ST_GeomFromText przyjmuje drugi argument - SRID. Więc jeśli warstwa sf_blocks jest w Lon/Lat, WGS84 następnie kod EPSG jest 4326. W tym przypadku

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

powinno wystarczyć. Jeśli warstwa sf_blocks znajduje się w innym systemie współrzędnych (a współrzędna punktu wydaje się być równa Lon/Lat), wówczas należy użyć ST_Transform wokół części GeomFromText.

1

st_transform pozwoli Ci przekształcić się w inny SRID, sprawdź go w Internecie. 4326 jest najczęstszym zjawiskiem .. ochota, brak czasu na pełne napisanie odpowiedzi, trochę się zmieni.

edytuj..właściwie, aby potwierdzić "the_geom" w twoim przykładzie jest wielokąta lub multipolygon?

Powiązane problemy