2012-05-09 11 views
5

Ich versuche, eine Möglichkeit zu finden, alle Geometrie, die einen bestimmten Punkt mit PostGIS auf CartoDB.com (Cloud gehostete räumliche db) schneidet.Finden Sie alle Geometrie, die einen Punkt schneidet

Die nächstgelegene ich habe in der Lage zu bekommen, dies zu reproduzieren ist:

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

leiden Fehler heraus mit ‚ERROR:. Dem Betrieb auf gemischte SRID Geometrien‘

Wie lautet die richtige Syntax zum Auswählen von Geometrie aus einer Tabelle, die sich mit einem Punkt schneidet? Meine Tabelle, sf_blocks, sind alle Polygone.

+0

Es stellt sich heraus, ich hatte nicht die SRID, die erforderlich ist. Um zu verdeutlichen, ist "the_geom" ein Polygon. – nym

Antwort

5

Die Funktion ST_GeomFromText benötigt ein zweites Argument - die SRID. Also, wenn Ihre sf_blocks Schicht in Lon/Lat ist, WGS84 dann ist der EPSG Code 4326. In diesem Fall

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

sollte es tun. Wenn sich der Layer sf_blocks in einem anderen Koordinatensystem befindet (und die Punktkoordinate Lon/Lat zu sein scheint), sollten Sie ST_Transform um den GeomFromText-Teil verwenden.

1

st_transform können Sie in andere SRID transformieren, geben Sie es im Internet nachschlagen. 4326 ist am üblichsten ... Sorry, Zeit fehlt, um eine Antwort vollständig zu schreiben, wird in einem Stück bearbeiten.

edit..just zu bestätigen 'the_geom' in Ihrem Beispiel ist ein Polygon oder Multipolygon?

Verwandte Themen