python代码入门教程_python 入门教程

#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()

你可能感兴趣的:(python代码入门教程)