#strcpy(sStr1,sStr2)
sStr1 = 'strcpy'
sStr2 = sStr1
sStr1 = 'strcpy2'
print sStr2
#strcat(sStr1,sStr2)
sStr1 = 'strcat'
sStr2 = 'append'
sStr1 += sStr2
print sStr1
#strchr(sStr1,sStr2)
sStr1 = 'strchr'
sStr2 = 'r'
nPos = sStr1.index(sStr2)
print nPos
#strcmp(sStr1,sStr2)
sStr1 = 'strchr'
sStr2 = 'strch'
print cmp(sStr1,sStr2)
#strspn(sStr1,sStr2)
sStr1 = '12345678'
sStr2 = '456'
#sStr1 and chars both in sStr1 and sStr2
print len(sStr1 and sStr2)
#strlen(sStr1)
sStr1 = 'strlen'
print len(sStr1)
#strlwr(sStr1)
sStr1 = 'JCstrlwr'
sStr1 = sStr1.upper()
print sStr1
#strncat(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = 'abcdef'
n = 3
sStr1 += sStr2[0:n]
print sStr1
#strncmp(sStr1,sStr2,n)
sStr1 = '12345'
sStr2 = '123bc'
n = 3
print cmp(sStr1[0:n],sStr2[0:n])
#strncpy(sStr1,sStr2,n)
sStr1 = ''
sStr2 = '12345'
n = 3
sStr1 = sStr2[0:n]
print sStr1
#stricmp(sStr1,sStr2)
sStr1 = 'abcefg'
sStr2 = 'ABCEFG'
print cmp(sStr1.upper(),sStr2.upper())
#strnset(sStr1,ch,n)
sStr1 = '12345'
ch = 'r'
n = 3
sStr1 = n * ch + sStr1[3:]
print sStr1
#strpbrk(sStr1,sStr2)
sStr1 = 'cekjgdklab'
sStr2 = 'gka'
nPos = -1
for c in sStr1:
if c in sStr2:
nPos = sStr1.index(c)
break
print nPos
#strrev(sStr1)
sStr1 = 'abcdefg'
sStr1 = sStr1[::-1]
print sStr1
#strstr(sStr1,sStr2)
sStr1 = 'abcdefg'
sStr2 = 'cde'
print sStr1.find(sStr2)
#strtok(sStr1,sStr2)
sStr1 = 'ab,cde,fgh,ijk'
sStr2 = ','
sStr1 = sStr1[sStr1.find(sStr2) + 1:]
print sStr1
Python是有变量类型的,而且会强制检查变量类型。
内置的变量类型有如下几种:
#整型
integer_number = 90
#浮点
float_number = 90.4
#复数
complex_number = 10 + 10j
#list 序列
sample_list = [1,2,3,'abc']
#dictionary 字典
sample_dic = {"key":value, 2:3}
#tuple 只读的序列
sample_tuple = (1,3,"ab")
flag1 = some_value
flag2 = other_value
if flag1:
do_function_1()
elif flag2:
do_function_2()
else:
do_function_3()
for i in range(0, 10):
print(i)
for i in ['a','b','c','dd','eee'];
print(i)
sample_list = ['a',1,('a','b')]
sample_list = ['a','b',0,1,3]
value_start = sample_list[0]
end_value = sample_list[-1]
del sample_list[0]
sample_list[0:0] = ['sample value']
list_length = len(sample_list)
for element in sample_list:
print(element)
num_inc_list = range(30)
#will return a list [0,1,2,...,29]
initial_value = 0
list_length = 5
sample_list = [ initial_value for i in range(10)]
sample_list = [initial_value]*list_length
# sample_list ==[0,0,0,0,0]
2
Python在ArcGIS常用语句
temp_layer="temp_layer"
gp.MakeFeatureLayer_management(XZQJXName, temp_layer)
gp.SelectLayerByAttribute_management(temp_layer, "NEW_SELECTION",
"JXLX is null")
num=gp.getcount(temp_layer)
if num>0:
gp.AddMessage("返回:"+str(num))
return
if gp.exists(DLJX_buffer):
gp.Select_analysis(layername,DLJX2,"")
#备份
layername是原始数据
中间的备份后表名,最后是条件
gp.Erase_analysis(newtablename,
temp_layer, DLJX, "")
gp.PolygonToLine_management(DLTB,
DLTB_PolygonToLine)
gp.Buffer_analysis(XZDW, XZDW_Buffer,
".5 Meters", "FULL", "ROUND", "NONE", "")
gp.Delete_management(DLTB_PolygonToLine, "FeatureClass")
#删除临时数据
gp.Append_management(DLTB_Select,
outlayername, "TEST", "", "")
后面outlayername是目标图层
前面是要追加的数据
3
Python在ArcGIS中应用
def getfieldidx(TableName,fieldname):
#获得字段位置
desc = gp.Describe(TableName)
fields = desc.Fields
field=fields.next()
i=-1;
while field:
# Check the field name, perform a
calculation when finding the field 'Flag'
#
if field.Name.upper() ==
fieldname.upper():
gp.AddMessage("======:"+fieldname)
return i
field=fields.next()
i=i+1
return -1
def UpdateAngle(dgx):
desc = gp.Describe(dgx)
shapefieldname =
desc.ShapeFieldName
angleidx=getfieldidx(dgx,"Angle")
gp.AddMessage("正在处理======angleidx:"+str(angleidx))
rows =
gp.UpdateCursor(dgx,"Angle>90 and
Angle<270")
row = rows.Next()
p=0
while row:
angle = row.GetValue("Angle")
angle=angle+180
if angle>=360:
angle=angle-360
row.SetValue("Angle",angle);
rows.UpdateRow(row)
gp.AddMessage("正在处理======angle:"+str(p)+":"+str(angle))
p=p+1
row = rows.Next()
代码:
#
---------------------------------------------------------------------------
# 1.py
# Created on: 周二 五月 11 2010 12:24:15
下午
# (generated by ArcGIS/ModelBuilder)
#
---------------------------------------------------------------------------
# Import system modules
import sys, string, os,
arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
inFeatureclass =
gp.GetParameterAsText(0)
inField =
gp.GetParameterAsText(1)
rows =
gp.UpdateCursor(inFeatureclass)
row = rows.Next()
# Calculate the total length of all
roads
#
length = 0
try:
while row:
# Create the geometry object
#
feat = row.shape
length = length + feat.Length
row.SetValue(inField,feat.Length)
rows.UpdateRow(row)
row = rows.Next()
# Print the total length of all
roads
#
gp.AddMessage("总线的长度:"+str(length))
except Exception, ErrorDesc:
gp.AddError(str(ErrorDesc))
参数设置
有输出表可以 model调用
#
---------------------------------------------------------------------------
# 1.py
# Created on: 周二 五月 11 2010 12:24:15
下午
# (generated by ArcGIS/ModelBuilder)
#
---------------------------------------------------------------------------
# Import system modules
import sys, string, os,
arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
inFeatureclass =
gp.GetParameterAsText(0) #原始数据
inField =
gp.GetParameterAsText(1)
outFeatureclass =
gp.GetParameterAsText(2) #输出数据
gp.CopyFeatures(inFeatureclass,outFeatureclass)
rows =
gp.UpdateCursor(outFeatureclass)
row = rows.Next()
# Calculate the total length of all
roads
#
length = 0
try:
while row:
# Create the geometry object
#
feat = row.shape
length = length + feat.Length
row.SetValue(inField,feat.Length)
rows.UpdateRow(row)
row = rows.Next()
# Print the total length of all
roads
#
gp.AddMessage("总线的长度:"+str(length))
except Exception, ErrorDesc:
gp.AddError(str(ErrorDesc))
#
---------------------------------------------------------------------------
# 1.py
# Created on: 星期日 一月 10 2010 11:02:13
上午
# (generated by ArcGIS/ModelBuilder)
# Usage: 1
<输入workspace或gdb>
#
---------------------------------------------------------------------------
# Import system modules
import sys, string, os,
arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
inworkspace =
gp.GetParameterAsText(0)
gp.Workspace = inworkspace
fcs = gp.ListFeatureClasses()
fc = fcs.Next()
while fc:
try:
# Process: 增加id字段...
gp.AddField_management(fc, "id",
"LONG", "", "", "", "序号", "NULLABLE", "NON_REQUIRED", "")
# Process: 增加名称...
gp.AddField_management(fc, "name",
"TEXT", "", "", "16", "名称", "NULLABLE", "NON_REQUIRED", "")
gp.AddMessage("fc="+fc+",加字段已完成");
except Exception, ErrorDesc:
#If an error set output boolean
parameter "Error" to True.
gp.AddError(str(ErrorDesc))
print "Failed to convert %s\\%s\n%s" %
(fc, gp.GetMessages(2))
# Proceed to the next feature class
fc = fcs.Next()
---------------------------------------------------------------------------
# 1.py
# Created on: 星期日 一月 10 2010 11:02:13
上午
# (generated by ArcGIS/ModelBuilder)
# Usage: 1
<输入图层>
#
---------------------------------------------------------------------------
# Import system modules
import sys, string, os,
arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
inworkspace =
gp.GetParameterAsText(0)
gp.Workspace = inworkspace
pItems = gp.ListDatasets()
pItem = pItems.Next()
while pItem:
gp.AddMessage("pItem="+pItem);
pItem = pItems.Next()
#
---------------------------------------------------------------------------
# 1.py
# Created on: 星期日 一月 10 2010 11:02:13
上午
# (generated by ArcGIS/ModelBuilder)
# Usage: 矢量图批量切割, by 闫磊 4个参数
# 原始数据 是图层,可以多选
# 切割工具是是接幅表 或则行政
# 字段是输出mdb名称
# 输出路径
#
---------------------------------------------------------------------------
# Create Geoprocessing Object
import arcgisscripting, sys, os,
string
gp = arcgisscripting.create()
gp.overwriteoutput = 1
inworkspace =
gp.GetParameterAsText(0)
gp.AddMessage("1="+inworkspace)
clipshp =
gp.GetParameterAsText(1)
gp.AddMessage("2=clipshp"+clipshp)
fieldname= gp.GetParameterAsText(2)
gp.AddMessage("3=fieldname"+fieldname)
outworkspace =
gp.GetParameterAsText(3)
gp.AddMessage("4="+outworkspace)
mdbbool =
gp.GetParameterAsText(4)
gp.AddMessage("5="+mdbbool)
desc = gp.Describe(clipshp)
filepath=desc.CatalogPath
p=filepath.find(".mdb")
fields = desc.Fields
ftype="String"
field=fields.next()
while field:
# Check the field name, perform a
calculation when finding the field 'Flag'
#
if field.Name == fieldname:
# Set the value for the field and exit
loop
#
ftype=field.Type
break
field=fields.next()
jfb_Select="c:\\yl.shp"
#不能c:\要c:\\或则c:/
rows = gp.searchcursor(clipshp)
#gp.AddMessage("5=执行到这里")
row = rows.next()
#gp.AddMessage("6=执行到这里")
while row:
#gp.AddMessage("7=执行到这里")
fieldvalue =""+
row.GetValue(fieldname)
#gp.AddMessage("fieldvalue="+fieldvalue)
if p>0: #mdb
Expression="["+fieldname +"]="
else:
Expression="""+fieldname +""="
#gp.AddMessage("Expression1="+Expression)
if ftype=="String":
Expression=Expression+"'"+fieldvalue+"'"
else:
Expression=Expression+fieldvalue
#gp.AddMessage("Expression2="+Expression)
gp.Select_analysis(clipshp,
jfb_Select,Expression)
#gp.AddMessage("6=clipshp"+clipshp)
out_mdb=""
#gp.AddMessage("======================================================out_mdb"+out_mdb)
if mdbbool=="True":
out_mdb=outworkspace +
"\"+fieldvalue+".mdb" #os.path.basename(dataset)
else:
out_mdb=outworkspace +
"\"+fieldvalue+".gdb"
gp.AddMessage("3=out_mdb"+out_mdb)
if not gp.Exists(out_mdb):
if mdbbool=="True":
gp.CreatePersonalGDB(os.path.dirname(out_mdb),os.path.basename(out_mdb))
else:
gp.CreateFileGDB(os.path.dirname(out_mdb),os.path.basename(out_mdb))
#gp.AddMessage("88888888888888888888888888888888888888")
mydatasets=
string.split(inworkspace,";")
for dataset in mydatasets:
try:
gp.AddMessage("正在切割="+dataset+":为"+out_mdb+"\"+
os.path.basename(dataset))
gp.Clip_analysis(dataset,
jfb_Select,out_mdb+"\"+ os.path.basename(dataset), ".001
Meters")
except Exception, ErrorDesc:
#If an error set output boolean
parameter "Error" to True.
gp.AddError(str(ErrorDesc))
row = rows.next()
if gp.exists(jfb_Select):
gp.Delete_management(jfb_Select)
运行界面
输出mdb,切割使用shp
#
---------------------------------------------------------------------------
# 1.py
# Created on: 星期日 一月 10 2010 11:02:13
上午
# (generated by ArcGIS/ModelBuilder)
# Usage: 矢量图批量切割, by 闫磊 4个参数
# 原始数据 是图层,可以多选
# 切割工具是是接幅表 或则行政
# 字段是输出mdb名称
# 输出路径
#
---------------------------------------------------------------------------
# Create Geoprocessing Object
import arcgisscripting, sys, os,
string
gp = arcgisscripting.create()
gp.overwriteoutput = 1
inworkspace =
gp.GetParameterAsText(0)
gp.AddMessage("1="+inworkspace)
clipshp =
gp.GetParameterAsText(1)
gp.AddMessage("2=clipshp"+clipshp)
fieldname= gp.GetParameterAsText(2)
gp.AddMessage("3=fieldname"+fieldname)
outworkspace =
gp.GetParameterAsText(3)
gp.AddMessage("4="+outworkspace)
rows = gp.searchcursor(clipshp)
gp.AddMessage("5=执行到这里")
row = rows.next()
jfb_Select="e:\\yl.shp"
#不能c:\要c:\\或则c:/
gp.AddMessage("6=执行到这里")
while row:
gp.AddMessage("7=执行到这里")
fieldvalue ="" +
row.GetValue(fieldname)
gp.AddMessage("fieldvalue="+fieldvalue)
Expression="""+fieldname +"" like
'"+fieldvalue+"'"
gp.AddMessage("Expression="+Expression)
gp.Select_analysis(clipshp,
jfb_Select,Expression)
gp.AddMessage("6=clipshp"+clipshp)
out_mdb=outworkspace +
"\"+fieldvalue+".mdb" #os.path.basename(dataset)
p=out_mdb.find(".")
out_mdb=out_mdb[0:p]+".mdb"
gp.AddMessage("3="+out_mdb)
if not gp.Exists(out_mdb):
gp.CreatePersonalGDB(os.path.dirname(out_mdb),os.path.basename(out_mdb))
try:
indatasets = string.split(inworkspace ,
";")
for dataset in indatasets:
gp.AddMessage("正在切割="+dataset+":为"+out_mdb+"\"+
os.path.basename(dataset))
gp.Clip_analysis(dataset,
jfb_Select,out_mdb+"\"+ os.path.basename(dataset), ".001
Meters")
except Exception, ErrorDesc:
#If an error set output boolean
parameter "Error" to True.
gp.AddError(str(ErrorDesc))
row = rows.next()
#
---------------------------------------------------------------------------
# 1.py
# Created on: 星期日 一月 10 2010 11:02:13
上午
# (generated by ArcGIS/ModelBuilder)
# Usage: 影像批量切割, by 闫磊 4个参数
# 原始影像数据
# 切割工具是是接幅表 或则行政
# 字段是输出gdb名称
# 输出路径
#
---------------------------------------------------------------------------
# Create Geoprocessing Object
import arcgisscripting, sys, os,
string,types
gp = arcgisscripting.create(9.3)
gp.overwriteoutput = 1
oldraster =
gp.GetParameterAsText(0)
gp.AddMessage("1oldraster="+oldraster)
clipshp =
gp.GetParameterAsText(1)
gp.AddMessage("2clipshp="+clipshp)
fieldname= gp.GetParameterAsText(2)
gp.AddMessage("3fieldname="+fieldname)
outworkspace =
gp.GetParameterAsText(3)
gp.AddMessage("4="+outworkspace)
desc = gp.Describe(clipshp)
filepath=desc.CatalogPath
p=filepath.find(".mdb")
fields = desc.Fields
ftype="String"
for field in fields:
# Check the field name, perform a
calculation when finding the field 'Flag'
#
if field.Name == fieldname:
# Set the value for the field and exit
loop
#
ftype=field.Type
break
rows = gp.searchcursor(clipshp)
row = rows.next()
jfb_Select=outworkspace+"\\temp.shp"
#不能c:\要c:\\或则c:/
#gp.CheckOutExtension("spatial")
while row:
try:
value=str(row.GetValue(fieldname))
fieldvalue = value
if p>0: #mdb
Expression="["+fieldname +"]="
else:
Expression="""+fieldname +""="
if ftype=="String":
Expression=Expression+"'"+fieldvalue+"'"
else:
Expression=Expression+fieldvalue
gp.AddMessage("Expression="+Expression+",jfb_Select="+jfb_Select+",clipshp="+clipshp)
gp.Select_analysis(clipshp, jfb_Select,
Expression)
out_raster
=outworkspace+"/"+fieldvalue+".img"
gp.ExtractByMask_sa(oldraster,
jfb_Select, out_raster)
except Exception, ErrorDesc:
#If an error set output boolean
parameter "Error" to True.
gp.AddError(str(ErrorDesc))
row = rows.next()
if gp.exists(jfb_Select):
gp.Delete_management(jfb_Select)
参数设置:
界面:
最终代码,考虑了数字和字符串
#
---------------------------------------------------------------------------
# 1.py
# Created on: 星期日 一月 10 2010 11:02:13
上午
# (generated by ArcGIS/ModelBuilder)
# Usage: 影像批量切割, by 闫磊 4个参数
# 原始影像数据
# 切割工具是是接幅表 或则行政
# 字段是输出gdb名称
# 输出路径
#
---------------------------------------------------------------------------
# Create Geoprocessing Object
import arcgisscripting, sys, os,
string,types
gp = arcgisscripting.create(9.3)
gp.overwriteoutput = 1
oldraster =
gp.GetParameterAsText(0)
gp.AddMessage("1oldraster="+oldraster)
clipshp =
gp.GetParameterAsText(1)
gp.AddMessage("2clipshp="+clipshp)
fieldname= gp.GetParameterAsText(2)
gp.AddMessage("3fieldname="+fieldname)
outworkspace =
gp.GetParameterAsText(3)
gp.AddMessage("4="+outworkspace)
desc = gp.Describe(clipshp)
fields = desc.Fields
ftype="String"
for field in fields:
# Check the field name, perform a
calculation when finding the field 'Flag'
#
if field.Name == fieldname:
# Set the value for the field and exit
loop
#
ftype=field.Type
break
rows = gp.searchcursor(clipshp)
row = rows.next()
jfb_Select=outworkspace+"\\temp.shp"
#不能c:\要c:\\或则c:/
#gp.CheckOutExtension("spatial")
while row:
try:
value=str(row.GetValue(fieldname))
fieldvalue = value
if ftype=="String":
Expression="""+fieldname
+""='"+fieldvalue+"'"
else:
Expression="""+fieldname
+""="+fieldvalue
gp.AddMessage("Expression="+Expression+",jfb_Select="+jfb_Select+",clipshp="+clipshp)
gp.Select_analysis(clipshp, jfb_Select,
Expression)
out_raster
=outworkspace+"/"+fieldvalue+".img"
gp.ExtractByMask_sa(oldraster,
jfb_Select, out_raster)
except Exception, ErrorDesc:
#If an error set output boolean
parameter "Error" to True.
gp.AddError(str(ErrorDesc))
row = rows.next()
if gp.exists(jfb_Select):
gp.Delete_management(jfb_Select)
#
---------------------------------------------------------------------------
# 1.py
# Created on: 星期日 一月 10 2010 11:02:13
上午
# (generated by ArcGIS/ModelBuilder)
# Usage: 影像批量切割, by 闫磊 4个参数
# 原始影像数据 不要临时导出数据,要打开数据
# 切割工具是是接幅表 或则行政
# 字段是输出gdb名称
# 输出路径
#
---------------------------------------------------------------------------
# Create Geoprocessing Object
import arcgisscripting, sys, os,
string,types
gp = arcgisscripting.create(9.3)
gp.overwriteoutput = 1
oldraster =
gp.GetParameterAsText(0)
gp.AddMessage("1oldraster="+oldraster)
clipshp =
gp.GetParameterAsText(1)
gp.AddMessage("2clipshp="+clipshp)
fieldname= gp.GetParameterAsText(2)
gp.AddMessage("3fieldname="+fieldname)
outworkspace =
gp.GetParameterAsText(3)
gp.AddMessage("4="+outworkspace)
desc = gp.Describe(clipshp)
fields = desc.Fields
ftype="String"
for field in fields:
# Check the field name, perform a
calculation when finding the field 'Flag'
#
if field.Name == fieldname:
# Set the value for the field and exit
loop
#
ftype=field.Type
break
rows = gp.searchcursor(clipshp)
row = rows.next()
#gp.CheckOutExtension("spatial")
while row:
try:
value=str(row.GetValue(fieldname))
fieldvalue = value
if ftype=="String":
Expression="""+fieldname
+""='"+fieldvalue+"'"
else:
Expression="""+fieldname
+""="+fieldvalue
gp.AddMessage("Expression="+Expression+",clipshp="+clipshp)
gp.SelectLayerByAttribute_management(clipshp, "NEW_SELECTION",
Expression)
out_raster
=outworkspace+"/"+fieldvalue+".img"
gp.ExtractByMask_sa(oldraster, clipshp,
out_raster)
except Exception, ErrorDesc:
#If an error set output boolean
parameter "Error" to True.
gp.AddError(str(ErrorDesc))
row = rows.next()
import arcgisscripting
import os
from os.path import join, getsize
gp = arcgisscripting.create()
inpath = gp.GetParameterAsText(0)
for root, dirs, files in os.walk(inpath):
gp.workspace = root
# List all access workspaces in the current workspace
workspaces = gp.listworkspaces("*", "access")
workspace = workspaces.next()
try:
while workspace:
# Compact
each geodatabase
gp.AddMessage("处理名字mdb:"+workspace)
gp.compact(workspace)
workspace =
workspaces.next()
except Exception, ErrorDesc:
gp.AddError(str(ErrorDesc))
workspaces = gp.listworkspaces("*", "FileGDB")
workspace = workspaces.next()
try:
while workspace:
# Compact
each geodatabase
gp.AddMessage("处理名字FileGDB:"+workspace)
gp.compact(workspace)
workspace =
workspaces.next()
except Exception, ErrorDesc:
gp.AddError(str(ErrorDesc))
运行界面
参数设置
#
---------------------------------------------------------------------------
# 1.py
# Created on: 星期日 一月 10 2010 11:02:13 上午
# (generated by
ArcGIS/ModelBuilder)
# Usage: 1 <输入workspace或gdb>
#
---------------------------------------------------------------------------
# Import system modules
import sys, string, os, arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
inworkspace = gp.GetParameterAsText(0)
gp.Workspace = inworkspace
fcs = gp.ListFeatureClasses("", "Polygon", "")
fc = fcs.Next()
while fc:
try:
gp.RepairGeometry_management(inworkspace+"\"+fc+".shp",
"DELETE_NULL")
gp.AddMessage("处理图层:"+inworkspace+"\"+fc+".shp")
except
Exception, ErrorDesc:
#If an error set output boolean parameter "Error" to True.
gp.AddError(str(ErrorDesc))
# Proceed
to the next feature class
fc =
fcs.Next()
对于MDB
#
---------------------------------------------------------------------------
# 1.py
# Created on: 星期日 一月 10 2010 11:02:13 上午
# (generated by
ArcGIS/ModelBuilder)
# Usage: 1 <输入workspace或gdb>
#
---------------------------------------------------------------------------
# Import system modules
import sys, string, os, arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
inworkspace = gp.GetParameterAsText(0)
gp.Workspace = inworkspace
fcs = gp.ListFeatureClasses("", "Polygon", "")
fc = fcs.Next()
while fc:
try:
gp.RepairGeometry_management(inworkspace+"\"+fc,
"DELETE_NULL")
gp.AddMessage("处理图层:"+inworkspace+"\"+fc)
except
Exception, ErrorDesc:
#If an error set output boolean parameter "Error" to True.
gp.AddError(str(ErrorDesc))
# Proceed
to the next feature class
fc =
fcs.Next()
3.11 修复一个MBD下所有面文件(含数据集)
#
---------------------------------------------------------------------------
# 1.py
# Created on: 星期日 一月 10 2010 11:02:13 上午
# (generated by
ArcGIS/ModelBuilder)
# Usage: 1 <输入workspace或gdb>
#
---------------------------------------------------------------------------
# Import system modules
import sys, string, os, arcgisscripting
# Create the Geoprocessor object
gp = arcgisscripting.create()
inworkspace = gp.GetParameterAsText(0)
gp.Workspace = inworkspace
fcs = gp.ListFeatureClasses("", "Polygon", "")
fc = fcs.Next()
while fc:
try:
gp.RepairGeometry_management(inworkspace+"\"+fc,
"DELETE_NULL")
gp.AddMessage("处理图层:"+inworkspace+"\"+fc)
except
Exception, ErrorDesc:
#If an error set output boolean parameter "Error" to True.
gp.AddError(str(ErrorDesc))
# Proceed
to the next feature class
fc =
fcs.Next()
datasets = gp.listdatasets("", "")
dataset = datasets.Next()
while dataset:
gp.AddMessage("处理图层:"+dataset)
gp.Workspace = inworkspace+"\"+dataset
fcs =
gp.ListFeatureClasses("", "Polygon", "")
fc =
fcs.Next()
while
fc:
try:
gp.RepairGeometry_management(fc, "DELETE_NULL")
gp.AddMessage("处理图层:"+fc)
except Exception, ErrorDesc:
#If an error set output boolean parameter "Error" to True.
gp.AddError(str(ErrorDesc))
# Proceed to the next feature class
fc = fcs.Next()
dataset =
datasets.Next()
import arcgisscripting
import os
from os.path import join, getsize
gp = arcgisscripting.create()
inpath = gp.GetParameterAsText(0)
for root, dirs, files in os.walk(inpath):
gp.workspace = root
# List all access workspaces in the current workspace
workspaces = gp.listworkspaces("*", "access")
inworkspace = workspaces.next()
while inworkspace:
gp.Workspace = inworkspace
fcs = gp.ListFeatureClasses("", "Polygon", "")
fc = fcs.Next()
while fc:
try:
gp.RepairGeometry_management(inworkspace+"\"+fc,
"DELETE_NULL")
gp.AddMessage("处理图层:"+inworkspace+"\"+fc)
except Exception, ErrorDesc:
#If an error set output boolean parameter "Error" to True.
gp.AddError(str(ErrorDesc))
# Proceed to the next feature class
fc = fcs.Next()
datasets = gp.listdatasets("", "")
dataset = datasets.Next()
while dataset:
gp.AddMessage("处理图层:"+dataset)
gp.Workspace = inworkspace+"\"+dataset
fcs = gp.ListFeatureClasses("", "Polygon", "")
fc = fcs.Next()
while fc:
try:
gp.RepairGeometry_management(fc, "DELETE_NULL")
gp.AddMessage("处理图层:"+fc)
except Exception, ErrorDesc:
#If an error set output boolean parameter "Error" to True.
gp.AddError(str(ErrorDesc))
# Proceed to the next feature class
fc = fcs.Next()
dataset = datasets.Next()
inworkspace = workspaces.next()
3.13 #修复一个目录下含子目录,所有shp面文件
import arcgisscripting
import os
from os.path import join, getsize
gp = arcgisscripting.create()
inpath = gp.GetParameterAsText(0)
for root, dirs, files in os.walk(inpath):
gp.workspace = root
inworkspace=root
fcs = gp.ListFeatureClasses("", "Polygon", "")
fc = fcs.Next()
while fc:
try:
gp.RepairGeometry_management(inworkspace+"\"+fc+".shp",
"DELETE_NULL")
gp.AddMessage("处理图层:"+inworkspace+"\"+fc+".shp")
except Exception, ErrorDesc:
#If an error set output boolean parameter "Error" to True.
gp.AddError(str(ErrorDesc))
# Proceed to the next feature class
fc = fcs.Next()
# -*- coding: cp936 -*-
#
---------------------------------------------------------------------------
# 1.py
# Created on: 星期日 一月 10 2010 11:02:13 上午
# (generated by
ArcGIS/ModelBuilder)
# Usage: 1
<输入workspace>,把一个目录含子目录的gdb,转换为mdb
#
---------------------------------------------------------------------------
# Import system modules
import sys, string, os, arcgisscripting
def tomdb(inworkspace,outworkspace,gp):
gp.AddMessage("进入子函数处理图层:"+outworkspace+":"+inworkspace+"===========")
pathstr=os.path.dirname(outworkspace)
if not
os.path.exists(pathstr):
os.makedirs(pathstr)
if not
gp.Exists(outworkspace):
gp.CreatePersonalGDB(pathstr,os.path.basename(outworkspace))
gp.AddMessage("到这里:"+outworkspace+":"+inworkspace+"===========")
gp.Workspace = inworkspace
fcs =
gp.ListFeatureClasses("", "", "")
fc =
fcs.Next()
while
fc:
try:
gp.AddMessage("进入子函数处理图层:"+inworkspace+"\"+fc)
gp.CopyFeatures(inworkspace+"\"+fc, outworkspace+"\"+fc)
except Exception, ErrorDesc:
#If an error set output boolean parameter "Error" to True.
gp.AddError(str(ErrorDesc))
# Proceed to the next feature class
fc = fcs.Next()
#数据集
pItems =
gp.ListDatasets()
pItem =
pItems.Next()
while
pItem:
try:
gp.AddMessage("处理数据集:"+inworkspace+"\"+pItem)
gp.Copy_management(inworkspace+"\"+pItem,
outworkspace+"\"+pItem,"FeatureDataset")
except Exception, ErrorDesc:
#If
an error set output boolean parameter "Error" to True.
gp.AddError(str(ErrorDesc))
pItem =
pItems.Next()
# Create the Geoprocessor object
gp = arcgisscripting.create()
inworkspace = gp.GetParameterAsText(0)
outworkspace = gp.GetParameterAsText(1)
if not gp.Exists(outworkspace):
gp.CreateFolder_management(os.path.dirname(outworkspace),os.path.basename(outworkspace))
inpath = gp.GetParameterAsText(0)
for root, dirs, files in os.walk(inpath):
gp.workspace = root
workspaces = gp.listworkspaces("*", "FileGDB")
workspace = workspaces.next()
try:
while workspace:
# Compact
each geodatabase
gp.AddMessage("处理名字FileGDB:"+workspace)
outname=workspace.replace(inworkspace,"")+os.path.basename(workspace)
p=outname.find(".")
outname=outname[0:p]+".mdb"
tomdb(workspace,outworkspace+os.sep+outname,gp)
workspace =
workspaces.next()
except Exception, ErrorDesc:
gp.AddError(str(ErrorDesc))
import arcpy
mxd =
arcpy.mapping.MapDocument(r"C:\Project\Project.mxd")
mxd.replaceWorkspaces(r"C:\Project\Data",
"SHAPEFILE_WORKSPACE", r"C:\Project\Data\Parcels.gdb",
"FILEGDB_WORKSPACE")
mxd.replaceWorkspaces(r"C:\Project\Data\Transportation.mdb",
"ACCESS_WORKSPACE", r"C:\Project\Data\Transportation.gdb",
"FILEGDB_WORKSPACE")
mxd.saveACopy(r"C:\Project\Project2.mxd")
del mxd
#
---------------------------------------------------------------------------
# rr.py
# Created on: 周二 十一月 02 2010 07:04:51 下午
# (generated by
ArcGIS/ModelBuilder)
# Usage: rr <表达式>
<计算>
#
---------------------------------------------------------------------------
# Import system modules
import sys, string, os, arcgisscripting
#批量数据图层备份
# Create the Geoprocessor object
gp = arcgisscripting.create()
gp.AddToolbox("C:/Program Files
(x86)/ArcGIS/ArcToolbox/Toolboxes/Analysis Tools.tbx")
gp.overwriteoutput = 1
def update59(DLTB,DLFH):
rows =gp.searchcursor(DLTB,"DLBM Like '2*'")
row = rows.Next()
uniqueList = []
while row:
if row.GetValue("DLBM") not in uniqueList:
uniqueList.append(row.GetValue("DLBM"))
row = rows.Next()
dltb_Layer="dltb_Layer"
dlfh_layer="dlfh_layer"
for dldm in uniqueList:
gp.MakeFeatureLayer_management(DLTB, dltb_Layer, "[DLBM] LIKE
'"+dldm+"'")
gp.MakeFeatureLayer_management(DLFH, dlfh_layer)
gp.SelectLayerByLocation_management(dlfh_layer,
"INTERSECT", dltb_Layer, "", "NEW_SELECTION")
if (dldm==201) or (dldm==202) or (dldm==203):
gp.AddMessage("删除:"+str(gp.getcount(dlfh_layer)))
gp.DeleteFeatures_management(dlfh_layer)
#不需要地类符号
else:
result=gp.CalculateField_management(dlfh_layer, "DLBM", dldm, "VB",
"")
gp.AddMessage("更新:"+str(result)+":"+str(gp.getcount(dlfh_layer)))
inworkspace = gp.GetParameterAsText(0)
#分幅数据所在目录哦
layername = "DLFH" #原始名称
newlayername = "DLFH1" #新名称
for root, dirs, files in
os.walk(inworkspace):
gp.workspace = root
workspaces = gp.listworkspaces("*", "access")
workspace = workspaces.next()
while workspace:
try:
gp.workspace = workspace
DLTB_Select=workspace+"\"+layername
newtablename=workspace+"\"+newlayername
if not gp.Exists(newtablename):
gp.Select_analysis(DLTB_Select,newtablename,"") #备份
gp.AddMessage("备份:"+DLTB_Select+"为:"+newtablename)
gp.CalculateField_management(DLTB_Select, "DLBM",
"mid([DLBM],1,3)", "VB", "")
#更新05-09符号
DLTB=workspace+"\\DLTB"
update59(DLTB,DLTB_Select)
except Exception, ErrorDesc:
gp.AddError(str(ErrorDesc))
workspace = workspaces.next()