I am having a lot of difficulties in configuring input and output parameters for a geoprocessing service to be accessed by the geoprocessing widget in Portal. I have tried for two days now and it looks like I have exhausted all options and yet, what I am trying to do seems rather straightforward.
I would like to source a single input polygon from a web map in a Portal application as my input. Then I would like to create a PDF and save it, using the attributes that belong to that particular polygon.
Firstly input: I run my python script in a toolbox with an input parameter set to "Layer" type - I also tried "Feature Layer". I have tried publishing this after running the tool directly as a python script in a toolbox, but also have put the script in a model and then set the input parameter of the model dynamic with the "P" option. In the desktop environment, the script and the model work and allow me to dynamically choose the input layer in ArcMap. Once I have run this, I either use the results from running the script or from running the model, and select "Share as a geoprocessing service" and publish to Portal.
When publishing to Portal, for the input mode I choose "Choice List" (the documentation says that this allows you to select dynamically from a map) . But I have noted that in all cases there is a warning that during publishing the data will be uploaded to the server. That is not a good sign but there seems to be no way to avoid this (except using a registered folder I suppose). Once the geoprocessing service is published, I access the rest geoprocessing URL from the geoprocessing widget in WAB. But when I try to use dynamic input in the geoprocessing tool in WAB, I cannot choose anything from the map. During publishing I also tried "User Defined Value" and "Constant Value" as publishing options but none of this allows me to do anything interactively in the map afterwards. Ideally I would like to highlight one polygon and use that as my input (single polygon to be processed by the geoprocessing tool). How can this be done? Note that in the original python I have my input parameter as
Layer = arcpy.GetParameterAsText(0)
and in the toolbox, I specify as my input type "layer" or "feature layer". Is this wrong?
Secondly output: I am afraid this is quite frustrating. I would like to save the output as a file to a folder location. I know that AGS and Portal have issues with saving things out (because on the server, local paths on the desktop may not be known) but surely there must be a way. I simply do not seem to find any way at all to achieve that. There is some mention that you can save geoprocessing output back to the desktop after zipping up the output file (e.g. a PDF or a CSV zipped up) but I could not make that to work at all (and believe me I have tried). Specifically, when publishing a geoprocessing service, it is impossible to use a folder or a File geodatabase as an used-defined choice input parameter. I also tried to set a variable to "output" in the toolbox before publishing. Lastly, in the script I have tried to set my output to arcpy.env.scratchFolder. Although all this works on the desktop, none of this works after publishing the same script as a geoprocessing service. So there seems to be no options to provide me with saving a file to some location when running the geoprocessing service in WAB. It seems the output file simply disappears or is not generated at all. I have no visibility on that.
So in short any help in particular a code example (plus publishing instructions) would be most welcome, to
1. enable the geoprocessing tool to dynamically select a polygon from an input layer in a web application and
2. enable file output to be saved to a location of the user's choice
Anybody's help will be greatly appreciated.
Thanks very much
Did you ever find out how to enable file output to be saved to a location of the user's choice?
We have a similar problem here. We are using the screening widget from WABD v 2.12 which has an extract data task operating, producing a zip file output. I've modified my extract data task gp service in modelbuilder to include some appends to databases and an incrementing ID field which I have tried (in vain) to push as an in-line variable back to the zipfile as an output file name (%scratchFolder%\AppliedLUC_GIS%NewGISNum%.zip). Whilst it works perfectly in the desktop environment (eg AppliedLUC_GIS45.zip) , it produces HTTP 400 errors once published through to Portal, I think due to the % in the output URL?
If I remove my variable from the filename, %scratchFolder% does work through to Portal though - not sure if that helps your problem or not with saving the output file??
If you or anyone has any ideas on how to use an in-line variable in the Extract Data gp service output, let me know! I am tempted to modify the python behind it but I am not sure how I'd call the variable...