收藏 分销(赏)

不可不知的ArcGIS Python开发.pdf

上传人:曲**** 文档编号:228953 上传时间:2023-03-18 格式:PDF 页数:44 大小:3.25MB
下载 相关 举报
不可不知的ArcGIS Python开发.pdf_第1页
第1页 / 共44页
不可不知的ArcGIS Python开发.pdf_第2页
第2页 / 共44页
不可不知的ArcGIS Python开发.pdf_第3页
第3页 / 共44页
不可不知的ArcGIS Python开发.pdf_第4页
第4页 / 共44页
不可不知的ArcGIS Python开发.pdf_第5页
第5页 / 共44页
点击查看更多>>
资源描述

1、esri不可不知的ArcGIS Python开发 内容概要 Python 基础Python简介Python的优势变量类型模块和包 ArcG IS10.1 中的 PythonPython WindowArcPy的使用 不可不知的ArcPy开发ArcPy代码库ArcPy调用GP工具ArcPy FunctionsArcPy实现类ArcPy数据管理ArcPy制图可视化Python 实现Add-inOpcri China1 I BEIJING丝1招第十届Esri中国用户大会Python基础Python简介 开源的、解释性的、面向对象的、跨平台的编程语言 把其他语言制作的各种模块轻松地联结在一起的胶水语言

2、 历史悠久,成熟稳定,具有脚本语言中最丰富和强大的类库 简洁清晰的语法,代码强制要求缩进换行 开发效率高Python的优势免费、开源、跨平台简单、优雅、面向对象丰富的模块和库加2cL管;“i皿d”,WE L”“,”,ESC晨方:能常二二二M二-print gp.GetHessagesO一,,,:一rm Y”二S NULL ROUND NCHE P Stare Tuce:Tue Jul 22 10:52:20 2006 Executed Bus工u)successfully.End Tune:Tue Jul 22 10:52:20 2008(Elapsed Time:0.00 seconds)J

3、 iVOCWOftuM擅长大量文件的批量化处理巴:/:.7.胶水特性00010 01400010 014ChinaBEIJINGPython的一些优秀应用Zope 著名的开源Web应用服务器Bit Torrent-著名的BT下载工具Gadfly-一个用Python写的面向对象关系型数据库,具有小 巧、快速、可移植性好,且开放源码。红帽(Red Hat)-曾用Python和Tk 一起成功开发配置和管理操 作系统的可视界面Microsoft IBM等用python作为原型开发,在Goolge,python是继C+、Java之后使用最多的开发语言Python的变量类型基本数据类型:字符串,整数,浮点

4、数,虚数,布尔型集合类型:列表:aList=5,7,9,ll append(x)count(x)extend(L)Index(x)insert(i,x)pop(x)remove(x)reverse()sort()元组:aTuple=(1,3,5)字典:aHash=a:aa,b:bbesri SinaPython中的模块 Python中的模块是一个以.py结尾的Python代码文件 可通过import命令导入,如:#导入ftplib模块 import ftplib#导入ftplib模块,名字定义为ftp import ftplib as ftp#导入ftplib模块中的FTP变量 from ft

5、plib import FTPesri SinaPython中的包把几个模块存放到一个目录结构中,并添加_init_.py文件,形成Python包调用方法:import WebDesign#调用包,通过目录名称 import WebDesign.design#调用包中的模块esri SinaPython中的模块和包 模块和包放在python的系统目录下,即可调用 查看python的系统目录sys.path 查看被调用的模块或包的文件路径 查看一个模块/包/类下的所有变量dir(arcpy.mapping)一个简单的Python调用二rt subprocess:it arcpy m ARCPY_

