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