# -*- coding: cp936 -*-
#
 动态生成文件名,使输出不至于覆盖原有文件
#
 billschen@163.com
#
 billschen.com
#
 ----------------------------------------------------------
#
 时行arcgis脚本处理,不可减免要生成新的文件(如featu class,
#
 shape file).举个例子:运行Multipart to Singlepart 工具,
#
 将生产生一个新文件,这个工具会“聪明”,产生的新文件的文件名会是一个
#
 “新”的文件名,使旧的文件不至于被覆盖。那个在自己写的脚本中,如何保证
#
 脚本生成的文件不与旧的文件同名呢?可以应用 gp.exists 方法进行文件
#
 是否存在的检查,以下是笔者做的一个小例子,读者可运行一个体验效果。
#
 ----------------------------------------------------------

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

# 定义需要加载工具箱的路径名称
toolNameList =[r'ArcToolbox\Toolboxes\Data Management 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()

# 定义一个函数,以获得新的文件名。
#
 以更不去覆盖旧文件。
def GetUnExistsFileName(fromFileName):
    
if not gp.exists(fromFileName):
        
return fromFileName
    
else:
        
for i in range(9999):
            
if not gp.Exists(fromFileName+str(i)):
                
return fromFileName+str(i)
                
break
    
return None

inFC 
= sys.argv[1]
outFC 
= GetUnExistsFileName(inFC+"_singlePart")

gp.MultipartToSinglepart(inFC,outFC)

gp.AddMessage(
'成功执行!')

 

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