ArcPy脚本对面范围变化检查

 1 # -*- coding: GBK -*-
 2 import arcpy , os , csv
 3 
 4 in_new = arcpy.GetParameterAsText(0)
 5 in_old = arcpy.GetParameterAsText(1)
 6 output = arcpy.GetParameterAsText(2)
 7 
 8 def PolygonChangeCheck(in_new,in_old,output):
 9     pr = "province"
10     ci = "city"
11     co = "county"
12     to = "town"
13     newname = os.path.basename(in_new)
14     oldname = os.path.basename(in_old)
15     fcnew = os.path.join(output,newname)
16     fcold = os.path.join(output,oldname)
17     print str(newname[0:-4])
18     print str(oldname[0:-4])
19     polygoncheck = "polygonck_" + newname
20     ckpoiygon = os.path.join(output,polygoncheck)
21 
22     print arcpy.AddMessage("1- 独孤九剑-破剑式...")
23     arcpy.CopyFeatures_management(in_new, fcnew)
24     arcpy.CopyFeatures_management(in_old, fcold)
25     print arcpy.AddMessage("2- 独孤九剑-破刀式...")
26     arcpy.AddField_management(fcnew, "area", "DOUBLE")
27     arcpy.AddField_management(fcold, "area", "DOUBLE")
28     print arcpy.AddMessage("3- 独孤九剑-破斧式...")
29     with arcpy.da.UpdateCursor(fcnew,["area","SHAPE@AREA"])as cursor:
30         for row in cursor:
31             ar = row[1]
32             if newname[0:4] == to:
33                 row[0] = str(ar)[0:7]
34             else:
35                 row[0] = str(ar)[0:7]
36             print row[0]
37             cursor.updateRow(row)
38     with arcpy.da.UpdateCursor(fcold,["area","SHAPE@AREA"])as cursor:
39         for row in cursor:
40             ai = row[1]
41             if oldname[0:4] == to:
42                 row[0] = str(ai)[0:7]
43             else:
44                 row[0] = str(ai)[0:7]
45             print row[0]
46             cursor.updateRow(row)
47     print arcpy.AddMessage("4- 独孤九剑-破枪式...")
48     arcpy.JoinField_management(fcnew, "admin_code", fcold, "admin_code", "")
49     print arcpy.AddMessage("5- 独孤九剑-破鞭式...")
50     arcpy.AddField_management(fcnew, "js", "SHORT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
51     print arcpy.AddMessage("6- 独孤九剑-破索式...")
52     arcpy.CalculateField_management(fcnew, "js", "js( !area! , !area_1! )", "PYTHON_9.3", "def js(a,b):\\n  if(a==b):return 1\\n  else: return 0")
53     print arcpy.AddMessage("7- 独孤九剑-破掌式...")
54     arcpy.Select_analysis(fcnew, ckpoiygon, "js = 0")
55     print arcpy.AddMessage("8- 独孤九剑-破箭式...")
56     arcpy.Delete_management(fcnew)
57     arcpy.Delete_management(fcold)
58     print arcpy.AddMessage("9- 独孤九剑-破气式...\n以下是变更记录:")
59 
60     # 读取错误要素游标,写入csv文件
61     cursor = arcpy.da.SearchCursor(ckpoiygon, ["admin_code", "name", "X", "Y","area"])
62     i = 1
63     for row in cursor:
64 
65         ck = str(i) +"- "+ str(row[0])+","+str(row[1])+","+str(row[4])
66         arcpy.AddMessage(ck)
67         flist = str(i)+","+ str(row[0])+","+str(row[1])+","+str(row[4])
68         # print flist
69 
70         name = str(newname[0:-4]) + "_change.csvi"
71         csvpath = os.path.join(output, name)
72         path = csvpath
73         with open(path, 'ab') as f:
74             csv_write = csv.writer(f)
75             csv_write.writerow([flist.decode("utf-8")])
76         i += 1
77 
78 PolygonChangeCheck(in_new,in_old,output)
79 print arcpy.AddMessage("--- 打完收工 ---")
80 print arcpy.GetMessages()

 

posted @ 2021-03-04 17:41  Eric_Koh  阅读(106)  评论(0)    收藏  举报