分享

ArcGIS与Python结合(一)

 昵称QAb6ICvc 2013-03-06

最近很多工作都需要用到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

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约