arcTools.py 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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. import importlib, sys
  11. importlib.reload(sys)
  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