J'ajoute ceci pour quiconque à l'avenir lira ce fil.
Voici tout ce que j'ai appris en creusant ce problème et en obtenant une distance complète entre les points d'appel.
Notre premier problème provenait de la nature statique de RasterCatalog. La modification des rasters sur lesquels cela est basé ne modifie PAS le raster dans le RasterCatalog. Il s'est avéré que la nôtre avait une version ancienne qui n'était nulle part près d'une carte du littoral. Leçon apprise: Reconstruisez le RasterCatalog CHAQUE FOIS que vous modifiez les rasters sur lesquels il est basé.
Le raster de distance avec des poids ajoutés devient une chose assez lourde à utiliser. Regardez le scénario suivant: La valeur d'origine du raster est 1 distance totale que je veux regarder est de 117 km. La taille des cellules est de 1 mètre. Si le raster est maintenant une valeur pondérée de 48, alors la distance totale que je veux regarder devient 117 km * 48 !!! Ainsi, la distance dans la méthode CostDistance n'est pas la distance des cellules mais la distance pondérée, apparemment en ajoutant la valeur dans chaque cellule jusqu'à ce que la somme de chaque cellule = la valeur transmise pour la distance totale. Même si la taille de la cellule elle-même est de 1 mètre !!!
Le raster de distance est concentré sur un point d'origine. Ainsi, lorsque vous appelez la routine CostDistance, vous ne souhaitez pas inclure le point d'origine dans cette liste. si vous le faites, vous obtiendrez un point avec une distance de 0. (ce support ESRI même perplexe)
Alors que de nombreuses méthodes utilisent l'enveloppe pour restreindre leur processus, les deux plus coûteuses, en définissant une valeur pour le raster et en extrayant un raster sans zone dans un polygone, ignorent tous les paramètres d'enveloppe et l'appliquent toujours automatiquement à l'ensemble du raster. Malheureusement pour nous, nous ne pouvons que raccourcir cela en créant des segments qui se chevauchent massivement et en affectant un segment à une zone spécifique. Mais ce faisant, nous devons faire attention (ce qui est difficile) à ce qu'une zone d'opération principale n'existe pas dans la mauvaise zone de chevauchement. (en d'autres termes, tous nos chevauchements doivent être soigneusement choisis pour ne contenir aucun point d'intérêt principal!) La raison en est que nous naviguons dans le RasterCatalog en choisissant le raster correct en fonction de l'emplacement du poste de garde côtière choisi. Pour compliquer davantage notre processus, le chevauchement doit nous permettre de naviguer jusqu'à 120 km de notre point d'origine sans sortir du bord de la carte et ne pas chevaucher d'autres points d'intérêt principaux. Sheesh.
La seule autre chose que j'ai apprise est qu'il est facile de faire des calculs mathématiques sur le raster, mais lorsque vous voulez `` percer un trou '' dans le raster (blocages) ou définir un beignet avec une valeur et l'intérieur du beignet ayant un valeur de 1 (retards comme un verrou) vous vous retrouvez avec une combinaison complexe d'outils et d'appels ArcObject. Ce qui conduit à la dernière leçon apprise: ArcObjects ne peut pas tout faire. Je suis donc parfois obligé de faire des choses dans les outils lents et lourds qui étaient tous écrits en python. J'ai également appris que les développeurs d'outils ESRI ne savaient rien du maintien de la cohérence. Parfois, ils prenaient une base de données raster à d'autres moments, ils avaient besoin d'un raster et parfois ils avaient besoin d'un ensemble de fonctionnalités. Et ils ne renvoient pas les données dans le même format dont ils ont besoin en entrée!
Confus? Ne vous inquiétez pas, c'est ESRI.