微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

arcpy-使用外部表将参数迭代地更改为我的代码

如何解决arcpy-使用外部表将参数迭代地更改为我的代码

我正在Jupyter笔记本环境下使用python 2.7和arcpy。 我想让我的代码迭代地适应参考表。

这是我的参考表,其中包含我在arpcy中运行的工具所使用的3个变量:

  RegY          HunCal    CRY
    1            1718     BL1
    1            1112     JU1
    1            1112     JU1
    1            1213     JU1

这是一个简单的xls表,我将其导入到jupyter笔记本中。当需要在代码中更改这些变量时,我可以以此为参考。

一开始,我是手工完成的,因为它们需要进行一些更改。但是现在有150多种更改要适应,而且这个数量会随着时间而增加。因此,我想以这样的方式修改代码:每次引用表更改时,它都使用引用表来遍历每个功能

这是我正在使用的代码

# 2011
# Set geoprocessor object property to overwrite existing output
arcpy.gp.overwriteOutput = True


arcpy.env.workspace = r'C:\Users\GeoData\simsear\SBA_D.gdb'
    
# Process: Group Similar Features  
SS.SimilaritySearch("redD_RegY_1_1112","blackD_CRY_JU1_1112","SS_JU1_1112","NO_COLLAPSE","MOST_SIMILAR","ATTRIBUTE_PROFILES","Temperatur;Precipitat",'DateFin')

如何通过以下方式修改代码,将引用表中的变量插入我的代码中:

  • 从参考表中,RegY中的值将替换为redD_RegY_**1**_1112
  • CRY中的值将替换为blackD_CRY_**JU1**_1112SS_**JU1**_1112
  • HunCal中的值将替换为redD_RegY_1_**1112**blackD_CRY_JU1_**1112**SS_JU1_**1112**

任何提示或建议将不胜感激。

解决方法

您应该遍历表的每一行以获取参考表值,然后使用它们为输入,候选项和输出功能构建唯一的字符串。

for row in table:
    regY = row[0]
    hunCal = row[1]
    cry = row[2]

    input_features_to_match = 'redD_RegY_{}_{}'.format(regY,hunCal)
    candidate_features = 'blackD_CRY_{}_{}'.format(cry,hunCal)
    output_features = 'SS_{}_{}'.format(cry,hunCal)

    SS.SimilaritySearch(
        input_features_to_match,candidate_features,output_features,'NO_COLLAPSE','MOST_SIMILAR','ATTRIBUTE_PROFILES','Temperatur;Precipitat','DateFin')

或更紧凑:

for row in table:
    SS.SimilaritySearch(
        'redD_RegY_{}_{}'.format(row[0],row[1]),'blackD_CRY_{}_{}'.format(row[2],'SS_{}_{}'.format(row[2],'DateFin')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。