4

通りを定義するノードのセットがあります。各ノードには緯度と経度があります。また、緯度と経度のユーザーの場所もあります。私の意図は、ノードの各ペアによって定義されたセグメントのボロノイ図を作成し、次にどのノードのユーザーの場所に最も近いかを見つけることです。

このタスクはCGALライブラリで実行できるようです。私がiOS環境用にコンパイルしている間、おそらく皆さんは、iOSに対してすでにコンパイルされている、または最初からObjectiveC環境で使用することを目的としたライブラリへのリンクを提供できるでしょう...

CGALをコンパイルしても困ってしまうのではないかと心配です。ありがとう!

PSまた、おそらくあなたはより良い解決策を念頭に置いています。ここで自由に綴ってください。

4

2 に答える 2

3

私はCGALを使ったことがないので、自分のソリューションが優れているかどうかについてコメントすることはできません。

しかし、私はspatialiteライブラリを使用して同様のことを行いました。Spatialiteはsqliteの上で実行されます。これを使用するときは、iPhoneに付属のsqliteライブラリを使用せずに、spatialiteを含めてすべてを最初から再コンパイルすることをお勧めします。データベースにデータがあれば、ST_Distanceなどの関数を使用してクローズセグメントを見つけることができます。

SpatialiteはR*-Treesを空間インデックスに使用します。ルックアップは非常に高速です。

于 2010-12-28T00:05:07.407 に答える
0

CGALはめちゃくちゃです(委員会の設計とC ++、常に危険です)、私見。浸透するのは難しいです。

しかし、デバイス上でボロノイ図を計算する必要がありますか?データセットがストリートデータの場合、それほど変更されない可能性があり、デバイス外で事前に構築できます。

最後に、ボロノイ図は強力な構成ですが、ここではやり過ぎかもしれません。大きなライブラリを含めたくない場合は、単純なヒューリスティックで十分な場合があります。ストリートセグメントに沿ってポイントを配置します。ユーザーの場所を指定して、最も近いストリートポイントを見つけます(たとえば、kd-treeを使用して-実装が簡単で、高速で、多くの実装が利用可能です)。それらを使用して、セグメントの候補セットをテストし、最も近いものを見つけます。

于 2011-01-21T15:41:39.513 に答える