添加字段值

import arcpy
from arcpy import da
from arcpy import env
path=''
env.workspace=path
fc='BJGreenDupli_prj.shp'
mplst=[]
namelst=[]
for row in da.SearchCursor(fc,['Name','Area','SHAPE@']):
    if row[0][-3:]=='Sea':
        print('Area is'+str(row[1]))
        mplst.append(row[2])
        namelst.append(row[0])
SeaM='SeaM.shp'
arcpy.CreateFeatureclass_management(path,SeaM,'Polygon','','','',fc)
arcpy.AddField_management(SeaM,'Name','TEXT')
cursor=da.InserCursor(SeaM,['SHAPE@','Name'])
for n in range(len(mplst)):
    cursor.insertRow([mplst[n],namelst[n]])
del cursor

        
#使用SQL语句查询条件下子集
import arcpy
from arcpy import env
path=''
env.workspace=path
env.overwriteOutput=True
fc='SeaM'
fieldName1='Area'
fieldName2='Length'
arcpy.AddField_management(fc,fieldName1,'FLOAT')
arcpy.AddField_management(fc,fieldName2,'FLOAT')
Arealst=[]
Lengthlst=[]
for row in arcpy.da.SearchCursor(fc,['SHAPE@AREA','SHAPE@LENGTH']):
    Arealst.append(row[0])
    Lengthlst.append(row[1])
cursor=arcpy.da.UpdateCursor(fc,['Area','Length'])
n=0
for row in cursor:
    row[0]=Arealst[n]
    row[1]=Lengthlst[n]
    cursor.updateRow(row)
del cursor,row
c=arcpy.da.SearchCursor(fc,('Length','Name'),""""Length"<2000""")
#多字段可以是列表或组,三重引号
for row in c:
    print('%s\'length is %s'%(str(row[1]),str(row[0])))

#SQL表达式
    whereclause="""%s<2000""" % arcpy.AddFieldDelimiters(fc,'Length')

#在字段名称中添加字段分隔符,以便在 SQL 表达式中使用。

#计算指数
import arcpy,math
from arcpy import env
path=''
env.workspace=path
env.overwriteOutput=True
Sea='SeaM.shp'
SeaG=arcpy.CopyFeatures_management(Sea,arcpy.Geometry())#复制要素到arcpy.Geometry()
#返回几何部分列表
np='NP'#斑块数目
te='TE'#边界总长度
ed='ED'#边界密度
lpi='LPI'#最大斑块指数
mps='MPS'#平均斑块面积
par='PAR'#周长面积比
c='C'#形状指数
arcpy.AddField_management(Sea,np,'FLOAT')
arcpy.AddField_management(Sea,te,'FLOAT')
arcpy.AddField_management(Sea,ed,'FLOAT')
arcpy.AddField_management(Sea,lpi,'FLOAT')
arcpy.AddField_management(Sea,mps,'FLOAT')
arcpy.AddField_management(Sea,par,'FLOAT')
arcpy.AddField_management(Sea,c,'FLOAT')
Arealst=[]
Lengthlst=[]
Namelst=[]
for row in arcpy.da.SearchCursor(Sea,['SHAPE@AREA','SHAPE@LENGTH','Name']):
    Arealst.append(row[0])
    Lengthlst.append(row[1])
    Namelst.append(row[2])
print(Arealst,Lengthlst)
cursor=arcpy.da.UpdateCursor(Sea,['NP','TE','ED','LPI','MPS','PAR','C','Name'])
n=0
for row in cursor:
    row[0]=len(SeaG)
    row[1]=sum(Lengthlst)
    row[2]=sum(Lengthlst)/sum(Arealst)*pow(10,6)
    if row[-1]==Namelst[Arealst.index(max(Arealst))]:
        row[3]=max(Arealst)/sum(Arealst)*100
    else:
        row[3]=0
    row[4]=sum(Arealst)/len(SeaG)
    row[5]=Lengthlst[n]/Arealst[n]
    row[6]=math.sqrt(Arealst[n]/Lengthlst[n])
    cursor.updateRow(row)
    n=n+1
del cursor,row











SeaG=arcpy.CopyFeatures_management(Sea,arcpy.Geometry())#复制要素到arcpy.Geometry()

猜你喜欢

转载自blog.csdn.net/qq_41950131/article/details/90740803