ファイルジオデータベースにかなり大きなポイントフィーチャクラスがあります(最大4 000 000レコード)。これは、100mの解像度を持つ通常の点のグリッドです。
このレイヤーで一種の一般化を行う必要があります。このために、各ポイントが4つの「古い」ポイントの中央にある新しいグリッドを作成します。
* * * *
o o o
* * * *
o o o
* * * *
[*] =元のグリッドのポイント-[o] =新しいグリッドのポイント
新しい各ポイントの属性値は、古いグリッドの4つの近傍の重み付けされた値に基づいて計算されます。したがって、新しいグリッドのすべてのポイントでループし、それらのそれぞれについて、(属性テーブルのXとYの値を比較することによって)隣人を見つけるために、古いグリッドのすべてのポイントでループします。4つのネイバーが見つかったら、ループから抜け出します。
ここには方法論的な複雑さはありませんが、私の問題は、私の最初のテストに基づいて、このスクリプトが完了するまで数週間続くことです...
それをより効率的にする可能性はありますか?私の頭の上のいくつかのアイデア:
- フィールドXとYにインデックスを付ける=>私はそうしましたが、大きなパフォーマンスの変化に気づきませんでした
- 属性ベースのクエリではなく、空間クエリを実行して近傍を検索します。それは実際に役立ちますか?ArcGISのどの空間関数がその仕事をするべきですか?たとえば、新しい各ポイントをバッファリングすることがより効率的であるとは思えない
- フィーチャクラスをNumPy配列に変換します。それは役に立ちますか?私はこれまでNumPyをあまり使用していないので、誰かが処理時間を短縮するのに本当に役立つと私に言わない限り、それについて詳しく知りたくありません。
- 他に何か?