参考链接: 使用Python中的元类进行元编程

原文:使用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在ArcGIS中编程杂谈 作为一名GISer,编程能力是必不可少的.学习编程说起来容易做起来难,特别是不知道从哪里开始.本文主要是指引你开始使用针对GIS的Python编程. 在 ...

  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. arcgis栅格计算器python教程_利用Python实现ARCGIS中栅格计算器的简单功能

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

  6. python时间模块提取时间_【转载】python自动提取文本中的时间(包含中文日期)...

    import re import chardet from datetime import datetime,timedelta # 匹配正则表达式 matchs = { 1:(r'\d{4}%s\d ...

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

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

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

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

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

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

最新文章

  1. 超实用的58个office快捷键汇总,办公室人员必备!
  2. iOS Ruby出现问题,导致无法安装Pod
  3. SAP几则常用的BASIS技巧整理
  4. jQuery Mobile弹出对话框后不刷新原页面,保持原页面内容不变
  5. 中断程序_91工控ABB机器人中断程序(陷阱程序)TRAP
  6. [Linux网络编程]以太网封装格式及相关结构体
  7. 【工程项目经验】查看gcc arch编译选项
  8. 70 行 Go 代码打败 C!
  9. Java前端顺序,java种初始化顺序
  10. Visual Studio Team Architect团队的敏捷开发 (第三部分)
  11. AirPlay 投影到 Mac 看不到选项如何解决?
  12. 盛大如何再次“盛大”
  13. C# For Koyo PLC Serial Port Communication Library,C# 与光洋PLC通讯库,光洋PLC通讯,PLC通讯,光洋
  14. 绘制一张好看的散点图及pearson和spearman相关性分析的选择
  15. RPA手把手—— RPA 数据库篇 6 - MySQL 篇 2 - 增删改查 1
  16. 常用Jquery插件整理大全
  17. 在ftp服务器中上传文档的权限,ftp服务器 上传文件权限设置
  18. 基于安卓android studio的日记APP 笔记APP或者备忘录APP 设计开发
  19. imageview设置资源图片
  20. 你必须知道的html5的基本特征和用法--基础必会

热门文章

  1. 【图论】最短路学习笔记
  2. AR人工智能模型训练计算机,ar人工智能模型训练一般采用什么计算机
  3. 为什么不能生成accde_原来“转换生成语言学”就是这么回事
  4. 时针与分针的夹角的易错点
  5. Ubuntu进入pycharm创建的虚拟环境的方法(以及如果你安装了anaconda等其它修改了环境变量的东西该怎么进)
  6. 计算机网络复习题大全(各种题型)
  7. Unity3D基础14:碰撞检测
  8. 随机增量法:bzoj 1336 bzoj 1337 最小圆覆盖
  9. bzoj 2427: [HAOI2010]软件安装(Trajan+树形DP)
  10. bzoj 3632: 外太空旅行(随机)