Más

Recuperar resultados de geoprocesamiento en ArcGIS JavaScript API

Recuperar resultados de geoprocesamiento en ArcGIS JavaScript API


Estoy ejecutando una secuencia de comandos de geoprocesamiento en un visor de mapas de la API de JavaScript de ArcGIS y funciona hasta que intento leer el parámetro de salida del trabajo.

Mi guión:

function extractModel (resultados) {var params = {"ModelName": ModelName}; // variable definida anteriormente // ejecutar el servicio de geoprocesamiento para exportar GDB, descargar resultados var gp = new Geoprocessor ("http: // myserver / arcgis / rest / services / Test4Custom / GPServer / Custom"); gp.setUpdateDelay (5000); // verifica el estado cada 5 segundos gp.submitJob (params, statusDone, statusCallback, errorBack); } function errorBack (jobInfo) {alert.window ("Error encontrado en el script de geoprocesamiento.") console.log ("Estado:" + gpStatus); } function statusCallback (jobInfo) {console.log ("Estado:" + gpStatus + "- Continuando…"); } function statusDone (jobInfo) {console.log ("geoprocesamiento completado"); console.log ("Estado:" + gpStatus); console.log ("ID de trabajo" + jobInfo.jobId); gp.getResultData (jobInfo.jobId, "Output_File", downloadResult, errorBack); } function downloadResult (resultado) {console.log ("mostrar resultado"); console.log (resultado.valor); console.log (result.dataType); }

La tarea de geoprocesamiento se ejecuta correctamente y la secuencia de comandos del visor se ejecuta hasta quegp.getResultDatalínea. No se esta metiendo en eldownloadResult ()función, y obtengo este error en la consola:

TypeError: c no es una función (…) "TypeError: c no es una función

¿Esto indica un problema con mi sintaxis al llamardownloadResult (), ¿o algo mas?

Nota: el parámetro de salida es de hechoArchivo de saliday tiene una cadena cuando se ejecuta. Ejemplo:

{"paramName": "Output_File", "dataType": "GPString", "valor": "c:  arcgisserver  directorios  arcgisjobs  test4custom_gpserver  je47fc8d361064c9e86237f397a873118 12 scratch  Data"

Aquí hay una copia y pegado de una muestra que utilizo para obtener un archivo como resultado de un servicio gp para que esté disponible para su descarga. (Toma el texto de un usuario y lo inserta en un archivo de texto, luego devuelve el archivo de texto. Hace una salida de archivo 'verdadera', no una cadena). No creo que sea 100% lo que quieres, pero espero que te lleve por el camino correcto ...

javascript

function submit () {// restablecer mensajes dojo.byId ('downURL'). innerHTML = ""; // Ir… var inputText = dojo.byId ('inText'). Value; var params = {'Input_Text': inputText}; console.log (params); gp_R.submitJob (params, gpJobComplete, gpJobStatus, function (error) {alert (error);}); } function gpJobComplete (jobInfo) {if (jobInfo.jobStatus == "esriJobFailed") {dojo.byId ('downURL'). innerHTML = "No se pudo generar el archivo de texto"; } else if (jobInfo.jobStatus == "esriJobSucceeded") {gp_R.getResultData (jobInfo.jobId, "Output_Text_File", downloadFile); }} función downloadFile (outputFile) {var theurl = outputFile.value.url; dojo.byId ('downURL'). innerHTML = "Descargar archivo (clic derecho, guardar como)"; }

cuerpo html

 

Pondría la función downloadResult dentro de statusDone.

function statusDone (jobInfo) {var downloadResult = function (result) {console.log ("mostrar resultado"); console.log (resultado.valor); console.log (result.dataType); } console.log ("geoprocesamiento completado"); console.log ("Estado:" + gpStatus); console.log ("ID de trabajo" + jobInfo.jobId); gp.getResultData (jobInfo.jobId, "Output_File", downloadResult, errorBack); }

Si no me equivoco, su "Output_File" tiene "esriGPParameterDirectionOutput" como dirección en su servicio GP. Y desea recuperar valor según el estado de su trabajo. También recibí el mismo error, pero descubrí el camino. Puedes hacer una cosa. Consulte https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest o https://www.w3schools.com/js/js_ajax_http.asp para XMLHttpRequest ().

function statusDone (jobInfo) {gp.getResultData (jobInfo.jobId, "Output_File", downloadResult, errorBack); var xhr = new XMLHttpRequest (); xhr.open ("OBTENER", "http: // miservidor / arcgis / rest / services / Test4Custom / GPServer / Custom / jobs /" + jobInfo.jobId + "/ results / Output_File? f = pjson", verdadero); xhr.withCredentials = true; (si su servicio de GP está asegurado, de lo contrario no es necesario escribirlo) xhr.onreadystatechange = function () {if (xhr.readyState == 4 && xhr.status == 200) {var result = JSON.parse (xhr.responseText ); alerta (valor.resultado); }}; xhr.send (); }

Ver el vídeo: Geoprocesamiento en ArcMap