# -*- coding: cp936 -*-
#
 动态加载工具箱
#
 billschen@163.com
#
 billschen.com
#
 ----------------------------------------------------------
#
 当我们将写好的Python脚本放做成工具箱,
#
 供级我们的同事使用的时候,可能会有些麻烦.
#
 因为我们写的脚本通常需要加载ArcGis的一些工具箱.
#
 但是,每台机的arcGis安装路径可能会不相同.因此
#
 如果使用以下的表达式
#
 gp.AddToolbox("C:/Program Files/ArcGIS/ArcToolbox/Toolboxes/Data Management Tools.tbx")
#
 则可以造成工具箱无法正常加载,因为如果别人机子上的arcGis不是安装于这个路径之下的话,
#
 那么,怎样才能解决这个问题呢?.总不至于要对方重装ArcGis软件吧?
#
 笔者经过研究,发现一个方法,仅供参考.
#
 arcgisscripting 模块有一个属性:__file__
#
 该属性返回的是 arcgisscripting.dll 这个DLL文件所有的位置.
#
 如:C:\Program Files\ArcGIS\bin\arcgisscripting.dll
#
 显然,可以利用这个属性检查出计算机安装arcGis所在的路径.
#
 然后动态地加载工具箱, 代码如下所示
#
 ----------------------------------------------------------

import os, sys, string
import arcgisscripting
gp 
= arcgisscripting.create()

# 定义需要加载工具箱的路径名称
toolNameList =[
    r
'ArcToolbox\Toolboxes\Data Management Tools.tbx',
    r
'ArcToolbox\Toolboxes\Analysis Tools.tbx']

arcGisScriptPath 
= None
arcGisToolPath 
= None

try:
    
# 获得 arcgisscripting.dll 所在的路径,目的是为了取得ArcGis的安装路径
    arcGisScriptPath = arcgisscripting.__file__
    
for toolName in toolNameList:
        arcGisToolPath  
= \
                       arcGisScriptPath.replace( \
                           r
'bin\arcgisscripting.dll', toolName)
        gp.AddToolbox(arcGisToolPath)
except:
    gp.AddMessage(
'无法加载工具箱'+arcGisToolPath+',请检查的你的ArcGis安装是否完整')
    
del gp
    sys.exit()


# 开始正式的处理工作

 

 

posted on 2010-05-27 17:06  powermap  阅读(430)  评论(0编辑  收藏  举报