このスレッドを読む将来の人のためにこれを追加します。
この問題を掘り下げ、ポイントコール間の完全な距離を取得するために私が学んだすべてはここにあります。
最初の問題は、RasterCatalogの静的な性質から生じました。これが基づいているラスターを変更しても、RasterCatalog内のラスターは変更されません。私たちのものは海岸線地図のどこにもない古いバージョンを持っていることが判明しました。教訓:基になるラスターを変更するたびにRasterCatalogを再構築する。
ウェイトが追加された距離ラスターは、扱いにくくなります。次のシナリオを見てください。ラスターの元の値は、1つの合計距離が117 kmです。セルのサイズは1メートルです。ラスタの加重値が48の場合、見たい距離の合計は117 km * 48になります。したがって、CostDistanceメソッドの距離は、セル距離ではなく重み付けされた距離であり、各セルの合計が合計距離として渡される値になるまで、各セルの値を追加しているようです。セルサイズ自体が1メートルでも!!!
距離ラスターはすべて原点に焦点を合わせています。したがって、CostDistanceルーチンを呼び出すときに、そのリストに起点を含めたくありません。実行すると、距離が0の1つのポイントが取得されます(ESRIのサポートも問題になります)。
多くの方法ではエンベロープを使用してプロセスを制限していますが、最も高価な2つの方法は、ラスターに値を設定し、ポリゴン内の領域なしでラスターを抽出します。すべてのエンベロープ設定を無視し、これを常にラスター全体に自動的に適用します。残念ながら、これを短くするには、重複する大規模なセグメントを作成し、セグメントを特定のボックス領域に割り当てる必要があります。ただし、そうする際には、プライマリ操作領域が間違ったオーバーラップ領域に存在しないように注意する必要があります(これは難しい)。(つまり、すべてのオーバーラップは、主要な関心のあるポイントを含まないように慎重に選択する必要があります!)これは、RasterCatalogをナビゲートして、選択したCoast Guardステーションが存在する場所に基づいて正しいラスターを選択するためです。プロセスをさらに複雑にするために、オーバーラップは、マップの端から外れることなく、起点から最大120 km離れてナビゲートし、他の主要な主要ポイントと重ならないようにする必要があります。シーッシュ。
私が学んだ他の唯一のことは、ラスターに数学で計算するのは簡単ですが、ラスターに「穴を開ける」(障害物)、または値でドーナツを設定し、ドーナツの内部に値1(ロックのような遅延)の場合、ツールとArcObject呼び出しの複雑な組み合わせになります。これは、最後に学んだ教訓につながります。ArcObjectsはすべてを実行できるわけではありません。そのため、私は時々、すべてPythonで作成された、遅くて扱いにくいツールで物事を行うことを強いられます。また、ESRIツールの開発者は一貫性の維持について何も知らないことも学びました。時々彼らはラスターデータベースを取得し、時にはラスターを必要とし、時には機能セットを必要としました。そして、それらは入力として必要なのと同じ形式でデータを返しません!
混乱していますか?心配しないで、それはESRIです。