【问题标题】:Why are the results different when using a variable as a parameter in SearchCursor?为什么在 SearchCursor 中使用变量作为参数时结果会不同?
【发布时间】:2022-08-16 04:40:46
【问题描述】:

当使用变量作为参数时,使用 SearchCursor 打印行与硬编码时的结果不同。我正在使用 ArcGIS Pro 中的 python 控制台来获取这些结果。两个代码块中引用的层是同一层,因此结果应该相同。

当我将以下使用硬编码名称作为图层名称和字段名称的代码粘贴到控制台中时,它会返回所有行

with arcpy.da.SearchCursor(\'Residential Inspector\', [\'INSPECTOR_AREAS_NUMBER\',\'RESIDENTIAL_INSPECTOR_NAME\']) as cursor:
    for row in cursor:
        print(row)

但是,当我使用变量代替图层和字段名称时,它只返回 4 行

inspectors = m.listLayers(\"Residential Inspector\")[0]
input_fields=[\'INSPECTOR_AREAS_NUMBER\',\'RESIDENTIAL_INSPECTOR_NAME\']
with arcpy.da.SearchCursor(inspectors, input_fields) as cursor:
    for row in cursor:
        print(row)

为什么一个只打印 4 行而另一个打印所有 93 行?

  • \'Residential Inspector\' 不等于 m.listLayers(\"Residential Inspector\")[0]
  • 他们有什么不同?
  • 我不知道。我无权访问您的环境 ;-) 我假设 arcpy.da.SearchCursor(\"Residential Inspector\", ...) 读取的要素类与您从 m.listLayers(\"Residential Inspector\")[0] 获得的要素类不同。例如,这两种方法中的一种可能会考虑现有的定义查询。
  • 好的,在这种情况下,它们指的是同一层。更新了问题。
  • 或者,也许您在运行第二种方法时选择了 4 个功能?这是一个猜测。没有测试数据或有更复杂的环境,我只能猜测。但是,我很确定它是这样的。希望你能找到罪魁祸首。祝你好运。

标签: arcpy


【解决方案1】:

问题是有两个同名的地图导致脚本在这里索引错误的地图:

m = aprx.listMaps(map)[0]

ArcPro 不会自动显示项目文件中存在的每张地图。经常检查是否有同名的隐藏地图。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-25
    相关资源
    最近更新 更多