0

すべての座標が緯度/経度のペア (10 進精度で約 10 桁) である空間データがあり、WGS84 データとしてデータベースに格納されています。境界が保存されているいくつかの小さなポリゴン。次に、後でポリゴンとの交差テストに使用するラインセグメント (各セグメントに 2 つのポイント) を作成するための多数のポイントがあります。

クエリを改善するために SpatialIndex を使用しているので、すべてのポリゴンのエンベロープをツリーに挿入します (QuadTree と STRtree の両方でテスト済み)。次に、2 つのポイントを線分に接続し、そのエンベロープを使用してツリーをクエリしています。問題は、明らかに間違っている結果としてほとんどすべてのポリゴンを取得することです..私のデータの実際のスケールについてのアイデアを与えるために、私は北アメリカ全体をカバーする約100のポリゴンをそれぞれ持っています.ラインは、単一のポリゴンの非常に小さな部分をカバーしています.理想的には、結果としてポリゴンが2つ以下になると予想されます.

私はこの計算を行うために JTS を使用していますが、球体データにはあまり適していないことを認識しています。別のライブラリ/ツールを提案して、目的の動作または可能な回避策 (たとえば、JTS を使用する前に投影する) を実現できますか?

4

1 に答える 1

0

北アメリカしかない場合は、地球を 90 度回転させて、アラスカが最東端にならないようにします。(おもしろい事実: アラスカは、米国の最北端、最西端、最東端の州です) では、長方形は問題ないはずです。

ただし、球面データを扱う場合には、多くの重要なケースがあります。データの定義方法によっては、ポリゴンの境界が実際には直線ではなく曲がった線になる場合があります。Google Ingress の次のスクリーンショットを検討してください: https://lh4.ggpht.com/S_9jrMqf08JfIbr7DgUDH96rvXMK4wOGtaSKYPGCruXv2HE4oeRuEaQIDIywMgH4198=h900

「霧」テクスチャと左側のフィールドに表示される緑色の線の不一致は、異なる近似を使用する 2 つの描画関数によるものであるとどこかで読みました。1 つは常に直線で、もう 1 つは地球の曲率に従います。大きなフィールド (ポリゴン!) がある場合、エラーはさらに悪化します。

残念ながら、データが球の表面上の非直線で構成されている場合、「交差」は扱いにくい用語になります。また、地表上の「直線」は、多くの場合、latlon 座標で arctan タイプの曲線を生成します。

プロジェクション: これらは役に立ちますが、ほとんどの場合、データがローカルの場合です。UTM 投影はかなり良好ですが、アラスカを除く北アメリカカバーするには、少なくとも 9 つの UTM ゾーンが必要です。データが1 つのUTM ゾーン内にある限り、データをこのゾーンに射影してから 2D ユークリッド空間を操作するとうまくいくはずです。しかし、これよりも大きくなると、別のプロジェクションをステッチする必要がある場合があり、それも非常に面倒です。

于 2014-04-22T11:44:40.030 に答える