基于Python的Arcgis地理处理应用研究
作者:田学志
来源:《计算机光盘软件与应用》2013年第07期
摘要:本文针对时下流行的编程语言python在arcgis地理处理中的应用研究作了一个较为完整的探究,结合ESRI公司的Arcpy类库在Arcgis环境下进行各类地理处理开发,给相关GIS从业人员提供一个解决实际工作问题的新方法。 关键词:python;arcgis;地理处理开发;应用;研究
中图分类号:TP311.11文献标识码:A文章编号:1007-9599 (2013) 07-0000-02 1GIS地理处理应用研究现状
地理处理是各类地理处理过程的统称,指各类空间分析、地图分析等的应用总和。地理处理是GIS应用的重要组成部分。目前多数GIS用户在需要用到地理处理过程时往往都是使用一些GIS软件提供的现有地理处理工具来进行应用,如Arcgis、MapInfo等商业软件,也有一些开源软件,如Quantum Gis等。
但是地理处理应用要求是多元化的,有时是跟具体业务工作紧密相连的,因此,在实际工作中,多数GIS用户已经开始使用商业GIS软件提供的脚本语言开发适合自己工作需要的工具。
2Python简介
Python是一种简单易学,功能强大的编程语言。ESRI从Arcgis 9版本中开始引入Python语言,Esri已选择该语言作为首选脚本语言。 3Arcpy—Python与Arcgis结合
ArcPy是一个以arcgisscripting模块为基础并继承了arcgisscripting功能进而构建而成的站点包。目的是为以实用高效的方式通过Python执行地理数据分析、数据转换等。ArcPy站点包随ArcGIS一起安装。 ArcPy的应用
在使用ArcPy之前,首先要对地理处理环境进行一些基础设置。地理处理环境设置是影响工具执行结果的附加参数。
示例:对地理数据库中的要素内容进行编辑
龙源期刊网 http://www.qikan.com.cn
import arcpy
arcpy.env.workspace=r\"C:\\Users\\sh\\Documents\\ArcGIS\\Default.gdb\" print \"修改之前:\"
Cur=arcpy.SearchCursor(\"城市名\",'人口 for row in Cur:
aa = row.getValue(\"name\") bb = str(row.getValue(\"人口\")) print \"%s,pepole:%s\"%(aa,bb) print \"修改之后:\"
Cur=arcpy.UpdateCursor(\"城市名\",'人口 for row in Cur: row.setNull(\"人口\") Cur.updateRow
aa = row.getValue(\"name\") bb = str(row.getValue(\"人口\")) print \"%s,pepole:%s\"%(aa,bb) 结果如下: 修改之前: 长春市,pepole:99 吉林市,pepole:88 辽源市,pepole:55 白城市,pepole:55
龙源期刊网 http://www.qikan.com.cn
修改之后:
长春市,pepole:None 吉林市,pepole:None 辽源市,pepole:None 白城市,pepole:None
4使用Python和Arcpy创建自定义Arctoolbox工具
在创建自定义工具的时候,首先必须创建一个自定义工具箱。然后右键单击你创建的工具箱,选择添加Script之后,会弹出一系列向导窗口,按照需要填入所需信息之后就完成了自定义工具的创建。以一个小工具为例: Tool Name:ExprotToPDF
Description:Export lots of mxd files to PDF files and Merge them to one file finally. import arcpy,os #ExportToPDF
def MergePDF(inDir,outDir,fileName): arcpy.env.workspace=inDir lists=arcpy.ListFiles(\"*.pdf\")
pdfFile=arcpy.mapping.PDFDocumentCreate(outDir+\"\\\\\"+fileName+\".pdf\") for lst in lists:
pdfFile.appendPages(inDir+\"\\\\\"+lst) os.remove(inDir+\"\\\\\"+lst) pdfFile.saveAndClose() def ExportToPDF(inDir): arcpy.env.workspace=inDir
龙源期刊网 http://www.qikan.com.cn
lists=arcpy.ListFiles(\"*.mxd\") for lst in lists:
mxd=arcpy.mapping.MapDocument(inDir+\"\\\\\"+lst)
arcpy.mapping.ExportToPDF(mxd,inDir+\"\\\\\"+str(str(lst).split('.')[0])+\".pdf\") del mxd del lists
#The main funtcion
inDirectory=arcpy.GetParameterAsText(0) outDirectory=arcpy.GetParameterAsText(1) fileName=arcpy.GetParameterAsText(2) ExportToPDF(inDirectory)
MergePDF(inDirectory,outDirectory,fileName) 5总结
尽管Arcgis提供了非常丰富的地理处理工具,但是在具体工作实践中,常常需要根据非常特定的专业业务需要定制适合问题解决的地理处理工具,Python在Arcgis地理处理框架中占据非常重要的位置,这也是为什么Arcgis10.1以后,就不再支持vba脚本了,ESRI已经首选Python作为其产品中的唯一脚本语言。 参考文献:
[1]马亚军Python API在ArcGIS 10地理分析中的新进展[J].2011. [2]Drew Flater.Extending ArcGIS With Python[J].ESRI,2011.
[作者简介]田学志(1979.10-),女,吉林省镇赉县人,黑龙江农业工程职业学院,网络技术教研室主任,中级,学士学位,研究方向:网络安全、网站构建与开发。
因篇幅问题不能全部显示,请点此查看更多更全内容