我将为将来阅读此线程的任何人添加此代码。
这是我在深入研究此问题并获得点之间的完整距离时所学的所有知识。
我们的第一个问题源于RasterCatalog的静态性质。更改基于该栅格的栅格不会更改RasterCatalog内部的栅格。事实证明,我们的地图远比海岸线地图远。获得的经验教训:每次更改其基础的Raster时,都要重新构建RasterCatalog。
添加了权重的“距离栅格”变得相当麻烦。请看以下情况:栅格的原始值是1我要看的总距离是117 km。像元大小为1米。如果栅格现在的加权值为48,那么我要查看的总距离将变为117 km * 48!因此,CostDistance方法中的距离不是像元距离,而是加权距离,显然是将每个像元中的值相加,直到每个像元的总和=为总距离传递的值。即使单元格大小本身是1米!!!
距离栅格都集中在原点上。因此,当您调用CostDistance例程时,您不想在该列表中包括起点。如果这样做,您将得到一个距离为0的点。(这甚至阻碍了ESRI的支持)
尽管许多方法都使用“信封”来限制其处理过程,但最昂贵的两种方法是为栅格设置一个值,并提取一个多边形内没有区域的栅格,而忽略所有信封设置,并自动将其始终应用于整个栅格。对于我们来说不幸的是,我们只能通过创建大量重叠的线段并将线段分配给特定的装箱区域来缩短此时间。但是在这样做时,我们必须小心(这很难),在错误的重叠区域中不存在主要操作区域。(换句话说,必须仔细选择所有重叠部分,以使其不包含任何主要兴趣点!)其原因是,我们导航RasterCatalog,并根据所选海岸警卫队所在的位置选择正确的栅格。为了进一步简化我们的流程,重叠部分必须使我们能够在距出发点120公里的范围内导航,而不会偏离地图的边缘并且不会与其他主要兴趣点重叠。嘘。
我了解到的唯一其他事情是,对栅格进行数学运算很容易,但是当您想在栅格中“戳个洞”(障碍物)或设置一个具有值的甜甜圈并且该甜甜圈的内部具有一个值1(像锁一样延迟),最终会导致工具和ArcObject调用的复杂组合。这就得出了最后的教训:ArcObjects不能做任何事情。因此,有时我不得不用慢速,繁琐的工具(都是用python编写)来做事。我还了解到ESRI工具开发人员对保持一致性一无所知。有时他们在其他时间获取栅格数据库,有时需要栅格,有时需要要素集。而且,它们不会以输入所需的格式返回数据!
困惑?不用担心,这是ESRI。