且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《面向ArcGIS的Python脚本编程》——1.7 Python脚本实例

更新时间:2022-01-20 07:45:44

本节书摘来自异步社区《面向ArcGIS的Python脚本编程》一书中的第1章,第1.7节,作者:【美】Paul A. Zandbergen著,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.7 Python脚本实例

面向ArcGIS的Python脚本编程
本节将通过两个例子来说明如何使用Python编写脚本。这两个例子来源于Esri和ArcGIS的用户社区。列举脚本实例的原因之一就是为了让读者熟悉Python代码。学习编写代码的一个***的方法就是练习现有的代码。现在不要求读者能够理解这些代码,但是这些例子将会让您了解本书即将讲些什么。

例一:确定错误地址
AddressError脚本工具是由Esri公司的员工Bruce Harold开发的。该工具会在几条路段的范围内,检查路段中心线可能存在的错误。AddressError工具输出的结果是包含了所有相关街道段可能错误的线状要素,属性表将描述错误相关信息。

该脚本工具类似于工具集中的工具。尽管它是用Python编写的,但是它的访问方式和其他地理处理工具一样,如图1.1所示。
《面向ArcGIS的Python脚本编程》——1.7 Python脚本实例

脚本工具的对话框和其他常规地理处理工具的对话框一样,如图1.2所示。

《面向ArcGIS的Python脚本编程》——1.7 Python脚本实例

这个工具有10个输入参数,其中两个是可选的。输入要素通常是一个表示街道中心线的线状要素,该要素的属性表存储了一系列代表街道号码范围的属性。输出结果是一个新的要素类。

这个脚本工具只调用了一个Python脚本文件,可以打开脚本文件查看这个工具是如何运行的。在Python编辑器中打开这个脚本时,会出现如图1.3所示的界面。

《面向ArcGIS的Python脚本编程》——1.7 Python脚本实例

如果以前没有使用过Python或者其他编程语言,这些代码看起来可能有些吓人。不管怎样,这本书以及后面的练习主要是为了让读者熟悉Python的语法和逻辑,以便更好地使用ArcGIS执行相关任务。所以学完本书后,读者不仅能够理解上面的脚本,还能够写出相对复杂的脚本程序。

例二:利用Huff模型进行市场分析
Huff模型的脚本工具是由Esri的员工Drew Flater开发的。这里有一份对这个工具的简单描述可以作为这个工具的使用说明:

Huff模型是一个空间引力模型,它可以计算出不同位置的消费者光顾商店数据库中每个商店的概率。通过这些概率以及可支配收入、人口和其他变量就可以计算出不同位置的销售潜力。每个位置的概率值还可用于生成研究区各个商店的地理范围及其市场范围。

这是一个相对复杂的脚本,但是跟第一个例子一样,它也是完全由Python编写的。这个脚本也可以作为工具箱的一个工具使用,如图1.4所示。
《面向ArcGIS的Python脚本编程》——1.7 Python脚本实例

如图1.5所示,在该脚本工具对话框中有很多输入参数、输出参数以及分析设置选项,这也反映了HuffModel的特性。
《面向ArcGIS的Python脚本编程》——1.7 Python脚本实例

该脚本工具也提供了一个工具帮助文档,它详细地描述了工具是如何运行的。文档中介绍了输入参数、模型公式和输出参数,图1.6所示为帮助文档的一部分。
《面向ArcGIS的Python脚本编程》——1.7 Python脚本实例

该工具的所有代码都保存在一个Python脚本文件中,图1.7所示为脚本文件的一部分。

《面向ArcGIS的Python脚本编程》——1.7 Python脚本实例

由于Huff模型十分复杂,所以这个脚本有700多行代码。但是,这些代码所涉及的大部分元素和那些简单脚本中的元素是相同的,所以只要熟悉这些元素,就可以真正读懂一些更复杂的代码。

在学习了如何编写Python脚本后,会发现坚持学习Python脚本的***的方法之一就是练习现有的代码。练习示例代码也可以快速提高独立编写代码的能力。

注释:
两个实例来源于ArcGIS资源中心的地理处理章节。具体的位置是在Geoprocessing Model and Script Tool Gallery中。