グローバル距離クエリに使用するSRSはどれですか?


8

WGS84にたくさんのポイントがあるデータベースがあります。現在、KDtreeを使用して、NNと範囲クエリのポイントを実行するキャッシュを構築しています。重要な点は、検索半径はメートル単位で提供されることと、緯度/経度はこれらの幾何学的クエリに適したSRSではないことです。

全世界に適用でき、距離を維持できる幾何学的なSRSを探しています。10分の2メートルの誤差は気にしません。


すべてのポイントを3D xyz(ジオセントリック)座標に変換し、その上にKDツリーを構築してみませんか?距離保持されませが、球体上の距離は、クエリの目的で3Dの距離に簡単に変換されます。実際、楕円体モデルを使用して緯度経度をxyzに変換するのは非常に簡単なので、精度をまったく犠牲にする必要はありませんが、球体モデルを使用した場合でも、すべての距離は約0.3%の精度である必要があります(最低でも)。
whuber

回答:


2

「Spherical Spatial Index」のグーグルをいくつか行いました。球の三角形分解、またはボロノイタイリングを使用して、可能な方法がたくさんあります。ただし、簡単に実装できるように見える1つの方法は、ここの「3Dバウンディングボックス」セクションのように、データを3Dで考慮することです。

http://lin-ear-th-inking.blogspot.co.uk/2007/09/geodetic-data-in-postgis-spherical.html

次に、何らかの3D空間インデックスが必要です。1km以内のすべてのポイントをすばやく見つけることができます。これは1kmの3D検索半径であるため、地球の表面に沿った1kmの半径とわずかに異なりますが、小さな検索半径の場合、実質的に同じになります(計算を行って修正を行います)。

絶対精度が必要な場合は、これを最初のステップとして使用し、大円を介して距離を計算して、それらをさらに遠ざけます(球に沿った距離は常に球を通る距離よりも大きくなります)。


ねえ、それはアイデアです!私はKDTreeの別の次元で絞り込み、それで作業することができました。ただし、リワークが必要です:)
RickyA、

4

SRS / Mapプロジェクションでは、常にトレードオフになります。世界のすべての場所に適したものは本当にありません。地球が球体であると仮定することもできます。

全世界に適合するSRSを探す代わりに、距離計算アルゴリズムを探すほうがいいと思います。例としては、球面三角法に基づく大圏の距離があります。次のように仮定します。

  • 弧の1分は1海里です
  • 1海里は1.852 kmです。

式は次のとおりです。

D = 1.852 * 60 * ARCOS ( SIN(L1) * SIN(L2) + COS(L1) * COS(L2) * COS(DG)

どこ:

L1  =   latitude at the first point (degrees)
L2  =   latitude at the second point (degrees)
G1  =   longitude at the first point (degrees)
G2  =   longitude at the second point (degrees)
DG  =   longitude of the second point minus longitude of the first point (degrees)
DL  =   latitude of the second point minus latitude of the first point (degrees)
D   =   computed distance (km)

最初にデータでテストして、結果を確認することもできます。ところで、PostGISのような空間データベースを使用していますか?


さて、それがポイントです。Postgisは私にとって十分な速度ではありません。私が今していることは、すべてのポイントをredisに入れ、その上にKDtreeインデックスを作成することです。しかし、KDtreeは幾何学的ソリューションです。「半径1kのすべてのポイントを与える」のような質問をすると、幾何学的に距離が測定されます。私はそこでハバシンをすることはできません。事前にほぼ等距離のSRSに変換する必要があります。しかし、どれ?
RickyA 2012年

式で私の答えを更新しました。それが問題です。全世界に適用できる投影(幾何学的)SRS / CRSはありません。
RK

そして、最高のおおよそ?極は気にせず、ペンギンだけですが、WGS84よりも幾何学的に優れているものはありますか?
RickyA 2012年

ジオメトリの代わりに地理タイプを使用する場合、Postgisは球面をサポートします。 postgis.refractions.net/docs/...
nickves

1
@nickvesはい、私はそれを見ましたが、postgisは本当に私にとって十分に速くありません。2ミリ秒未満のレイテンシが必要で、1秒あたり1000リクエストを処理できるはずです。でも
postgis
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.