6、 1一 os as osimpL-rt sys as SYSdef arc_contour():inputIDW=ARCPY.GetParameterAsText(0)inter=ZVRCPY.GetParameterAsText(1)base=TkRCPY.GetParameterAsText(2)output=TkRCPY.GetParameterAsText(3)layer=OS.path.splitext(OS.path.basename(output)0field=arcpy.GetParameterAsText(4)pyScript=SYS.argv0toolDir=OS.path

7、.dirname(pyScript)rScript=OS.path.j oin(toolDir,Harc_contour.exen)subprocess.Popen(rScript,1-input,inputIDW,1-inter,inter,*-base,base,-ou stdout=subprocess.PIPE,shell=True).communicate()0_name_=,_main_1:arc contour()丝1招第十届Esri中国用户大会ArcGIS10.1 中的PythonArcGIS10.1中的Python1.ArcPy 包 一个 Python 包 包含对地图操作和地

8、图代数的支持 支持编辑处理和几何操作 新增更多的几何运算2.Python window 可以在ArcGIS中访问python可以灵活调用GP工具3.Python script tool可以创建自己的GP工具4.Python Addin可以利用Python创建自己的Add-in一 一C.esri Sina为什么要使用PythonPython是个非常优秀语言,简单易用Python已经与ArcGIS高度集成方便实现GIS处理流程不需要学习庞大的A0接口Python更灵活更容易重用ArcGIS Desktop扩展 已经不再支持VBAPython Window介绍ArcGIS自带的一个交互式的窗口-可以

9、使用Arcpy-可以使用任何其他的Python功能-代码的智能感知Python window 用途:-测试想法-学习实践Python型单执行GP工具-建立快速简易的工作流ChinaBEIJINGArcPy介绍是一个原生的python包-可访问800+个GP工具-ArcGIS对包中的模块,类,方法提供参考文档-可以在自己喜好的编辑器中完成ArcGIS任务-对arcgisscripting的使用者来说很熟悉是ArcGIS实现自动化处理的基石,功能有:-数据分析-数据转换-数据管理-制图自动化Oesri SinaArcPy组成基础方法(Functions)基础类实现模块制图可视化-mapping空间

10、分析-spatial 网络分析-Network analysis(10.1)数据连接-Data Access(10.1)时间-Time(10.1)丝1招第十届Esri中国用户大会不可不知的Ar cPy开发不可不知的ArcPy开发ArcPy代码库ArcPy调用GP工具ArcPy基础方法和类ArcPy数据管理 ArcPy制图可视化 其他扩展模块 Python 实现Add-in鬻 CSC SinaArcPy代码库目录所在:Desktopl0.1arcpy 计算机 System(C:)Program Files(x86)ArcGIS DesktoplO.l arcpy arcpy文件(F)的 查看(V

11、)IM(T)帮助(H)组织 包含到库中 共享”刻录 新建文件支IE更面,最近访问的位置*下载arcobjectsgeoprocessingsa文件夹口 i 回_init_.py f.Python File,61.6 KB.Jnit_.pycCompiled Python File,69.8 K8_base.py Python File 2.65 KBu库就嶷风影旗疆啊耳图片不珏3.迅雷下载J 音乐.base.pycCompiled Python FileJ 4.30 KB.graph.pyPython File 33.7 K8jmportable_modules.py Python File

12、L67 KB计算机工 System(C:)j Data(D:)r a Bak(E:)_mapping.py Python File 67.4 KB_na.pycCompiled Python File 10.1 KB-ga.py Python File 9.82 KB_ga.pycComp 谑、9.28 KB_graph.pycCompiled Python File 29.6 KB_management.py Python File 419字节_mapping.pyc Compiled Python File 65.7 KBanalysis.py Python File 6L3 KBjmpo

13、rtjistpy Python File 5.93 KB_mana gement pyc Compiled Python File 234字行_na.py,3g Python File 9.17 KBE analysis.pycI.Compiled Python File 60.0 KB通过Python 语言对AO和GP工具 进行引用封装 E 111六二arc.py Python File 114 KBarc.pycCompiled Python File 112 KBcartography.pyPython File 141 KBcartography.pyc Compiled Python

14、 Rie 137 KBconversion.py Python File 137 KB67个对象ChinaBEIJINGArcPy调用GP工具实现例子曲 ArcToolbox国 0 3D Analyst Tools-1 Analysis Tools?Extract,Selectx SplitTable Select#调用裁剪工具裁切两个Eeatureclass*2:p i it arcpyinputFeats=nC:/PythonTest/data/Python.gdb/cities11ClipFeats=nC:/PythonTest/data/Python.gdb/chinan result

15、Feats=nC:/PythonTest/data/results.shpH#开始执行*print”开始执行裁剪操作.”arcpy.analysis.Clip(inputFeats,ClipFeatsr resultFeats,0)|”执仃元毕!”林)OverlayErase Identity Intersect“Spatial Join,Symmetrical Difference,七 Unionx UpdateA ProximityBuffer“Create Thiessen PolygonGenerate Near TableMultiple Ring Buffer NearPoint

16、Distance“Polygon Neighbors E魅)StatisticsFrequencySummary StatisticsTabulate Intersection i+i q Cartography ToolsConversion Tools5inaBEIJINGArcPy调用GP工具工具调用原理:11*1 4ZI jConversion Tools,9 Cartography ToolsArcToolbox 0 3D Analyst Tools Analysis Tools 日a:ExtractEH x Select SplitTable Select a Overlay 卜与

