使用场景
一个简单处理流程:先复制要素类,并为复制后的要素类添加一个新字段。模型中,将要素类地址设施为输入参数P
,将添加字段后的要素类设置为输出参数P
。
遇到的问题
#1 ERROR 000816: The tool is not valid
模型在ArcMap
可正常执行,发布GP
服务也是正常的,但是在ArcGIS Server
服务页面调用GP
服务时直接Failed
,查看日志,提示该工具无效(ERROR 000816: The tool is not valid
),通过逐个工具排查,定位到问题出在AddField
工具上。
为什么出现该问题:因为我构建模型使用的是ArcGIS 10.7
,而ArcGIS Server
是10.5
,猜测两者在AddField
工具的接口定义上存在差异,导致ArcGIS Server
无法识别。解决方式显而易见,使用对应Server
的ArcMap
来编写模型并重新发布。
对该问题的解答可以参考:
#2 esriJobMessageTypeError: Invalid return value
按照以上思路修改并重新执行模型,出现了一个新问题,提示返回值无效。
为什么出现该问题,原因出在模型返回值的设置上,因为Add Field
操作其实是对一个要素类,并未生成新要素类,将Add Field
的输出作为返回参数时,ArcGIS
无法获取要素类,猜测是因为其结果并非要素类。解决方式是将Add Field
的输入参数作为返回参数P。