¿Usa servicios de geoprocesamiento ESRI de un cliente que no es ESRI (Python)?

8

Estoy pensando que debería ser posible consumir un servicio de geoprocesamiento ESRI desde un script de Python sin invocar ArcPy o necesitar una instalación ESRI en la máquina cliente. Por ejemplo, creo un servicio de geoprocesamiento que toma una serie de ubicaciones de puntos y devuelve un archivo csv con los valores debajo de ellos como un archivo. Me gustaría incluir esta llamada de servicio en una aplicación cliente de Python que se ejecutará en máquinas que no tienen ninguna instalación de ESRI. ¿No podría crear la llamada de descanso para iniciar el servicio y consumir el resultado sin arcpy?

¿Alguien tiene un ejemplo de cómo podría hacer esto?

Gracias Colin

Colin Talbert
fuente

Respuestas:

8

ArcGIS for Server le dará JSON sobre HTTP. Python tiene cosas de cliente HTTP integradas (urllib, etc.) y mejores paquetes comunitarios (Solicitudes, httplib2). Y JSON y Python van juntos como papas fritas y salsa.

sgillies
fuente
He hecho cosas con urllib y owslib en Python, así que puedo ver cómo eso podría ir de la mano. Veré cómo deserializar la respuesta JSON. Creo que estaba más confundido por cómo estructurar la respuesta de descanso con cosas como parámetros del modelo, especificando entradas del sistema de archivos del cliente, etc.
Colin Talbert
Para enviar una solicitud posterior a un servicio de geocodificador de ESRI, estoy usando el módulo de Solicitudes de Python de esta manera: r = request.post (geocoderUri, params = {"direcciones": carga útil, "f": "json", "outSR": 4326}) La carga útil var contiene el objeto json que codifica los datos de la dirección en el formato que el servicio espera.
DavidF
2

Para estructurar la respuesta de descanso, puede ser útil observar cómo interactúa la API de JavaScript con los servicios de geoprocesamiento mediante Firebug en Firefox. Por lo general, todos los parámetros están desnudos o en algún objeto JSON y se agregan a la cadena de consulta de la url (o se envían a través de la solicitud POST) en un formato codificado en Url. Luego solo necesita analizar los resultados JSON devueltos que adquiere con el indicador f = json en la solicitud.

Peter Smith
fuente
2

Esri ha publicado lo que llaman la especificación REST de GeoServices a la que se puede acceder desde aquí .

Contiene muchos detalles sobre la comunicación REST y es la base sobre la cual se basa ArcGIS Server. Esto proporciona muchos detalles sobre las estructuras de solicitud y respuesta para cada uno de los tipos de servicio. La Sección 6.0 (página 52) es la sección que se ocupa del Servicio GP, quizás esto ayudará a arrojar algo de luz sobre cómo debe estructurar sus solicitudes.

CHenderson
fuente