17、 Proximity 田&StatisticsChinaBEIJINGArcPy基础方法日 QJ ArcPy functionsif Alphabetical list of ArcPy functionsEl(jj Cursors圄 Insertcursorli Searchcursor国 UpdateCursora Describing data田 Environments and settingsS Fields0 Geodataoase administration田,GeometryS General田 0 General data functions田 Getting and se

18、tting parameters田 Licensing and installation日(jj Listing data.UstDatasets同 ListFeatureClasses囱 UstFields图 UstFiles国 Listlndexes国 ListRasters同 UstTables国 Listversionsj=UstWorkspacesE Log historyS Messaging and error handlingS,Progress dialog国 0 Raster田 Spatial references and transformations 田 Tools a

19、nd toolboxes实现最常规和 最常用的功能遍历数据增删查改图形操作Jesri SinaArcPy基础方法-L i st遍历要素类、字段、表格、栅格等数据方法返回的结果是一个集合ListDatasetsListFeatureClasse.二二工 arcpy#打开cities要素集并获取所有字段信息ListFieldsListindexesfieldList=arcpy.ListFields(nC:/PythonTest/data/Python.gdb/citiesM)field fieldList:print(字段名称为0类型为1长度为2.format(field.name,field.

20、type,field.length)ListRastersListTablesListversionsListworkspaces字段名称为 字段名称为 字段名称为 字段名称为 字段名称为 字段名称为 字段名称为 字段名称为 字段名称为 字段名称为 字段名称为 字段名称为 字段名称为 字段名称为 字段名称为 字段名称为OBJECTID类型为01D长度为4Shape类型%Geometry长度为0 CITY_N2ME类型为String长应为30 GMI_ADMIN 类型%String 长良 7 ADMN_NAME类型为String长度为42 FIPS_CNTRY 类型为 String 长康为 2

21、CNTRY_N7ME 类型为 String 长蔗 30 POP_RANK 类型为 Smalllnteger 泉度为 2POP二CLASS类型为String长度为22 PORT_ID 类型为 Integer 长度%4 L7rnEL_FLAG 类型为 Smalllnteger 长度为 2 obj类型为Single长度为4 txt类型为String长度为20inta类型为Smalllnteger长度为2 st类型为String长度为50Name类型为String K度为50ArcPy 基础方法-Cursors查询记录(SearchCursor)插入记录(Insertcursor)更新记录(Updat

22、eCursor)b lu B国 Insertcursor囱 SearchCursor国 UpdateCursor#A simple cursor operation#Print out field values for two fieldsimport arcpyfield=nroadtypeMfor row in arcpy.SearchCursor(nC:/data/base.gdb/roadsH):print Road name:%sn%row.roadname print Road type:%sn%row.getValue(field)ChinaBEIJING例子:SearchCur

23、sor查询imr arcpy#匐建查询print”计算名CA-1 NB为高速公路的总长度”roadsFC=nC:/PythonTes t/data/Python.gdb/Highways n rows=arcpy.SearchCursor(roadsFC,nNZME=1 CA-1 NB 1 H#计算名CA-1 NB为高速公路的总长度,数据单位为经纬度#length=0shapeName=arcpy.Describe(roadsFC).shapeFieldName f.row in rows:feat=row.getValue(shapeName)length=length+feat.lengt

24、h#打印总长度结果print nCA-l NB 总长度为:,lengthChinaBEIJINGArcPy 基础方法-Geometry 创建、编辑几何对象 新增了几何对象的关系判断包含、相交、相等、压盖等多种几何操作(boundary,buffer,clip,convexHull,difference,distanceTo,intersect,symmetricDifference,and union)支持方法 distanceTo project As getLength、getArea等op。the hssw geain=ry I LCHthe rrtnparKon 邛tnetv?Base

25、Georrtrv匚 toeMfrom arcpy import*linel=Polyline(Array(Point(1,10),Point(10,10)line2=Polyline(Array(Point(5,5)rPoint(7,15)#Does linel cross line2?#crosses return a boolean linel.crosses(line2)No touch robtionsnip pcedbb例子:创建空间数据#创建点数组(用作保存文本坐标信息、,并最终构建线要素)#lineArray=arcpy.Array()pnt=arcpy.Point()#初始化要

26、素集的工D*ID=-1print“工D“,“X坐标“,“Y坐标“f 11 line fileinput.input(infile):#打开输入文本#根据工D获取点属性*pnt.ID,pnt.X,pnt.Y=string.split(line,H;)print pnt.IDZ pnt.X,pnt.Yif ID=-1:ID=pnt.ID#针对相同工D添加坐标点#如果工D改变,贝!)追力口新的feature#if ID!=pnt.ID:#创建一个新的要素*feat=cur.newRow()#设置几何图形*feat.shape=lineArray#插入要素*cur.insertRow(feat)lin

27、eArray.removeAll()lineArray.add(pnt)ID=pnt.ID3;52867579.6019;-161055141716070616515938.23170553LinePoints.txt-记事本文件(F)编定旧格式(O)查看(V)帮助(H)读取文本文件,构建线要素,并最终写入featureclasd1;-61845879.0968;45047635.4861 1;-3976119.96791;46073695.04511;1154177.8272;-25134838.35111;-62051091.0086;-26160897.91012;17365918.85

28、98;44431999.75072;39939229.1582;45252847.39792;41170500.6291;27194199.15912;17981554.5952;27809834.89453;15519011.6535;11598093.86193;52046731.9547;13034577.2446ChinaBEIJINGArcPy 类CursorExceptionsFeatureSets/RecordSetsFieldsGeneralGeometryGeostatistical AnalystParameter游标错误抛出要素和记录字段信息通用类,如数组、env等 图形

29、类,如点、线、面 统计类,如返回要素总数 参数类,参数读取和设置ArcPy数据管理全部来自 management.py 完全实现 Data Manager Tools覆盖数据创建、数据库连接、数据备伤 段计算等功能产 interop.py 心 interop.pyca pEpEEIr.pymanagement.py management.pyc mapping.py mapping.pyc md.py md.pyc(1&Attachments;十 运,Data Comparison汪 Distributed Geodatabaseh-冬 Domains:+&Feature Class+A Fe

30、aturesg;&Fields;a File Geodatabase1+,General+&Generalizationit.&Geodatabase Administration;+Geometric Network1+&GraphBi&Indexes(+&Joins口 LAS Dataset:+&Layers and Table Views;f,Package(+,&Photos、Projections and Transformations(;?Raster;+、Relationship Classes1+&Subtypes+/Table+&Topology;+&Versionsnay

31、Workspace例子:调用management数据备份#创建一个S DE连接print”开始创建SDE连接”sdefile=folderName+*,+f ileName os.path.exists(sdefile):os.remove(sdefile)brcpy.CreateArcSDEConnectionFile_management(folderName,fi1eName,print”连接创建完成!”serverName,serviceName,databaseName,authType,username,password,saveUserlnfo,versionName,saveV

32、ersionlnfo)#为本地创建一个地理数据库daystr=datetime.date.today()gdbName=bak_”+str(daystr)paths=r*C:PythonTestdata_bak#创建二个地理数据库 一arcpy.CreateFileGDB_management(paths,gdbName)print”堆埋致据库创建完毕!:#开始备份数据print”开始备份数据”sdePathFeat=folderName+,n4-fileName+,+nSDE.cities f ileGDBPathFeat=paths+*n+gdbName+n.gdb H Mcities*h

33、rcpy.CopyFeatures_management|(sdePathFeat,fileGDBPathFeat)os.remove(sdetile)print”备份完成!”cri ChinaI BEIJING例子:实现字段计算器功能#使用字段计算器import arcpyprint”将AllDes字段设置为NAME和Dis的组合”fc=nC:/PythonTest/data/Python.gdb/chinan#获取要素集的所有描述 -desc=arcpy.Describe(fc)#获取字段描述fields=desc.fields fi field in fields:#将字段AllDes的

34、值改为”名称_地区”的形式if field.name=AllDes*:#最终调用的是ArcTooIBox工具arcpy.CalculateField_management(fc,“AllDes”,*NAMEDis)print”设置完成!”breakpesri S*naArcPy制图可视化使用 ArcPy.Mapping 模块与MapDocument、Layer及其内的数据进行交互更改图层datasource获得mxd相关信息:数据源,无效图层,空间参考更改symbology、label显示、图层透明度等自动化地图集生产 例子:修改显示字段#修改label的显示字段#i:7n:.i?rt arc

35、py print”设置mxd的label显示”|mxd=arcpymapping.MapDocument(rnC:FythonTestchange.mxddf=arcpy.mapping.ListDataFrames(mxdz“图层“)0#对第一个图层进行修改#lyr=arcpy.mapping.ListLayers(mxd,df)0yrshowLabIs=TrueLyr.labelclasses 0.expression=T CITY NAME+n4-CNTRY NAME#保存结臬;mxd.save()j.el mxdprint”操作完成!HChinaBEIJING例子:更改mxd文档数据源

36、#更改mxd文档数据源*izuport arcpyprint”更改mxd的数据源”mxd=arcpy.mapping.MapDocument(rnC:PythonTestchangesource.mxd)mxd.findAndReplaceWorkspacePaths(r”C:PythonTestdataPythongdb”,rnC:PythonTestchangesource.gdbn r nFILEGDB_WORKSPACEn)#另存为一个新的mxd*mxd.saveACopy(rnC:PythonTestchanqeSource2.mxd)print”数据源更改完毕!“例子:控制图层显示

37、和设置透明度#控制图层显示和设置图层透明度*imoi:rt arcpy;匚“打开图层显示,并将图层透明度设置为5Q%”mxd=arcpy.mapping.MapDocument(rnC:PythcnTestchange.roxd11)df=arcpy.mapping.ListDataFrames(mxdf”图层“)0。lyr arcpy.mapping.ListLayers(mxd,Hn,df):if lyr.nam=china”:lyr.visible=True lyr.transparency=50mxd.save().-1 mxd其他扩展模块 实现了 Spatial Analyst、Ge

38、ostatistical Analyst 模块功能 10.l新增 了Time module Network Analyst Data Access日 5 ArcPyg,Introductiona,ArcPy functions0,rcPy classesa,Data Access moduleMaoDina module十同 What is the Network Analyst module?国 ClassesS 0 Functions国 Spatial Analyst module(jj Time module自/川/15!1但711臼 Qj Classes由 EsriTimeDelta目

39、 TimeZonelnfoB ID Functions 回 ListTimeZonesS Environment settingsB Tool referenceE Tool errors and warningsChinaBEIJING不断的完善模块 不断增加新的方法使用Python实现Add-i n,ArcGIS Desktop 10.1 开始支持使用Python仓ll建Addin 高度封装和集成,不需要了解AO,能与Desktop界面和工具交互 开发简单、高效 向导式生成交互代码,Add-in分发和部署简便开发工具一 add i n_ass i stant向导方式创建ArcPy Add-

40、ln工程 支持创建基于ArcMap、ArcCatalog ArcGlobe ArcScene插件 支持创建扩展模块、菜单、工具条 生成各种组件类及方法下载地址:http:/ e4c62f30bff3b例子:Python创建Add-i nArc(I Ar我的按钮图层列表File Edit Format Run Options Windows HelpPytF+PylAclass iZoomln(object):Implementation for Addln_addin.ZoomlnTool(Tool)def_init_(self):self.enabled=True self.shape=NO

41、NE#Can set to Line”,defonMouseDown(selff x,yz button,shift):defpass onMouseDownMap(self,x,y,button,shift)defpassonMouseUp(self,x,y,button,shift):defpassonMouseUpMap(selff xf yz button,shift):defpassonMouseMove(selff x,yz button,shift):defpass onMouseMoveMap(self,x,y,button,shift)defpass onDblClick(s

42、elf):defpass onKeyDown(self,keycode,shift):defpassonKeyUp(self,keycode,shift):defpass deactivate(self):defpassonCircle(self,circle_geometry):defpassonLine(self,line_geometry):defpassonRectangle(self,rectangle_geometry):passCircle or Rectangle for intclass iZoomOut(object):Implementation for Addln_addin.ZoomOutTool(Tool)n ChinaBEIJING总结ArcGIS完美的集成优秀的Python语言使用ArcPy让用户更多精力的关注GIS实现流程ArcPy简化了开发流程ArcPy更容易分发和重用Python降低了开发门槛,更利于应用的黏合丝招第十届Esri中国用户大会NextArcGIS 10.1 for Server SOE 应用开发ChinaBEIJINGChinaBEIJING

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 应用文书 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服