我正在使用一个PHP脚本,该脚本POST到GPS服务工具箱(用python编写),第一个参数应该是GPDataFile。从文档中,我看起来可以将此参数的值设置为json格式的字符串文字{“url”,“http://localhost/export/1234567890.kml”},并且arcpy.GetParameter(0)应该正确处理此对象。
不幸的是我收到错误,说“请检查你的参数”,工具箱上有两个其他参数,但它们只是字符串并且工作正常。我在ArcGIS 10.0中工作。
此交互的总体目标是将SWF / ActionScript中的KML文件发送到PHP,后者将KML保存到我们的数据库,然后将其发送到GPService,将其转换为GDB,然后转换为单个shapefile对象存储在数据库中以呈现回SWF / Actionscript。
我们非常感谢有关如何让Toolbox接受JSON结构的任何帮助,我希望避免将KML内容作为字符串对象发送到工具箱。
答案 0 :(得分:0)
答案可能是maniksundaram在ESRI论坛(https://community.esri.com/thread/107738)中写的:
ArcGIS服务器将不支持直接上传GPDataFile。您必须使用上传任务上传文件,并提供GP服务的项目ID。
这是使它能够用于需要文件上传的任何GP服务的高级想法,
-发布具有上传选项的地理处理服务
引用:ArcGIS帮助(10.2、10.2.1和10.2.2)
允许的操作:上传:此功能控制客户端是否可以将文件上传到您的GIS服务器,地理处理服务中的任务最终将使用该文件。上载操作主要由Web客户端使用,这些客户端需要一种将文件发送到服务器进行处理的方法。上载完成后,上载操作将为文件返回一个唯一ID,Web应用程序可以将该ID传递给地理处理服务。您可能需要修改最大文件大小和超时,具体取决于您希望服务器接受的上传大小。请查看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”:true}}
-调用ID为GPDataFile输入项的地理处理服务
For Ex: KMLInput value would be {"itemID":"ie84b9b8a-5007-4337-8b6f-2477c79cde58"}
-如果您在地图服务中配置了视图GP结果,则结果将添加到带有作业ID的地图服务中。或者,您可以在返回时读取响应。