緯度/経度バウンディングボックスによるPostGISの選択


18

地図に描かれたボックスから、minLat、minLong、maxLat、maxLongがあります。現在、ボックス内のすべてのポイントを取得するためのクエリは次のようになっています。

SELECT *
FROM geomTable
WHERE (longitude BETWEEN minLon AND maxLon)
AND (latitude BETWEEN minLat AND maxLat)

lat / long列の代わりにgeometry列を使用して結果を取得したい。私はこのクエリを試しました:

SELECT *
FROM mytable
WHERE mytable.geom && ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326);

この投稿から:postgisを使用して境界ボックスを選択しますが、結果が返されません。

postgisのジオメトリを使用して最小および最大の緯度/経度で作成されたボックス内のすべてのポイントを選択する方法の例はありますか?


使用しているPostGISのバージョンは何ですか?
マッパーズ

私のPostGISはバージョン2.0.1
bl8rchk

2
両方のgeom列は同じSRIDにありますか?
ニックス

私のアプローチでは大丈夫かもしれません... geomカラムは1つしかありません。SRIDは2223
bl8rchk

@ bl8rchkテーブルgeomTableとフィールドはmytable.geom何ですか?
theartofbeing

回答:


16

データは緯度経度ではないため、ボックスをデータの座標空間にプッシュする必要があります。

SELECT *
FROM mytable
WHERE 
  mytable.geom && 
  ST_Transform(ST_MakeEnvelope(minLon, minLat, maxLon, maxLat, 4326), 2223);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.