分享
分销 收藏 举报 申诉 / 33
播放页_导航下方通栏广告

类型arcgis中Python脚本的使用【简明教程】.pdf

  • 上传人:曲****
  • 文档编号:230050
  • 上传时间:2023-03-20
  • 格式:PDF
  • 页数:33
  • 大小:2.01MB
  • 下载积分:19 金币
  • 播放页_非在线预览资源立即下载上方广告
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    简明教程 arcgis Python 脚本 使用 简明 教程
    资源描述:
    初学入门ArcGIS中Python脚本的使用By:飞天小猪目录写在前面的话.2前言.2一、PYTHON语言基础.31数学运算符.32字符串操作.43模块的使用(Modules).54使用def构建函数.65流程控制结构:If,While,For.76简单输入和输出.9二、ARCGIS&PYTHON.10工如何创建地理处理对象(GEO PRO C ESSO R O BJEC T).102获取地理处理帮助.112.1 举例:如何使用 Geoprocessor Programming Model 中的 Lists.113使用地理处理工具-Toolboxes和 Aliases.124 在建模中使用脚本(Scripts in ModelBuilder).135在PythonWin里调试地理处理脚本.195.1 调试选择和消息.205.2 PythonWin的调试工具.215.3 地理处理工具举例.226使用描述(Describe)和存在(Exists)获取数据信息.226.1 描述.236.2 存在(Exists).246.3 在循环中使用描述和存在.247在Python脚本中使用地图代数(MapAlgebra).278 数据管理和指针(Data Management and Cursors).288.1 数据管理(Data Management).288.2 指针(Cursors).29附录L地理处理脚本中输入&输出方法指南.32附录2:其他.331/33写在前面的话一直想学习ArcGIS中的Python脚本,大四下半学期终于有了时间,可是想找到这么一 本好的教材不容易。茫茫互联网,终于找到了旧金山州立大学Jerry Davis教授的个人主页,对其中Geoprocessing Scripts With Python如获至宝,独乐乐不如众乐乐,现在将其教程 翻译并结合自己的学习情况给出总结。希望能够给更多想学习Python的同学一个参考。另外,在我刚开始接触Python时,是看了台湾辅仁大学一位老师的视频课件,在此致 谢。我想从两个大部分总结:一、Python语言基础;二、ArcGIS&Pythono其中第一部分参 考了Python精要参考(第二版)、Python编程金典(读书笔记)等书籍文献。对于多 数读者来说,可能或多或少有一些编程基础,所以理解起来应该不成问题。文中多数数据来自Jerry Davis教授的主页,放在“C:prog”目录下,为了直观,我将运 算结果一并编辑,方便参考。值得一提的是ArcGIS的在线帮助文档,一个实时更新的GIS宝库,很多专业性知识都可 以找到答案,点击链接案CGIS10中文帮助、ArcGIS9.3.1或9.3英文帮助。获取更过脚本例 子来学习:ESRI的地理处理模型和脚本工具库是个不错的选择。由于我也是初次接触,翻译或者心得难免有细漏之处,希望同仁们可以多多交流!刖5在GIS建模或GIS数据管理中,你可能经常需要处理一系列步骤才可以完成的工作;你 可能有一个工作目录下的数据需要重投影、裁剪到研究区域,或者用某种方法组合成期望的 结果;我们也经常需要根据不同情形用不同方法处理数据,因此我们需要作出选择,而高质 量的决策需要考虑很多低水平的决策,这可以通过脚本程序模型辅助完成。脚本编程的主要目的是使枯燥的处理数据工作自动化,通过逻辑来指挥处理过程。我想 自动化和逻辑是关键,它们区别于我们多数使用计算机时的交互活动。我们发E-mail,写文 章或者设计地图,都需要和计算机交互,而处理一系列数据,我们需要自动化和利用逻辑来 指导自动化。在地理处理脚本逻辑中,我们需要在允许我们做的事情中作出决定,比如,处理栅格数 据不同于矢量数据,或为没投影的数据设置投影,或处理仅在特定时间搜集的数据集。对于 重要的GIS工作来说,脚本以及其他形式的程序是必需的,而非可有可无。在接下来的联系中,我们会探索Python的使用以及创建脚本来使用ArcGIS里众多的地 理处理工具。所有你能在ArcToolbox或Model中使用的工具都能够用在Python脚本中,这 些脚本可以生成脚本工具,像其他地理处理工具一样使用。2/33AtTcmjd用 Aiyh/M focbA$QI to LH 2 PMe0 to AyfoTOTaz,*FeatureTo pAStet_co n-J landuse lu-co de lur#lcsJ 如Jo.lugr Id*止,;:;*t.Jet,,-i,IandUM_paiygo n i v :;,c 11-j;:、;,rwuno:nr1000 print selstrelev1000字符串可以使用单引号或双引号,跨行时用双引 号。othersel=w,elev/1000/print otherselelev1000print s.isupper()False一些方法返回值为布尔型(True或False),一些 返回索引值(下标值)print s2.isupper()True4/33p=d:/work/lu.shp print p.find(7)10print p.find(7/)2plist=p.split(/)print plistd:,work,lu.shp你可以用split。方法解析出不同的字符串片段,并 创建一个列表(List),我们可以使用其中不同的 兀素print plistOd:print plistlworkp2=d:worksoil.shp print p2d:worksoil.shp反斜线“”和某些字母一起有特殊用法,如n 为换行,“”为转义字符,如“”则表示“print Jerrys KidsJerrys Kidsprint JerrysnKidsJerrys Kidsp3=rd:worksoil.shp print p3d:worksoil.shp字符串前加“r”则强制“”代表其本身,而非 转义字符,这对于文件路径的操作很方便3模块的使用(Modules)Python提供了一系列内置的方法(大量依赖于模块)用于通用编程。Python安装时 自带了大量 Modules,最常用的有 math,sys,random,array 以及 os.patho当然还有好多Modules可以下载,比如数字处理(Numeric)-numpy,可在www.python.org 或 里搜索。www.python.org/moin/NumericAndScientific 页面中列举了一些。使用Module前,必须import之。通常我们会将一行import 90:sunangle=180-sunangleazimuth=0print sunangle,azimuth上面的例子中lat和deci强制赋了值。有三种流程控制操作:if 仅在一个特定情形下才执行语句;while 当一种情形存在下,持续执行语句for 遍历一系列值这些语法和def有些相似:初始语句后加顿号、需要执行的语句块有缩进。这三个结构的一些重要的公共特征:if、while、for语句均以冒号结尾,接下来是缩进的代码块,用于if、while、for定义 的情形。在脚本编写窗口,你会发现,你在一行末尾打上冒号后,下一行自动缩进,在接下 来的一行按下退格键取消缩进。如果你只需做一件事情,你可以在冒号后面同一行添加简短的语句,比如:if x0:print 比 0 大,print,下一行不要缩进了。,if(continued)接下来,我们会探索一下另一个方便的模块:os.path:开始之前,在d:/下创建一个“testfolder”文件夹,然后新建一个“test.txt”文件;尝试以下代码段,确保print语句前有缩进。import os.pathif os.path.exists(d:/testfolder/test.txt):print 测试文件夹存在print txt文件存在7/33elif os.path.exists(d:/testfolder):print 测试文件夹存在print 测试文件夹存在,但txt文件不存在else:print 两者都不存在可选探索示例接下来的例子做的事情对GIS非常重要,但是实际上不用任何地理处理代码。USGS7.5 米分辨率DEM(数字高程模型)是文本文件(USGSDEM文件),投影为UTM,UTM北向和 东向单位是米,但是高程单位可能是英尺(feet)或米(meters)。因此在获取垂直或水平距 离信息时会有问题,比如坡度可以通过垂直距离/水平距离获得。如果你不在使用Z值之前 设置为0.3048,将会出现错误结果。但是不幸的是,你可能不知道DEM文本文件的垂直单 位是英尺还是米。这些信息保存在第539个字符里,“1”代表英尺,“2”代表米,所以可以 通过读取这个文件判断。下面的脚本演示了上述内容:import fileinputinfile=rc:progpendatawoodside.demfirstline=fileinput.input(infile)Ounitchar=firstline539unit=(unknown:not a 7.5 DEM?)if unitchar=l:unit=feetif unitchar=2:unit=metersprint n日evation in+unitfileinput.close()输出结果:Elevation in feetwhile(continued)运行下面的代码,说明了一种while循环:x=lwhile x 下面说明一下“=(等于)的概念:x=5x=5z=x=4z=x=5print zprint z输出False输出True“=”是逻辑运算符之一,其他有“”(大于)、“=”(大于或等于)、“=(小于或等于)、“(不等于)。使用逻辑运算符计算得到结果为布尔型:true(1)和false(0)o下面例子简单体会一下布尔型表达式:x=lwhile x10:8/33print x x=x+l表达式“x 尝试下面代码,演示了 for循环:for x in 1,2,3,4:(注:1,2,3,4用 range(l,5)代替是一样的)msg=hello worldprint str(x)+msg(注:当我们希望一个数字x和字符串连接时,必须先 对数字进行格式转换即str(x),否则系统报错)下面的代码创建并输出指定文件夹内shp文件名列表(每个都以.shp结尾)import os ws=c:/prog/hmbareailist=os.listdir(ws)#创建一个列表保存工作文件夹内的文件 fcs=#创建一个空列表,保存结尾为.shp的文件 for i in ilist:if i.endswith(.shp):fcs.append(i)for fc in fcs:printfc(输出结果如右图所示)下面这个例子的循环较多次数。变量mu是算术平均数,s是标准差这两个是 random.gauss。用到的参数,可以尝试改变n的值查看结?hP geolstr200.shp landise.shp stbuff200.shp streams.shp water.shp果!import random mu=50s=10z5=mu-s*1.96 z95=mu+s*1.96 count=0n=100000for i in range(n):x=random.gauss(mu?s)if xz95:count=count+lprint float(count)/n(每次运行的结果都不同,但都在0.05左右,即统计结果 在5%左右)6简单输入和输出我们现在利用前面计算太阳角代码的片段,之前是直接指定参数值,现在我们有很多种9/33方法提供输入参数,现在我们用sys方法。尝试下面的代码,点击I,(run运行)之 后,在对话框中函数自变量(Arguments)一栏填入:40 23.44,如下图:Run ScriptXScript File|E:Python25sun.pyBrowse.|1 0KlAiguments|40 23.44)-Debugging|No debugging 二JCancel|import syslat=float(sys.argvl)decl=float(sys.argv2)#使用 arguments(argv)方法从Arguments”一栏中获取输入 参数,并指定一个浮点型转换将字符型输入值传递给lat和decisunangle=90-lat+declazimuth=180if sunangle90:sunangle=180-sunangleazimuth=0print 正午太阳角=+str(sunangle)print方位角=+str(azimuth)(结果:正午太阳角=73.44 方位角=180)、ArcGIS&Python1如何创建地理处理对象(geoprocessor object)所有 geoprocessing 的 Python 脚本都可以通过 import arcgisscripting 或者 win32com 去穿 件geoprocessor objecto下面的例子显示二者区别:arcgisscripting module需要在 Python2.5.1版本上创建并且需要此版本创建geoprocessor;通过win32com创建的 geoprocessor可以在不同的Python版本上运行。#9.3import arcgisscriptinggp=arcgisscripting.create(9.3)gp.workspace=wc:/Tongasswgp.clip_a nalysis(sta n d b4,c I i p cov,sta n d b4_cli p,PO LY.1.25)#Dispatchimport win32com.clientgp=win32com.client.Dispatch(/esriGeoprocessing.GpDispatch.lw)gp.workspace=wc:/Tongasswgp.clip_a nalysis(sta n d b4,c I i p cov,sta n d b4_cli p,PO LY.1.25)令 理解ArcGIS中数据多样性格式对我们理解地理处理工具很有帮助。比如,特征数据 可能是单个shp文件;geodatabase(地理数据库,我们可能指定地理数据库为 10/33工作空间);多边形、弧或点要素的coverage数据。当我们想遍历工作空间里的 coverage 文件时,应使用 ListDatasets 而不是 ListFeatureClasseSo2获取地理处理帮助如果你基本熟悉了 Python的语法,便可以开始熟悉ArcGIS的Geoprocessing啦,获取这些方法帮助的途径有两个:ArcGIS 帮助系统,Go To Geoprocessing/Automating your work with scripts/Scripting object:Properites and Methods.这里你会看到Geoprocessor Object,这个能让你很方便地获得所有对你有用的条目、设置和其他操作文档。比如,你想得到特定类型的文件,就找到listfeatureclasses方 法:fcList=gp.ListFeatureClasses(/zw*Vpolygonw)注:此方法的语法为:object.ListFeatureClasses(wildCard As String,FeatureType As String)As Python List=optional wildcard为通配符,和星号(*)组合使用,如果没有通配符则返回 工作目录下的所有feature classeso Geoprocessor Programming Model(PDF),包含方法(左箭头表示)、属性(可读写 的表示为杠铃形,只读的表示为部分杠铃形)2.1 举例:如何使用 Geoprocessor Programming Model 中的 ListsLists(列表)及其属性和方法在图表中用紫色标出,如下:现在我们试着编写一段脚本列举出属性表 中所有属性值(Fields)(以hmbarea栅格土地利 用为例,文件存在c:proghmbarea下)import arcgisscripting,sysgp=arcgisscripting.create(9.3)gp.workspace=c:/prog/hmbarea fieldList=gp.ListFields(landuse,all)dsc=gp.describe(landuse)print landuse+dsc.DataType+:for field in fieldList:Data SourceData Type:Coverage Feature ClassCoverage:C:progHMBareastreamsFeature Class:arc execf ile(showF ie.pv)landuse RasterDataset:Rowid O IDVALUE IntegerCOUNT IntegerLU-DESC Stringprint field.Name,field.Type(此时输出结果如右图)11/333使用地理处理工具-Toolboxes和Aliases总所周知,地理处理工具在脚本中的使用和ArcToolbox中相同,但是需要提供工具 名称来使用它们。但是记住一个名称可能有好几个工具,比如,裁剪工具(Clip)在 Coverage-Analysis-Extract 工具集里,另一个是在 Data Management Tools 下的 Raster 工 具集下。区别是每个工具适用不同的数据类型,但是我们如何在脚本中区分它们呢?在ArcToolbox中,我们可以随意选择要使用的工具,但在脚本里就必须在某些方面 加以区分。因此我们使用Aliases(别名)已经成为工具名称的一部分。每一个工具都有自己的别名,我们可以通过右键。属性来查看:AliaseToolbox“conversion”Conversion“3d”3D Analyst“geocoding”Geocoding“analysis”AnalysisgaGeostatistical Analyst“arcCoverageIrLinear Referencing“management”Data ManagementsaSpatial AnalystcartographyCartography“stats”Spatial Statistics现在我们用一段脚本来解释:import arcgisscripting,sysgp=arcgisscripting.create(9.3)gp.Workspace=wc:/prog/hmbareawgp.overwriteoutput=l#OverWriteOutput:Boolean,/1 表示允许覆盖已存在文件#将streams/arc转换为shp文件gp.copyfeatures_management(streams/arc,streams.shp)#利用转换后的shp文件,做200米的缓冲gp.buffer_analysis(streams.shp,stbuff200.shp,200)#用做过缓冲的shp裁剪gp.Clip_analysis(geol.shp,stbuff200.shp,geolstr200.shp)注:上面脚本用“#”注释的中文内容不要出现在脚本文件中,否则会出现错误Synt axError:Non-ASCII c harac t er 1xc e1 in file c lipst reamsZOO.py on line 5,but no enc od ing d ec lared;see ht t p:/www.pyt hon.org/peps/pep-0263.ht ml for d et ails(c lipst reams200.py,line 5)结果截图:12/33如果你一次使用一个工具集中的若干工具,可以通过环境设置省下一些文字:gp.Toolbox=Analysisgp.Buffer(streams.shp,stbuff200.shp,200)gp.Clip(geol.shp,stbuff200.shp,geolstr200.shp)4在建模中使用脚本(Scripts in ModelBuilder)首先,需要记住的很重要的一点是,ArcToolbox里相当数量的工具实际上都是脚本。脚本都有一个缪文呻1图标。比如,空间统计分析工具(Spatial Staistics tools)S 奇 Spatial Statistics Tools白:电 Analyzing Patterns羞 Average Nearest Neigh,爹 High/Low Clustering(Ge/.Multi-Distance Spatial CU Spatial Autocorrelation _田电 Mapping Clusters国色Measurinq Geographic Distr二几乎都是python脚本(一些是模型中使用了脚本S 电 RenderingCluster/Outlier Analysis3 Collect Events with Rer容 Count RenderingHot Spot Analysis with I儿昼ZScoreRendering 实际上,我们可以复制并编辑这些脚本作为其他用 途。为了在ModelBuilder中使用脚本或将脚本当做ArcToolbox中工具使用,我们需 要考虑如何给它输入值以及让其设置输出值。仍然以太阳角计算代码为例,我们给 其加上两句引用,四句输入输出语句,就可以用作Modelbuilder中的一个步骤了。编辑下面的脚本,不过不要再PythonWin中运行之,因为getparameterastext 和 setparameterastext 只能用在脚本工具(ArcToolbox 或 Modelbuilder)中。import arcgisscriptinggp=arcgisscripting.create(9.3)13/33lat=float(gp.getparameterastext(0)decl=float(gp.getparameterastext(l)sunangle=90-lat+declazimuth=180if sunangle90:sunangle=180-sunangle azimuth=Ogp.setparameterastext(2zstr(sunangle)gp.setparameterastext(3,str(azimuth)这段代码中的“新面孔”:getparameterastext:是 Python 传递给 geoprocessor(我们称之为 gp)的一个 方法,允许工具提供输入参数。每次你运行这个工具时,都会看到一个对话框,提 示输入参数,这个方法允许你在接下来的程序中使用。索引0和1指第一个和第二 个参数。setparameterastext:和 getparameterastext 相反,它传递第二个条目(比如 str(sunangle)的值)给指定的输出参数。前两个参数索引为。和1,所以接下来输出 参数的索引为2和3。然后,我们需要将脚本加进工具(Making a script into a tool),那样才能在 ArcToolbox或ModelBuilder或Command line中使用。如前面提到的那样,这个脚本 只能用于工具,包括输入/输出方法是PythonWin不能处理的,但这些是多数工具必 需的。在ArcCatalog里,定位到Python脚本保存的文件夹,最好和数据在一个盘里,右键-新建 toolbox。当然也可以使用之前创建的toolboxo在ArcToolbox里,右键toolbox,选添加-scripts,填写如下图:14/33注意:脚本文件是一个脚本工具的参考!非常重要的一点,你使用脚本创建了 一个脚本工具,但是脚本本身并没有和工具一起保存,脚本工具作为toolbox 的一部分保存在文件中。你也可以右键脚本工具点击“编辑”,出现 PythonWin或其他任何IDE窗口,这看起来好像是脚本存在于工具中。所以,记得移动时将脚本工具文件和脚本本身一起拷贝。“下一步”后是参数配置页面,如下图设置各参数如表格所示:Display NameData typeDirectionDefaultLatitudeDoubleinput0DeclinationDoubleinput0Sun AngleDoubleoutput35AzimuthDoubleoutput30015/33现在可以运行此toolbox 了,对话框提示你输入latitude和declination 0工具是否正 确运行呢?如果是的话,你应该可以看到“Completed,你可能会看到有一黑色窗 体一闪而过,不用担心。那么,它是干什么的呢?还记得结果是输出两个数字参数,那么,这些数字哪去了呢?很好的问题,这仅能说明你能创建一个工具,但是不能想ArcToolbox那样运行。比 如输出一种数据,栅格或特征数据(.shp)之类的。但是它能在作为Modelbuilder工具正常运行,下面我们将使用它的输出参数创建一 个 hillshadeo在你的toolbox中新建一个model,将刚才创建的脚本工具(scripttool)拖进来。双击工具,输入参数,初始化之。打开“Sun Angle”和“Azimuth”发现它们还是 默认值,说明此脚本工具还没有运行。右键单击工具,选择Run,然后发现两个输 出参数已经改变!16/33需要注意的是:latitude范围是-9090,declination范围是-23.4423.44。尝试输入 latitude-70,declination 23.5,你会得到什么?为什么?确保你已经得到值域内的太阳角和方位角,它们将是构建hillshade的输入参数。首先,添加hillshade工具,双击指定一个elevation栅格数据(这里我选择了 marbles 文件夹下的elevation),用下拉条指定azimuth和altitude值为azimuth和sun angle。运行,然后右键单击输出文件,选Add to Display”在ArcMap里查看结果。如果你想通过日期获取太阳倾角,该怎么做呢?尝试下面代码,保存为 getnoonsunfromdata.py,现在有五个参数,如下表进行正确设置:Display NameData typeTypeDirectionDefaultMonthLongRequiredinput1DateLongRequiredinput1LatitudeDoubleRequiredinput0Sun AngleDoubleDerivedoutput35AzimuthDoubleDerivedoutput300import win32com.client,sys,mathgp=win32com.client.Dispatch(esriGeoprocessing.GpDispatch.l)#构建两个函数,首先判断输入月/日的合法性,然后获取是一年中的第几天 def jdate(imz id):#通过年月日起返回一年中的第几天lastD=31,28,31,30,31,30,31,31,30,31,30,31jd=0,31,59,90,120,151,181,212,243,273,304,334if(im 0)and(im 0)and(id 90:sunangle=180-sunangleazimuth=0gp.setparameterastext(3,str(sunangle)gp.setparameterastext(4/str(azimuth)我们在思考远一点,如何根据一天内的任何时间而不是正午时间,获取太阳角和方 位角呢?感兴趣的可以从本文开头的链接中下砸相应代码学习。令探索2:如何在PythonWin里运行这个脚本?首先我们得明确儿个点:我们将把hillshade 作为脚本的一部分使用,并为其提供输入参数:一个高程栅格(elevation raster);G et Pa ra m ete ra stext仅在用作工具时起作用。下表为脚本工具的参数设置:Display nameData typeTypeDirectionDefaultMonthLongRequiredInputDateLongRequiredInputLatitudeDoubleRequiredInputWorkspaceWorkspaceRequiredInputElevationRaster DatasetRequiredInputHillshadeStringRequiredInput代码如下:import win32com.client,sys,mathgp=win32com.client.Dispatch(esriGeoprocessing.GPDispatch.l)#函数定义,同上,下面仅给出函数名称:def jdate(imz id):def declin(day):#主程序,使用 sys.argv代替 getparameterastext()month=int(sys.argvl)18/33date=int(sys.argv2)lat=float(sys.argv3)gp.Workspace=sys.argv4#输入时注意,路径应为反斜杠elev=sys.argv5hillsh=sys.argv6#给输出 hillshade 指定文件名deci=declin(jdate(month,date)sunangle=90-lat+deciazimuth=180if sunangle 90:sunangle=180-sunangleazimuth=0gp.addmessage(about to try)try:gp.OverwriteOutput=1gp.addmessage(after overwriteoutputs setting,+gp.workspace+hillsh)gp.CheckOutExtension(spatial)gp.addmessage(gp.workspace+hillsh)gp.HillShade_sa(elev,gp.workspace+str(hillsh),azimuth,sunangle)gp.addmessage(done with hillshade)gp.ChecklnExtension(spatial)except:#print gp.getmessages()gp.addmessage(gp.getmessages()gp.ChecklnExtension(spatial)阅读代码发现,第一个输入参数不适用的getparameterastext(O),而是sys.argvl,这是因为getparameterastext。方法只在工具中起作用,而sys.argv口有同样的效果,索引从1而不是0开始,当然,这需要首先引用sys模块。这里我们直接指定输出 文件在输入数据文件夹内,省去了 setparameterastext。方法,当然这个方法在 PythonWin中也无法运行。尝试输入参数如下图,得到右下结果:5在PythonWin里调试地理处理脚本既然我们已经认真地学会了从Python中创建并运行地理统计工具,那么现在需要 考虑如何调试我们的程序了。我们需要经常在Python和添加的地理处理系统引用之间 调试程序。当一个地理处理工具运行失败后,我们需要从Pythonwin中得到一个丰富的 消息,而不是“未知错误二19/335.1 调试选择和消息Python优于AML的优点之一是它有更好的调试方法,调试程序有很多选择,这里 不能一一列举。打印语句(Print statements)一开始就养成良好的调试方法是:将变量的当前值或脚本的处理过程打印在屏幕上。比如,对之前的一段脚本加以修改:import arcgisscripting/Sysgp=arcgisscripting.create(9.3)gp.Workspace=c:/prog/hmbareagp.overwriteoutput=lgp.copyfeatures_management(streams/arc,streams.shp)gp.Toolbox=Analysisgp.buffer(streams.shp,stbuff200.shp,200)print Finished Buffer.Now Cliping.gp.Clip(geol.shp,stbuff200.shp,geolstr200.shp)|Finished Buffer.Nov C liping.Script E:Python25dipstream$200,py returned exit code 0 可以看出成功运行脚本!然而当在工具中运行时,print语句不会产生错误,但也不会输出任何东西,因此,我们 用 gp.addmessage(Finished Buffer.Now Cliping.)代替 print 语句。那么,如果想无论在工 具中或Pythonwin中都可以显示消息,就可以这两句都写上。我喜欢的做法是定义一个 sendmsg函数来输出消息:def sendmsg(msg):print msggp.addmessage(msg)sendmsg(Finished Buffer.Now Cliping.)获取工具消息和(try:.except:)上面的方法很有用,但当我们运行我们并不了解很多信息的地理处理工具时就显得 无能为力了。如果在Pythonwin中运行Buffer时出现错误,比如输入文件不存在等,只能看到“未知错误”的提示,这就引出了 GetMessage上的方便!现在我们要体验两种调试技巧:GetMessages地理处理方法;Python语言的错 误处理程序:try.except。现在我们添加GetMessages查看错误信息:还是上面的代码,把streams.shp修改为stream.shp”,查看错误信息:gp.Toolbox=Analysisgp.buffer(stream.shp,stbuff200.shp,200)gp.Clip(geol.shp,stbuff200.shp,geolstr200.shp)运行之,查看错误信息,然后修改代码如下:try:gp.Toolbox=Analysis 20/33gp.buffer(stream.shp,stbuff200.shp,200)gp.Clip(geol.shp,stbuff200.shp,geolstr200.shp)except:print gp.GetMessages()运行可以看到以下错误提示:顺便说一下GetMessages的集中形式和代表的含 义St art Time:Mon Mar 28 13:58:28 2011 Failed t o exec ut e.Paramet ers are not valj ERROR 000732:Input Feat ures:Dat aset st re support ed TJAPNING D00725:Out put Feat ure Class:Dac e alread y exist s.Failed t o exec ut e(Buffer).End Time:Hon Mar 28 13:58:28 2011(Elapse运行下面简单的代码,并改变X的值为非零,查看结果:x=0.y=15.try:print
    展开阅读全文
    提示  咨信网温馨提示:
    1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
    2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
    3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
    4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
    5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
    6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。

    开通VIP折扣优惠下载文档

    自信AI创作助手
    关于本文
    本文标题:arcgis中Python脚本的使用【简明教程】.pdf
    链接地址:https://www.zixin.com.cn/doc/230050.html
    页脚通栏广告

    Copyright ©2010-2026   All Rights Reserved  宁波自信网络信息技术有限公司 版权所有   |  客服电话:0574-28810668    微信客服:咨信网客服    投诉电话:18658249818   

    违法和不良信息举报邮箱:help@zixin.com.cn    文档合作和网站合作邮箱:fuwu@zixin.com.cn    意见反馈和侵权处理邮箱:1219186828@qq.com   | 证照中心

    12321jubao.png12321网络举报中心 电话:010-12321  jubao.png中国互联网举报中心 电话:12377   gongan.png浙公网安备33021202000488号  icp.png浙ICP备2021020529号-1 浙B2-20240490   


    关注我们 :微信公众号  抖音  微博  LOFTER               

    自信网络  |  ZixinNetwork