2012-05-09 9 views
5

私はCartoDB.com(クラウドがホストしている空間データベース)上のPostGISとある点を交差するすべてのジオメトリを見つける方法を探しています。ポイントを交差するすべてのジオメトリを見つける

私はこれを再現するために取得することができた最も近いです:残念ながら

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

と、このエラーが出て「ERROR:操作混合SRIDのジオメトリ上の」

ポイントと交差するテーブルからジオメトリを選択する正しい構文は何ですか?私のテーブルsf_blocksはすべてポリゴンです。

+0

私はSRIDを持っていないことが判明しました。これは必須です。 明確にするため、 'the_geom'はポリゴンです。 – nym

答えて

5

関数ST_GeomFromTextは、2番目の引数、つまりSRIDをとります。だからあなたのsf_blocks層はロン/緯度、WGS84であるならば、EPSGコードは、この場合、4326

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

でそれを行う必要があります。 sf_blocksレイヤーが他の座標系にある場合(ポイント座標がLon/Latのように見える場合)、GeomFromTextパートの周りにST_Transformを使用することになります。

1

st_transformを使用すると、他のSRIDに変換してWeb上でルックアップすることができます。 4326が最も一般的です。悲しい、答えを完全に書く時間がない、少し編集するでしょう。

edit ..あなたの例で 'the_geom'がポリゴンかマルチポリゴンであることを確認しますか?

関連する問題