最近很多工作都需要用到python,在使用过程中出现了一些问题,简单地总结了部分处理问题的方法。希望碰到类似问题的朋友可以尽快的找到解决的方案,节约时间。
问题1、在import arcgisscripting的时候,提示ImportError: No module named arcgisscripting错误信息,该错误主要导致无法创建gp对象,有如下方法解决:
a、使用win32com;代码如下:
import win32com.client
#create the geoprocessor object
gp=win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")
......
b、首先添加系统路径,参数为PYTHONPATH="D:\Program Files\ArcGIS\Bin";即路径为ArcGIS安装目录下的BIN目录;
之后,将下列代码保存为arcgisscripting.py文件,并将该文件放在BIN目录下;
'''----------------------------------------------------------------------------------
arcgisscripting.py
----------------------------------------------------------------------------------'''
import win32com.client
def create(licensetype=None):
gp = win32com.client.Dispatch("esriGeoprocessing.GpDispatch.1")
if licensetype is not None:
Licensed=gp.SetProduct(licensetype)
if not (Licensed in ["NotLicensed","Failed"]):
return gp
#Either the licensetype was not set, or it failed
#Try to get the highest possible license
types = ["ArcInfo","ArcEditor","ArcView"]
for license in types:
Licensed=gp.CheckProduct(license)
if not (Licensed in ["NotLicensed","Failed"]):
Licensed = gp.SetProduct(license)
print "geoprocessor started with license: %s (%s)"%(license,Licensed)
return gp
else:
print "license %s is %s"%(license,Licensed)
gp.AddError("No License available for geoprocessor")
raise ValueError,"No License available for geoprocessor"
if (__name__=="__main__"):
gp=create()
调用如下:
import sys, string, os, arcgisscripting
gp = arcgisscripting.create()
......
问题2、第二就是调用函数的问题,在调用过程中,应尽可能使用原函数的原型,对于所给实例不能完全有效,例如
用Defineprojection函数的时候,参数都对的情况下,不知道为什么提示
Traceback (most recent call last):
File "C:\pyUsle\src\SetSpatialRef.py", line 9, in <module>
gp.Defineprojection("C:\\WorkSpace\\testdata\\lots\\0002.aux",coordsys)
File "d:\Python26\lib\site-packages\win32com\client\dynamic.py", line 512, in __getattr__
raise AttributeError("%s.%s" % (self._username_, attr))
AttributeError: esriGeoprocessing.GpDispatch.1.Defineprojection
原实例程序为:
import arcgisscripting
gp = arcgisscripting.create()
gp.workspace = "c:/Workspace"
gp.toolbox = "management"
coordsys = "Coordinate Systems/Geographic Coordinate Systems/North America/North American Datum 1983.prj"
gp.defineprojection("counties.shp", coordsys)
修改后的代码为:
gp.DefineProjection_management("ww",coordsys)
Python工作还在继续中,有的问题继续贴进!
Ps:更多信息
http://user.qzone.qq.com/452339895/blog/1272556243源地址:
http://blog.renren.com/GetEntry.do?id=462352126&owner=291118225