2017-11-09 4 views
3

からポイントを含むポリゴンを検​​索し、地域:Iテーブルを持っている緯度/経度テーブル

| id | name  | 
|----|----------| 
| 1 | Jersey | 
| 2 | Scotland | 
... 

と(各領域の境界ボックスを定義する)RegionPointsの表:考える

| id | regionid | lat | lng | 
|----|----------|-------|-------| 
| 1 | 1  | 49.27 | -2.27 | 
| 2 | 1  | 49.27 | -1.99 | 
| 3 | 1  | 49.15 | -2.27 | 
| 4 | 1  | 49.15 | -1.99 | 
... 

緯度と経度、私は与えられた点を含む領域を探したい。

私の理解から、私はregionidによって集計する必要が、その後の照会に緯度と経度を使用ST_Contains続い 使用ST_ConcaveHullは、しかし、私の懸念は、それぞれに対して凹面船体を計算し、領域の数が多いということです非常に非効率的である。

これはPostGISを初めて使用しているため、ちょっとしたことです。

+1

リージョンをポリゴンとして保存しないのはなぜですか? – JGH

答えて

2

はい、「オンザフライ」で凹状の船体を計算することは、大量のデータでは効率が悪いことがあります。

また、ジオメトリが問合せ時に作成されるため、空間索引は使用できません。

ST_ConcaveHullの代わりにST_MakeEnvelopeを使用すると、問題が緩和されます。

しかし、JGHの示唆しているように、ST_MakeEnvelopeを使用してこれらの座標をポリゴンとしてRegionsテーブルに格納する必要があります。

空間索引を作成し、ST_Containsを使用してポイントを含むリージョンを取得するよりも、