ESRI GPDataFile 作为 GP 工具箱的输入参数

ESRI GPDataFile as input Parameter to GP Toolbox

我正在使用 POST 到 GPService 工具箱的 PHP 脚本(用 python 编写),第一个参数应该是 GPDataFile。从文档中可以看出,我可以将此参数的值设置为 json 格式的字符串文字 {"url"、“http://localhost/export/1234567890.kml”} 和 arcpy.GetParameter( 0) 应该正确处理这个对象。

不幸的是,我收到一条错误消息,显示 'Please check your parameters',工具箱中还有另外两个参数,但它们只是字符串并且工作正常。我在 ArcGIS 10.0 中工作。

此交互的总体目标是将 KML 文件从我们的 SWF/ActionScript 发送到 PHP,后者将 KML 保存到我们的数据库中,随后将其发送到 GPService 以将其转换为一个 GDB,然后到存储在数据库中的单个 shapefile 对象,以便渲染回 SWF/Actionscript。

我们将不胜感激关于如何让工具箱接受 JSON 结构的想法,我想避免必须将 KML 内容作为字符串对象发送到工具箱。

答案可以是 maniksundaram 在 ESRI 论坛 (https://community.esri.com/thread/107738) 中写的内容:

ArcGIS Server 将不支持直接上传 GPDataFile。您必须使用上传任务上传文件并提供 GP 服务的项目 ID。

这是让它适用于任何需要文件上传的 GP 服务的高级想法,

-使用上传选项发布地理处理服务

参考:ArcGIS 帮助(10.2、10.2.1 和 10.2.2)

允许的操作:上传:此功能控制客户端是否可以将文件上传到地理处理服务中的任务最终将使用的 GIS 服务器。上传操作主要由需要将文件发送到服务器进行处理的 Web 客户端使用。上传操作 returns 上传完成后文件的唯一 ID,Web 应用程序可以将其传递给地理处理服务。您可能需要根据您希望服务器接受的上传大小修改最大文件大小和超时。查看安装在 ArcGIS Server 计算机上的本地 REST SDK 文档,了解有关将上传的文件与地理处理服务结合使用的信息。默认情况下此选项处于关闭状态。允许上传到您的服务可能会带来安全风险。只在需要时打开它。

-使用在地理处理服务中生成的上传 url 上传文件。它会给你上传文件的 itemID 作为响应。

      http://<servername>:6080/arcgis/rest/services/GP/ConvertKMLToLayer/GPServer/uploads/upload

响应Json:

{"success":true,"item":{"itemID":"ie84b9b8a-5007-4337-8b6f-2477c79cde58","itemName":"SStation.csv","description" :null,"date":1409942441508,"committed":真}}

-使用项目 ID 作为 GPDataFile 输入调用地理处理服务,

 For Ex: KMLInput value would be  {"itemID":"ie84b9b8a-5007-4337-8b6f-2477c79cde58"}

-如果您在地图服务中配置了查看 GP 结果,则结果将添加到具有作业 ID 的地图服务。或者您可以直接阅读回复 returns。