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

1.7 Python脚本实例

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

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

该脚本工具类似于工具集中的工具。尽管它是用Python编写的,但是它的访问方式和其他地理处理工具一样,如图1.1所示。

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

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

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

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

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

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

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

如图1.5所示,在该脚本工具对话框中有很多输入参数、输出参数以及分析设置选项,这也反映了HuffModel的特性。

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

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

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

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

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

时间: 2024-08-24 11:16:03

《面向ArcGIS的Python脚本编程》——1.7 Python脚本实例的相关文章

《面向ArcGIS的Python脚本编程》——1.3 脚本语言和程序语言

1.3 脚本语言和程序语言 面向ArcGIS的Python脚本编程Python作为一门程序语言,也常被称为脚本语言.那么,两者的区别在哪里呢?一般而言,脚本语言用于控制其他应用程序以实现任务自动化:而程序语言则是用于开发结构复杂.功能完备的应用程序.脚本语言是一种"粘合剂",它可以将不同的组件组合在一起,从而实现新的功能.而系统语言既可以从头构建组件,也可以将组件组装成不同的应用程序.系统语言(例如C++和.NET)通过计算机的低级图元和原始资源从头开始创建应用程序.脚本语言(例如Py

python网络编程之读取网站根目录实例_python

本文实例讲述了python网络编程之读取网站根目录的方法,分享给大家供大家参考. 具体实现方法如下: import socket, sys port = 70 host = "quux.org" filename = "//" s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect((host, port)) s.sendall(filename+"\r\n") while(

Python多进程编程技术实例分析_python

本文以实例形式分析了Python多进程编程技术,有助于进一步Python程序设计技巧.分享给大家供大家参考.具体分析如下: 一般来说,由于Python的线程有些限制,例如多线程不能充分利用多核CPU等问题,因此在Python中我们更倾向使用多进程.但在做不阻塞的异步UI等场景,我们也会使用多线程.本篇文章主要探讨Python多进程的问题. Python在2.6引入了多进程的机制,并提供了丰富的组件及api以方便编写并发应用.multiprocessing包的组件Process, Queue, P

Scala入门到精通——第三十节 Scala脚本编程与结束语

本节主要内容 REPL命令行高级使用 使用Scala进行Linux脚本编程 结束语 1. REPL命令行高级使用 在使用REPL命令行时,有时候我们需要粘贴的代码比较大,而普通的粘贴可能会些一些问题,比如中文粘贴会出现乱码.多行代码粘贴时会出错,此时需要用到REPL的高级功能.在日常开发过程中,我们粘贴多行代码的时候会遇到下列问题: //本意是要粘贴下面两行代码 class Person(val name:String,val age:Int) val p=new Person("摇摆少年梦&q

Python并发编程介绍及实例应用

关于Python并发编程的知识,本文基本介绍到位,想深入学习Python的朋友可以参考一下. Python并发简介 我们将一个正在运行的程序称为进程.每个进程都有它自己的系统状态,包含内存状态.打开文件列表.追踪指令执行情况的程序指针以及一个保存局部变量的调用栈.通常情况下,一个进程依照一个单序列控制流顺序执行,这个控制流被称为该进程的主线程.在任何给定的时刻,一个程序只做一件事情. 一个程序可以通过Python库函数中的os或subprocess模块创建新进程(例如os.fork()或是sub

《面向ArcGIS的Python脚本编程》——1.4 ArcGIS的脚本语言

1.4 ArcGIS的脚本语言 面向ArcGIS的Python脚本编程ArcGIS 9引入了脚本处理技术,并支持多种脚本语言,包括Python.VBScritp.JavaScritp.JScritp和Perl.由于ArcGIS是基于组件对象模型(COM)构建起来的,又因为脚本语言是面向对象的,所以脚本语言可以访问ArcGIS中所有获得许可的函数,也包括所有的扩展模块.因此,脚本语言才可以高效地实现任务自动化,受到了程序员的青睐.虽然像C++和.NET这样的系统语言也能实现任务的自动化,但是与这些

《面向ArcGIS的Python脚本编程》——1.2 Python的特点

1.2 Python的特点 面向ArcGIS的Python脚本编程Python的诸多特点使它可以作为ArcGIS的脚本语言,这些特点包括以下几方面. 简单且易学.相对于其他高度结构化的编程语言(C++或Visual Basic)而言,Python更容易被掌握.它的语法简单,编程者将有更多的时间来解决实际问题,而不需要在学习Python语言上耗费太多精力. 免费且开源.Python是一款免费并且开源的软件.用户可以自由地分发该软件的复本,查看和修改源代码,或者将其中一部分代码用在其他免费的程序里.

《面向ArcGIS的Python脚本编程》——1.5 Python的历史和版本

1.5 Python的历史和版本 面向ArcGIS的Python脚本编程Python是由Guido van Rossum开发的,那时候他还在荷兰的国家数学和计算机科学研究院(CWI).1991年,Van Rossum发布了第一版Python.目前,虽然已经有很多志愿者参与到Python的维护与发展之中,但是Van Rossum在该领域仍然十分活跃.不同于其他编程语言,Python只经历了为数不多的版本更新. Python中既有字符串.列表和字典等元素,也有其他更高级的元素,例如元类.生成器和列表

《面向ArcGIS的Python脚本编程》——1.6 关于本书

1.6 关于本书 面向ArcGIS的Python脚本编程本书分为两个部分: (1)纸质版,包括了使用Python的理论知识. (2)数字版,包括了与书本对应的一套练习. 纸质版共有14章,分别解释了Python的结构和语法,介绍了如何为ArcGIS编写脚本.整本书中虽然有很多示例代码,但是书中不会一句一句地解释这些代码.随书的练习为实际操作提供了详细的指导.希望读者先学习章节的内容,然后完成对应的练习,再阅读下一章.大多数练习在最后都会有一点挑战,相信它可以提高您的能力.