《ArcGIS与Python结合(一).docx》由会员分享,可在线阅读,更多相关《ArcGIS与Python结合(一).docx(2页珍藏版)》请在第一文库网上搜索。
1、ArCG1S与Python结合(一)最近很多工作都需要用到PythOn,在使用过程中出现了一些问题,简单地总结了部分处理问题的方法。希望碰到类似问题的朋友可以尽快的找到解决的方案,节约时间。问题1、在importarcgisscripting的时彳矣,提示ImPortError:Nomodu1enamedarcgisscripting错误信息,该错误主要导致无法创建gp对象,有如下方法解决:a、使用Win32COm:代码如下:importwin32com.c1ient#createthegeoprocessorobjectgp=win32com.c1ient.Dispatch(,esriGeo
2、processing.GpDispatch.V)b、首先添加系统路径,参数为PYTHoNPATH=D:ProgramFi1esArcGISBinH:即路径为ArCGIS安装目录下的BIN目录;之后,将下列代码保存为arcgisscripting.py文件,并将该文件放在B1N目录下;tV9arcgisscripting.pyimportwin32com.c1ientdefCreate(Iicensetype=None):gp=win32com.cIient.Dispatch(MesriGeoprocessing.GpDispatch.r,)if1icensetypeisnotNone:1iCe
3、nSed=gp.Setprodiict(Iicensetype)ifnot(1icensedinNot1icensedn,Fai1ed):returngp#EithertheIicensetypewasnotset,oritfai1ed#Trytogetthehighestpossib1e1icensetypes=,ArcInfo,ArcEditor,ArcViewMfor1icenseintypes:1icensed=gp.CheckProduct(Iicense)ifnot(1icensedinnNot1icensedn,Fai1ed,1):1icensed=gp.SetProduct(I
4、icense)print,geoprocessorstartedwith1icense:%s(%s)n%(IicenseJJcensed)returngpe1se:print,1Iicense%sis%s%(Iicense91icensed)gp.AddError(,No1icenseavai1ab1eforgeoprocessor)raiseVa1ueError,No1icenseavai1ab1eforgeoprocessor,if(_name_=*_main_,):gp=create()调用如下:importsys,string,os,arcgisscriptinggp=arcgissc
5、ripting.create()问题2、第二就是调用函数的问题,在调用过程中,应尽可能使用原函数的原型,对于所给实例不能完全有效,例如用DefineProjeCtiOn函数的时候,参数都对的情况下,不知道为什么提示Traceback(mostrecentca111ast):Fi1eC:pyUs1esrcSetSpatia1Ref.py,1ine9,ingp.Defineprojection(CWorkSpacetestdata1ots0002.aux,coordsys)Fi1edrPython261ibsite-packageswin32comc1ientdynamic.py,1ine512,
6、in_getattr_raiseAttributeError(%s.%s%(se1f._username_,attr)AttributeError:esriGeoprocessing.GpDispatch.1.Defineprojection原实例程序为:importarcgisscriptinggp=arcgisscripting.create()gp.workspace=c:/Workspacegp.too1box=management”coordsys=,CoordinateSystemsZGeographicCoordinateSystems/NorthAmericaZNorthAmericanDatum1983.prjgp.defineprojection(,counties.shp*coordsys)修改后的代码为:gp.DefineProjection-management(,wwn,coordsys)