模型生成器参数中的多行文本输入

654
10
03-10-2022 07:19 PM
LindsayRaabe_FPCWA
定期撰稿人

嗨,智囊团。我以为这是一件简单的事情,但我不太明白。我希望能够将多行文本输入到模型字符串参数中,但它似乎只接受单行文本。Destination将是一个特性类中的字符串字段。

lindsayraabe_fpcwa_0 - 1646968710732. - png

lindsayraabe_fpcwa_1 - 1646968748550. - png

林赛·拉伯
GIS官
西澳林产品委员会
10个回答
DanPatterson
通过 MVP尊敬贡献者
MVP尊敬贡献者

有多值,但不是多行(在modelbuilder中相同)

设置脚本工具参数- arcgis Pro | Documentation

我怀疑您希望使用“文本框”而不是“文本行”来显示字段输入的全文


...有点退休了……
0荣誉
LindsayRaabe_FPCWA
定期撰稿人

我想文本框不是一个选项吧?

文本文件可以代替文本行/文本框吗?

林赛·拉伯
GIS官
西澳林产品委员会
0荣誉
Luke_Pinner
通过 常规赛贡献者
常规赛贡献者

丑陋的解决方案-使用“SQL表达式”数据类型…?

unnamed.png

0荣誉
LindsayRaabe_FPCWA
定期撰稿人

谢谢你的建议。我现在已经看过了,我认为这不是一个可行的选择。是否有可能在文本文件中加载文本(使用文本文件变量)并使用python代码提取文本和计算字段?

林赛·拉伯
GIS官
西澳林产品委员会
0荣誉
LindsayRaabe_FPCWA
定期撰稿人

我觉得我离目标越来越近了——但仍然需要指引。我已经创建了一个计算值代码块如下,但有2个问题(至少,2现在):

lindsayraabe_fpcwa_1 - 1646981665049. - png

lindsayraabe_fpcwa_2 - 1646981743283. - png

1.我不知道如何用变量(这是一个文本文件)的路径替换第4行上的写入文件路径,即path = (str_path)。当我这样做时,我得到下面的错误。

lindsayraabe_fpcwa_3 - 1646981841268. - png

2.当我按照原始脚本成功运行它时,输出值仍然是空白的(至少据我所知)。

lindsayraabe_fpcwa_4 - 1646981919230. - png

林赛·拉伯
GIS官
西澳林产品委员会
0荣誉
Luke_Pinner
通过 常规赛贡献者
常规赛贡献者
你不返回函数中的任何项。同时,readline ()返回一个列表,而不是字符串。
下面是一个更简单的版本,它返回一个包含文件文本的字符串。
表达式:
结果(r文本文件“% %”)
代码块:
def结果(txtfile):
返回打开(txtfile) .read ()

unnamed.png

您甚至可以在没有代码块的情况下使用下面的代码
表达式:
打开(r文本文件“% %”).read ()
0荣誉
LindsayRaabe_FPCWA
定期撰稿人

近工作!它确实像您建议的那样计算值(只是使用表达式而不是代码块),但是计算字段步骤在遇到新行时失败了。

lindsayraabe_fpcwa_0 - 1647304974656. - png

林赛·拉伯
GIS官
西澳林产品委员会
0荣誉
LindsayRaabe_FPCWA
定期撰稿人

试图通过将多行文本文件转换为单个长字符串来解决此问题。开始一个新的表达式,如下所示,但是代码块继续删除\n,只是将文本移动到新行。

lindsayraabe_fpcwa_0 - 1647310915500. - png

变成这样:

lindsayraabe_fpcwa_1 - 1647310923957. - png

所以我也尝试了这个:

lindsayraabe_fpcwa_2 - 1647310952453. - png

但是得到这个错误:

lindsayraabe_fpcwa_3 - 1647310963104. - png

这是相同的错误,我从只是运行字段计算器与原始多行文本值。所以frustating !

林赛·拉伯
GIS官
西澳林产品委员会
0荣誉
Luke_Pinner
通过 常规赛贡献者
常规赛贡献者

将新的行/回车保留在中,并使用三引号而不是单引号括起来计算字段表达式。三引号“"”或“'”内的字符串字面值可以跨越多行文本。

" r " %值%”“”

0荣誉