arcTools.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. # -*- coding: utf-8 -*-
  2. import os
  3. import sys
  4. import log
  5. import uuid
  6. import json
  7. import arcpy
  8. import appconfig
  9. from arcpy import env
  10. reload(sys)
  11. sys.setdefaultencoding('utf-8')
  12. #线性测量单位关键字:METERS(米)、KILOMETERS(千米)
  13. #面积测量单位关键字:SQUAREMETERS(平方米)、SQUAREKILOMETERS(平方千米)
  14. # 缓冲分析
  15. def Buffer_analysis(inList, comObj, outGdb, xzq):
  16. in_node = inList[0]
  17. in_features = in_node['sjy']
  18. out_feature_class = r"{0}\M{1}_Buffer_{2}".format(outGdb,xzq,in_node["key"])
  19. #设置工作空间
  20. if in_node['category'] == "sjy":
  21. env.workspace = appconfig.SDE[in_node['sjylx']]
  22. else:
  23. env.workspace = outGdb
  24. #SDE+os.sep+table
  25. arcpy.Buffer_analysis(in_features, out_feature_class, comObj["buffer"])
  26. return out_feature_class
  27. # 条件筛选
  28. def Select_analysis(inList, comObj, outGdb, xzq):
  29. in_node = inList[0]
  30. in_features = in_node['sjy']
  31. out_feature_class = r"{0}\M{1}_Select_{2}".format(outGdb,xzq,in_node["key"])
  32. #设置工作空间
  33. if in_node['category'] == "sjy":
  34. env.workspace = appconfig.SDE[in_node['sjylx']]
  35. else:
  36. env.workspace = outGdb
  37. arcpy.Select_analysis(in_features, out_feature_class, comObj["gltj"])
  38. return out_feature_class
  39. # 相交分析
  40. def Intersect_analysis(inList, comObj, outGdb, xzq):
  41. in_features = []
  42. out_feature_class = r"{0}\M{1}_Intersect_".format(outGdb,xzq)
  43. env.workspace = outGdb #设置工作空间
  44. for in_node in inList:
  45. out_feature_class += "_" + in_node["key"]
  46. if in_node['category'] == "sjy":
  47. sde = appconfig.SDE[in_node['sjylx']]
  48. in_features.append(sde + os.sep + in_node['sjy'])
  49. else:
  50. in_features.append(in_node['sjy'])
  51. arcpy.Intersect_analysis(in_features, out_feature_class)
  52. return out_feature_class
  53. # 相交取反分析
  54. def SymDiff_analysis(inList, comObj, outGdb, xzq):
  55. in_features = []
  56. out_feature_class = r"{0}\M{1}_SymDiff_".format(outGdb,xzq)
  57. env.workspace = outGdb #设置工作空间
  58. for in_node in inList:
  59. out_feature_class += "_" + in_node["key"]
  60. if in_node['category'] == "sjy":
  61. sde = appconfig.SDE[in_node['sjylx']]
  62. in_features.append(sde + os.sep + in_node['sjy'])
  63. else:
  64. in_features.append(in_node['sjy'])
  65. arcpy.SymDiff_analysis(in_features, out_feature_class)
  66. return out_feature_class
  67. # 融合
  68. def Dissolve_management(inList, comObj, outGdb, xzq):
  69. in_node = inList[0]
  70. in_features = in_node['sjy']
  71. out_feature_class = r"{0}\M{1}_Dissolve_{2}".format(outGdb,xzq,in_node["key"])
  72. #设置工作空间
  73. if in_node['category'] == "sjy":
  74. env.workspace = appconfig.SDE[in_node['sjylx']]
  75. else:
  76. env.workspace = outGdb
  77. arcpy.Dissolve_management(in_features, out_feature_class)
  78. return out_feature_class
  79. #--------------------------------------------------
  80. # 添加字段
  81. def AddField_management(in_table, field_name, field_type):
  82. arcpy.AddField_management(in_table, field_name, field_type)
  83. # 计算字段
  84. def CalculateField_management(in_table, field, pyExp):
  85. arcpy.CalculateField_management(in_table, field, pyExp, "PYTHON_9.3")
  86. # 获取指定列的值
  87. def GetFieldValueList(inTable,inField):
  88. value_list=[]
  89. rows=arcpy.da.SearchCursor(inTable,inField)
  90. for row in rows:
  91. value_list.append(row[0])
  92. del row
  93. del rows
  94. return value_list