5

CartoDB.com(クラウドでホストされている空間データベース)で、特定のポイントとPostGISと交差するすべてのジオメトリを見つける方法を見つけようとしています。

これを再現するために私が得ることができた最も近いものは次のとおりです。

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

残念ながら、これは「エラー:混合SRIDジオメトリでの操作」でエラーになります。

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

4

2 に答える 2

5

関数ST_GeomFromTextは、2番目の引数であるSRIDを取ります。したがって、sf_blocksレイヤーがLon / Lat、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を使用することをお勧めします。

于 2012-05-13T17:52:19.483 に答える
1

st_transformを使用すると、他のSRIDに変換して、Webで検索できます。4326が最も一般的です。申し訳ありませんが、回答を完全に書く時間がないため、少し編集します。

編集..あなたの例の「the_geom」がポリゴンまたはマルチポリゴンであることを確認するだけですか?

于 2012-05-09T21:23:12.043 に答える