1

ローカルに保存された空間データを使用して、ジオロケーションを使用したiPhoneアプリケーションを開発したいと考えています。

このようなアプリケーションのトリッキーな部分は、「自分の周りのx個の最も近いポイントが欲しい」という要求への応答です。これは、データを並べ替える必要があり、並べ替えの基準が球上の距離であるためです(はい、地球は平らではありません^^)。したがって、効率的なアルゴリズムは非常に複雑です。

空間データは私のアプリケーションにローカルに保存されているため(したがってsqlLiteを使用)、MyGisやPostGisなどのライブラリを使用することはできません。SqlLiteで「SpatiaLite」を見ましたが、iPhoneで使うのはあまり便利ではないようです。

誰もがそれを簡単に行うためのライブラリを知っていますか?...またはこのタスクを実行するための便利な方法ですか?

4

1 に答える 1

1

SQL クエリでは、指定したポイントと保存されている各ポイントの間の距離を計算し、その値で結果を並べ替え、最初の x 行を返す必要があります。

データポイントがいくつあるか、またはそれらがどのように分散しているかは述べていません。これが大規模なデータセットである場合、このアプローチは高価になり、計算する前にポイントの可能性のあるサブセットを特定する方法を検討する必要がありますすべての距離、および/またはキャッシング/事前計算技術により、同じ場所にいるユーザーの同じ情報を何度も計算することを防ぎます。基本的にすべてのデータ行で関数を実行するため、インデックスは使用できません。

2 点間の距離を計算する方法については、参考文献がたくさんあります。

http://www.mathopenref.com/coorddist.html

データが特に精度に敏感でない限り、地球の球状の性質は距離に大きな影響を与えませんが、そうである場合は、高度の変化など、実際の距離にも影響を与える他の要因があります。

于 2011-01-05T10:21:08.073 に答える