【问题标题】:Cannot generate subsets of feature class with arcpy (ArcGIS library in Python 2.7)无法使用 arcpy 生成要素类的子集(Python 2.7 中的 ArcGIS 库)
【发布时间】:2020-10-13 11:41:12
【问题描述】:

我在使用库 ArcPy 处理 Python 中的 GIS 数据时遇到了困难。
我一直在尝试根据属性表的字段从要素类生成独立的要素,该字段是代表生产性森林单元的唯一代码,但我无法完成。
我已经在其他情况下这样做了,但是这次我不知道我错过了什么。
这是我得到的代码和错误:
# coding utf-8
import arcpy

arcpy.env.overwriteOutput = True
ws = r'D:\Projeto_VANT\SIG\proc_parc.gdb'
arcpy.env.workspace = ws

talhoes = r'copy_talhoes'

estados = ('SP', 'MG')
florestas = ('PROPRIA', 'PARCERIA')

arcpy.MakeFeatureLayer_management(talhoes,
                                          'talhoes_layer',
                                          """ "ESTADO" IN {} AND "FLORESTA" IN {} """.format(estados, florestas),
                                          ws)
arcpy.FeatureClassToFeatureClass_conversion(in_features = 'talhoes_layer',
                                            out_path = ws,
                                            out_name = 'talhoes1')
talhoes1 = r'talhoes1'

arcpy.AddField_management(talhoes1, 'CONCAT_T', 'TEXT')
arcpy.CalculateField_management(talhoes1, 'CONCAT_T', """ [ESTADO] & "_" & [CODIGO] & "_" & [TALHAO] """, 'VB')

with arcpy.da.SearchCursor(talhoes1, ['CONCAT_T', 'AREA']) as tal_cursor:
    for x in tal_cursor:
        print(x[0] + " " + str(x[1])) # This print is just to check if the cursor works and it does!
        arcpy.MakeFeatureLayer_management(x,
                                          'teste',
                                          """ CONCAT_T = '{}' """.format(str(x[0]))) # Apparently the problem is here!
        arcpy.CopyFeatures_management('teste',
                                      'Layer{}'.format(x[0]))

这是错误:

Traceback (most recent call last):
  File "D:/ArcPy_Classes/Scripts/sampling_sig.py", line 32, in <module>
    """ CONCAT_T = '{}' """.format(str(x[0])))
  File "C:\Program Files (x86)\ArcGIS\Desktop10.5\ArcPy\arcpy\management.py", line 6965, in MakeFeatureLayer
    raise e
RuntimeError: Object: Error in executing tool

【问题讨论】:

标签: python python-2.7 gis arcgis arcpy


【解决方案1】:

我认为问题在于您的 In 功能。你会希望你的 in 特征是 talhoes1 因为 x 是光标对象而不是特征。

  arcpy.MakeFeatureLayer_management(talhoes1,'teste',""" CONCAT_T = 
  '{}'""".format(str(x[0])))

【讨论】:

  • 感谢您的回答,但我已经在gis.stackexchange.com 发布了这个问题,他们已经帮助了我。但无论如何,谢谢,你是唯一回答我问题的人!
  • 是的,我发现 GIS 堆栈交换更适合 GIS 相关问题。
猜你喜欢
  • 2015-05-25
  • 2016-06-26
  • 2018-12-19
  • 2020-11-14
  • 2021-07-04
  • 2014-12-22
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多