ランダムに生成されたポイントがマップ上でどの領域に該当するかを特定するにはどうすればよいですか?私はすでにstackoverflowにこの質問を投稿しましたしかし、答えを得る可能性が高いため、コミュニティに指摘されました。 私の問題が伴うものの絵の表現もあります。
基本的に、私はいくつかの長方形の領域で構成される「マップ」を持っています。 各長方形領域のすべての頂点(x_min、x_max、y_min、y_max)の座標にアクセスできます。
そのマップのどこかにあるポイントをランダムに生成します。 その点の座標(xとy)を知っています。 私が解決したい問題は、ポイントがどの領域にあるかを見つけることです。
私が行ったことは、ポイントのx&y座標がすべての領域のx_minとx_max、およびy_minとy_maxの間にあるかどうかを、1つずつチェックする大きな条件ステートメントを通過することです。 ただし、これを行うには、よりスケーラブルで一般化可能で効率的な方法が必要だと思いますが、少なくとも別のプログラミング言語のライブラリにないものでは、そうする方法を見つけることができません。 地図を半分に分割し、ポイントの半分がどこにあるかを調べ、その半分のすべての領域をカウントし、残りの領域が1つあるかどうかを確認し、残っていない場合は、マップをもう一度半分に分割することを考えました。もう一度プロセスを実行します。 それをどのように実装できるか、そしてそれが現在の方法よりも実行可能かどうか、またはそれよりも優れているかどうかについて、私にはよくわかりません。
スクリプティングウィンドウズRe:ランダムに生成されたポイントがマップ上にある領域を特定するにはどうすればよいですか?タイル状の長方形領域のアルゴリズムを発明する場合は、KDTable関数を使用して、すべてのコーナーポイントをテーブルにロードします。 このようなもの:
one to four rectangles share each corner1つから4つの長方形が各コーナーを共有します
KDTableは、クエリされたxy位置に最も近いコーナーを効率的に認識します。 そのポイントを共有するすべての長方形の別のテーブルを保持する場合は、最大4つまでチェックする必要があります。 データの順序によっては、
KDTableは、Kディメンションで、説明したことをほぼ実行しています。 xyデータの場合、K == 2。
Re:ランダムに生成されたポイントがマップ上にある領域を特定するにはどうすればよいですか?または多分それは難しいです。
This will find the wrong corner.これは間違ったコーナーを見つけるでしょう。
Re:ランダムに生成されたポイントがマップ上にある領域を特定するにはどうすればよいですか?どのくらいの解像度が必要ですか? 10K x 10Kのビットマップで十分で、ポリゴン数が16E6未満の場合は、長方形を一意の色(2 ^ 24色は1600万色)でビットマップに描画し、丸められたxyピクセルを即座にクエリできます。 私はそのようなことをしましたESP32クロックのJSLBLOBタイムゾーンマップでのgpsルックアップ用。 私の場合、タイムゾーンの境界に近い1〜2マイルの解像度を取得しました。小さなコンピューターに合うようにビットマップをランレングスエンコードできるほどの速度は必要ありませんでした。
編集:どうやら私はビットマップをこれほど大きくしました
composition = J( 16000, 30000, 0 );
メモリが不足するか、大きくなるとピクセル制限を超えました...緯度+/- 90度に16000を使用し、経度+/- 180度に30K(32Kではない)を使用しました。これは非圧縮でGBを超えています。 JPGではなくPNGファイルが必要です。 JPGは色を保持しません。