对我来说,正如您的问题所暗示的那样,我大量使用Python来实现批处理的自动化,特别是创建可重复的专家计算。如今,我不使用ArcPy,因为我负担不起作为自由GIS顾问的ESRI许可证。我经常使用GDAL / OGR,Shapely,PostGIS,Numpy和SciPy,尽管我列表中的所有内容都可以使用ArcPy来完成(其中有些是可以做到的)。示例包括:
- 导出整个英国的区域统计信息,首先需要镶嵌两种不同数据类型的20km栅格图块,在这些栅格上执行一些“映射”,合并10km矢量多边形图块的等效面积,计算结果的区域统计量在输出到逻辑目录结构中的shapefile并刻录到客户端的CD之前,先对栅格mapematics进行栅格处理,然后将统计信息表与原始矢量数据结合起来。
- 沿道路或轨道每100m执行一次可见性计算,然后将计算结果分配为路线数据中的M值。
- 通过镶嵌/合并栅格和矢量数据的图块,裁剪到所需区域然后转换为专有(非GIS)3D格式的自动化过程来创建3D景观模型。我在兼职工作中经常使用为此开发的Python小库。
- 我在一个团队中进行的一个大型项目使用ArcPy创建批处理流程,以将GIS数据中的新数据转换或导出为一种格式,该格式可以由程序性计算机游戏资产生成器使用。批处理“从属驱动程序”也用Python编写并通过Django运行,从而调用了地理处理脚本。
- 即使对于小任务,Python也是非常有用的,特别是在有重复的地方(例如,逐个特征处理)。通过版本10中提供的流控制功能,ArcGIS的Model Builder有了很大的改进,但是即使如此,它仍然经常无法提供必要的控制,并且/或者仅用ArcPy编写流程比尝试使用该流程更快,更容易。强大的模型生成器。
- 我在Python中创建了一个工具来执行扫掠路径分析(以计算很长的车辆是否可以遵循给定的路线,以及拖车在建筑物之间可能会急转弯的位置。这是自由职业者的另一种专业工具兵工厂。
- 从Mapnik产生输出
- 在ArcGIS成为多线程之前,我使用Python允许我生成子流程,这些子流程有时可以加速长而缓慢的计算,而不会导致ArcMap的开销使内存混乱。
商业地理处理中的Python很棒,因为您具有Python提供的所有脚本的速度和简洁性,以及处理已编译的C样式代码所提供的速度,因为在解释Python的同时,它主要是在后台调用已编译的C样式代码。Python提供了可以将大量顺序地理处理任务结合在一起的粘合剂,上面的列表只是我个人使用它的一些东西的小快照。在“过去的美好时光”中,我们将设置一个Watch文件,并让ArcInfo记录我们的命令行输入,然后清理AML(谁记得Arc Macro Language!),以便将可重复使用的地理处理过程与AML粘合在一起。这些天没有什么不同,除了我们使用Python或C#作为粘合剂。