原文:使用Python在ArcGIS中编程杂谈

作为一名GISer,编程能力是必不可少的。学习编程说起来容易做起来难,特别是不知道从哪里开始。本文主要是指引你开始使用针对GIS的Python编程。

在我看来,Python可以作为GISer的第一门语言,以后再学习更多语言。从初学者的角度来看,不建议立即开始学习许多语言,而是根据你的目标做一个选择,并为之付出时间努力学习。Python是学习GIS开发的很好选择,因为使用Pytohn既可以快速编写脚本,也可以构建复杂的应用程序。在Arcgis中,python可以用于自动化任务也可以调用API编写应用程序。本文主要介绍Python编写ArcGIS脚本。

1、学习基础知识

首先,我建议先学习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键执行代码并打印结果。

2、通过实践掌握基础知识

学习任何语言都一样,都必须做大量的实践。一旦熟悉了基础知识,就应该研究一下Python脚本的工作原理,学习编写和运行脚本和使用交互式Python解释器之间的区别。由于这在许多在线课程中没有涉及,这可能需要一些在线搜索,搜索技能对于GISer来说时必备的。

建议使用IDE(集成开发环境)编写和运行Python脚本。这只不过是一个作为代码编辑器工作的软件,使您能够编写、运行、调试和保存代码。可以在电脑上下载和安装(免费)IDE(如pythonwin),并从中编写、运行和调试脚本。IDE是编写代码的首选位置,因为它们可以帮助您将代码着色为不同的颜色,从而更容易发现错误。

在这里,您可能需要检查一下Python的一些内置功能,例如Python安装附带的标准库中的math模块,它是Python安装附带的。处理简单的数学问题是GIS和Python的重要组成部分。由于python支持GIS中的几何图形对象,因此了解这个库中可用的几何图形是很重要的。具体可以参考python的帮助文档。其他在以后会有用的技能包括:使用python将数据写入新文件、正确设置源数据路径、如何在python中正确地写入SQL语句、使用“try and except”代码块以及了解各种错误消息。

3、在ArcGIS中使用Python

在进行了一些基础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的很重要的资源,里面也有大量带有注释的示例脚本和示例数据。

4、学习更多

有了一些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)

使用Python在ArcGIS中编程杂谈相关推荐

  1. [转载] 使用Python在ArcGIS中编程杂谈

    参考链接: 使用Python中的元类进行元编程 原文:使用Python在ArcGIS中编程杂谈 作为一名GISer,编程能力是必不可少的.学习编程说起来容易做起来难,特别是不知道从哪里开始.本文主要是 ...

  2. python 脚本_基于Python的ArcGIS脚本编程知识点总结

    1. ArcGIS中的组件-ArcObjects Esri主要使用C++开发ArcGIS软件,在ArcGIS软件中,所有的组件或者对象被统称为ArcObjects. ArcObjects部分知识点如下 ...

  3. arcgis多个数据融合python_使用Python在ArcGIS中添加多个字段名

    我在想是否有人能帮我完成我的工作任务... 到目前为止,这是我的python程序--它完成了它应该做的事情.# Import system modules import sys, string, os ...

  4. 使用python在ArcGIS中合并多个图层中的数据

    #encoding=utf-8 #将当前图层列表中的多个图层的矢量数据合并到一个图层中 import arcpy mapdoc = arcpy.mapping.MapDocument("CU ...

  5. 利用Python实现ARCGIS中栅格计算器的简单功能

    1.加法操作 import arcpy from arcpy import envenv.workspace = "E:\\work\\cppservice\\RasterCalc" ...

  6. python给arcgis中图层字段批量赋值

    对于 Python 计算,必须在字段名称两边添加惊叹号 (!fieldname!). 语法格式 CalculateField(in_table, field, expression, {express ...

  7. arcgis栅格计算器python教程_利用Python实现ARCGIS中栅格计算器的简单功能

    1.加法操作 import arcpy from arcpy import env env.workspace = "E:\\work\\cppservice\\RasterCalc&quo ...

  8. arcgis的python安装包_用Python使用arcgis中站点包arcpy

    业务范围:QQ122353503---淘宝搜索店铺:小七软件园 1:MATLAB优化,数值计算,GUI界面设计/Simulink模拟仿真,模式识别等 2:电子电力系统仿真,通信,自动化,电气,FPGA ...

  9. (二十九)arcpy开发利用arcpy在arcgis中实现批量计算图斑四至坐标(polygon顶点计算,范围获取、pyhon类创建)

    首先,可以参考arcpy学习视频. https://edu.csdn.net/course/detail/25535 一.问题与解决方法 这个方法的灵感来自昨天昨天,下面来说一下实现功能. 一直以来都 ...

最新文章

  1. H5使用百度地图SDK获取用户当前位置并且标记显示在地图
  2. MySQL_update同一张表
  3. 将字符串下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出
  4. Actor生命周期理解
  5. 枚举当前环境中打开的所有IE
  6. ruby宝石区块链最新消息_Ruby宝石| Ruby工具
  7. 我的SWT与数字图像处理总结(3)—SWT如何得到图像某个位置的像素值和相应的RGB的值...
  8. P2922 [USACO08DEC]秘密消息Secret Message
  9. Servlet教程第0~3讲笔记
  10. matlab2014a vs2015,Matlab2014a使用VS2015混合编译
  11. Photoshop 抠图方法
  12. 问题 F: 求一个3*3矩阵对角线元素之和
  13. C++生日聚会(BFS)
  14. 【牛客网-公司真题-前端入门篇】——小米秋招笔试-前端
  15. 2.《THE WISDOM OF LIFE》_叔本华
  16. 【电源设计】06正激式开关电源
  17. 改善网站安全性的5种方法
  18. 基于笔画序列的中文字向量模型设计与研究
  19. 秒杀年费258的同款APP,微软、联想、Adobe、腾讯的这些良心产品太香了
  20. jquery form表单提交成功,回调方法

热门文章

  1. L1-034 点赞 (20 分)
  2. ❤️关于 idea 安装 Vue 插件后新建文件不显示 Vue Component 的问题及解决方法❤️
  3. 什么是作用域链(源码解析)
  4. CSS3动画的常见属性(CSS3)
  5. 数据库学习--DCL(数据库控制语言)
  6. Ajax到底是什么?
  7. 在datasnap 中使用unidac 访问数据(客户端)
  8. 3.9 限制root远程登录
  9. 【Computer Organization笔记17】大实验讨论:各组数据通路展示
  10. 【李宏毅2020 ML/DL】P58 Unsupervised Learning - Neighbor Embedding | LLE, t-SNE