原文:使用Python在ArcGIS中编程杂谈
作为一名GISer,编程能力是必不可少的。学习编程说起来容易做起来难,特别是不知道从哪里开始。本文主要是指引你开始使用针对GIS的Python编程。
在我看来,Python可以作为GISer的第一门语言,以后再学习更多语言。从初学者的角度来看,不建议立即开始学习许多语言,而是根据你的目标做一个选择,并为之付出时间努力学习。Python是学习GIS开发的很好选择,因为使用Pytohn既可以快速编写脚本,也可以构建复杂的应用程序。在Arcgis中,python可以用于自动化任务也可以调用API编写应用程序。本文主要介绍Python编写ArcGIS脚本。
首先,我建议先学习Python的基础知识。为了能够在GIS中使用Python,需要了解Python语法、数据类型、命令、内置函数、循环等。如果您不熟悉编程,那么一开始可能会遇到很多困难,因为Python有很多内置功能。当然也没必要深究所有的知识点——有了一些基础知识,就可以在GIS中使用Python了。建议学习如何在IDE中查看帮助文件,并列出可用的方法、功能和模块,而不是去翻外部帮助文件。你让你节约更多时间。
对于python初学者来说,有很多免费的python初学者教程可以在线学习,几乎所有的教程都会教你:字符串、函数、数据类型、语法,这些都是很重要的。但是可以跳过面向对象编程的理论,因为对于python脚本来说,可以不知道这一点。如果要使用Python开发GIS应用程序时,再来学习也无妨。
此时,必须要在你的计算机上先安装一个本地版本的python(www.python.org),或者也可以选择一个在线IDE,例如python fiddle,可以通过Web浏览器编写和运行python的。无论您选择什么方式,都可以选择不同的python版本——建议GISer学习python 3,因为这是趋势。然而,这并不意味着python 2没有任何价值,恰恰相反:例如,arcgis desktop使用python 2,并且很可能会持续一段时间。要了解两个版本之间的差异,可以自行搜索引擎。
如果计算机上安装了Arcgis dektop,就会自动安装python,并且预装了 IDLE(python-gui)。可以直接在里面编写代码。按Enter键执行代码并打印结果。
学习任何语言都一样,都必须做大量的实践。一旦熟悉了基础知识,就应该研究一下Python脚本的工作原理,学习编写和运行脚本和使用交互式Python解释器之间的区别。由于这在许多在线课程中没有涉及,这可能需要一些在线搜索,搜索技能对于GISer来说时必备的。
建议使用IDE(集成开发环境)编写和运行Python脚本。这只不过是一个作为代码编辑器工作的软件,使您能够编写、运行、调试和保存代码。可以在电脑上下载和安装(免费)IDE(如pythonwin),并从中编写、运行和调试脚本。IDE是编写代码的首选位置,因为它们可以帮助您将代码着色为不同的颜色,从而更容易发现错误。
在这里,您可能需要检查一下Python的一些内置功能,例如Python安装附带的标准库中的math模块,它是Python安装附带的。处理简单的数学问题是GIS和Python的重要组成部分。由于python支持GIS中的几何图形对象,因此了解这个库中可用的几何图形是很重要的。具体可以参考python的帮助文档。其他在以后会有用的技能包括:使用python将数据写入新文件、正确设置源数据路径、如何在python中正确地写入SQL语句、使用“try and except”代码块以及了解各种错误消息。
在进行了一些基础Python练习后,就继续前进在Arcgis中使用Python了。ArcGIS用户(包括ArcMap和ArcGIS Pro)里主要使用ArcPy包来处理地理问题,里面包括了所有地理处理功能。要特别主义的是,Arcgis Pro使用python 3,而Arcmap使用版本2。ArcGIS了的python窗口是一个很友好的交互式帮助窗口,可以通过指定工具的参数,自动完成功能,帮助编写代码,从而节省大量时间。这是学习arcpy的好方法,应该是你的第一步。一旦你确信使用arcpy,试着用本地GIS数据编写一些独立的脚本,运行它们,看看会发生什么。
有一些常识还是很重要的:文件名和路径拼写错误很常见,这可能会导致错误。即使一个python脚本已经被IDE正确地检查了错误,它也可能包含错误,比如拼错的文件名、路径、命令和工具。错误地使用大写也是一个常见的错误,而python对此非常敏感。您可以通过让脚本打印消息来控制脚本的进程,以查看进展情况。如果脚本终止时没有错误,可以打开arcmap中的结果窗口。如果输出不符合预期,则代码可能有问题。
为了熟悉arcpy和python脚本,有很多在线教程。同样,从基础开始,然后再慢慢处理更复杂的问题。arcgis帮助文档是学习arcpy的很重要的资源,里面也有大量带有注释的示例脚本和示例数据。
有了一些Python经验,您可能会有兴趣知道下一步要做什么。在深入研究其他语言和/或框架之前,可以改进当前Python代码,例如通过在可能的情况下对其进行重构。寻找新的地理空间模块,使您的编码工作更容易。相互比较其他人的工作,并使用其他人的良好编码习惯来改进您的工作。
上面描述的学习路径是耗时以及迭代——你´就会发现自己会在不同阶段之间来回,每天学习新东西。但它也很有趣,充满惊喜。你学得越多,练得越多,就越容易。最后也可以想想其他许多地理空间库,也可以学学R语言。
在学习了Python和使用ArcGIS的Python脚本和编程之后,有许多选项可以继续您的GIS编程之旅。这里列出了一些选项。比如Esri发布的ArcGIS Python API为例。这个API支持在web上使用Python和地图,将其应用扩展到桌面GIS之外。ArcGIS JavaScript API是另一种编程语言,它允许通过浏览器与地图进行交互。由于web技术无处不在,学习Python之后的下一步最好是从HTML CSS开始,然后转到JavaScript。熟悉基础后,你会发现JavaScript还提供了许多有用的库和值得学习的框架。
(Eric van Rees)