これはおそらく簡単な質問ですが、私はPostGISにはあまりよくありません。Postgisの2つのポイント間の距離は、srid 4326(メーター単位)で
基本的に私はPOINT列(point
)を持つテーブル(nodes
)を持っています。私は列が、私は、フォーム(緯度、経度)でのデータを追加しているので、私はSRID 4326を使用しています
select addgeometrycolumn('nodes', 'points', 'POINT', 4326, 2)
を使用して作成されたこのコラム
create index nodes__points on nodes using gist (point)
にインデックスを作成しました。 (すなわち、ダブリン、アイルランドの位置がlat = 53.353 lon = -6.264(これはGeomFromText('POINT(-6.264 53.535)')
で追加されました)の座標系です)。
ポイントごとに、そのポイントを中心にほぼ1kmのボックス内にあるすべてのポイントを検索したいのですが(selcet a.id, count(*) from nodes as a, nodes as b where SOME_DISTANCE_FUNCTION_HERE(a.point, b.point, 1000) group by a.id;
)正確である必要はありません。大雑把な人間的な数字です。 1キロの円で結構です。それは正確に1キロ、マグニチュードのちょうどその順序である必要はありません。
ST_Distance
/ST_DWithin
の/ etc。すべて4326/WGS64のためにそれほど度(あるSRIDの単位を使用します1 = 1度の緯度/経度)
メートルを使用できるST_distance_sphere
とst_dwithin
を試しましたが、それを行うとexplain
インデックスが使用されていないことを示します。
私はお望みのものを得るにはどうすればと地理的なインデックスを使用できますか?
UPDATE:これはPostgreSQL 9.1およびPostGIS 2.0 svn buildです。
おそらくいくつかの助けを:[ST_DWithinはなぜ、メートル、度などのパラメータを取りません?](http://stackoverflow.com/questions/8444753/st-dwithin -takes-parameter-as-degree-not-meters-why) – radek
義務的な質問:PostGISのバージョンは何ですか? PostgreSQLのバージョン – filiprem