|
DLTB0=老图斑
DLTB1=分割后的新图斑
先统计前后两个图斑的总椭球面积之差,就是要平差的总面积,记为AreaAD.
可以参考如下代码,这个代码是按照面积值的比例来分配的。
- AreaSum0=sum([row[0] for row in arcpy.da.UpdateCursor('DLTB0',u'椭球面积')]) #计算老DLTB总面椭球面积
- AreaSum1=sum([row[0] for row in arcpy.da.UpdateCursor('DLTB1',u'椭球面积')]) #计算分割后新DLTB总面椭球面积
- AreaAD=AreaSum1-AreaSum0 #计算要平差的面积,可正可负
- arcpy.AddField_management("DLTB1",'Scale',"DOUBLE") #添加比例scale字段
- arcpy.AddField_management("DLTB1",u'椭球面积_平差',"DOUBLE") #添加用于存放平差后面积字段
- arcpy.CalculateField_management("DLTB1","Scale","!Shape_Area!/AreaSum1","PYTHON_9.3") #计算scale字段,字段值是dltb1每个要素与总面积的比例
- arcpy.CalculateField_management("DLTB1",u"椭球面积_平差","!Scale!*AreaAD+!椭球面积!","PYTHON_9.3") #将AreaAD按照比例分别平差到各个图斑
复制代码
如果你要按照0.01最小单位来的话,可以计算AreaAD/0.01,为每个图斑分配0.01的个数,然后再计算,道理是一样的。 |
|