Usando serviços de geoprocessamento ESRI de um cliente não ESRI (Python)?

8

Eu acho que deve ser possível consumir um serviço de geoprocessamento ESRI a partir de um script python sem chamar o ArcPy ou precisar de uma instalação ESRI na máquina cliente. Por exemplo, eu crio um serviço de geoprocessamento que utiliza uma série de locais de pontos e retorna um arquivo csv com os valores sob eles como um arquivo. Gostaria de incluir essa chamada de serviço em um aplicativo cliente python que será executado em máquinas que não possuem nenhuma instalação ESRI. Não foi possível criar a chamada restante para iniciar o serviço e consumir o resultado sem o uso de arco-íris?

Alguém tem um exemplo de como você pode fazer isso?

Obrigado, Colin

Colin Talbert
fonte

Respostas:

8

O ArcGIS for Server fornecerá JSON sobre HTTP. O Python possui itens do cliente HTTP integrados (urllib, etc) e melhores pacotes da comunidade (Requests, activationplib2). E JSON e Python andam juntos como batatas fritas e salsa.

sgillies
fonte
Eu fiz coisas com urllib e owslib em Python para que eu possa ver como isso pode acontecer. Vou ver como desserializar a resposta JSON. I quess Eu estava mais confuso com a forma de estruturar a resposta resto com coisas como parâmetros do modelo, especificando entradas do sistema cliente arquivo, etc.
Colin Talbert
Para enviar uma solicitação de postagem para um serviço de geocoder ESRI, estou usando o módulo Solicitações Python como este: r = orders.post (geocoderUri, params = {"address": payload, "f": "json", "outSR": 4326}) A carga útil var contém o objeto json que codifica os dados do endereço no formato que o serviço está esperando.
davidf
2

Para estruturar a resposta restante, pode ser útil verificar como a API javascript interage com os serviços de geoprocessamento usando o Firebug no Firefox. Normalmente, todos os parâmetros estão vazios ou em algum objeto JSON e são anexados à string de consulta da URL (ou enviados via solicitação POST) em um formato UrlEncoded. Então você só precisa analisar os resultados JSON retornados que você obtém pelo sinalizador f = json na solicitação.

Peter Smith
fonte
2

A Esri publicou o que chamam de Especificação REST GeoServices, que pode ser acessada a partir daqui .

Ele contém muitos detalhes sobre a comunicação REST e é a base na qual o ArcGIS Server se baseia. Isso fornece muitos detalhes sobre as estruturas de solicitação e resposta para cada um dos tipos de serviço. A Seção 6.0 (página 52) é a seção que trata do Serviço GP, talvez isso ajude a esclarecer como você deve estruturar suas solicitações.

CHenderson
fonte