Verwenden von ESRI-Geoverarbeitungsdiensten von einem Nicht-ESRI-Client (Python)?

8

Ich denke, es sollte möglich sein, einen ESRI-Geoverarbeitungsdienst aus einem Python-Skript zu verwenden, ohne ArcPy aufzurufen oder eine ESRI-Installation auf dem Clientcomputer zu benötigen. Zum Beispiel erstelle ich einen Geoverarbeitungsdienst, der eine Reihe von Punktpositionen verwendet und eine CSV-Datei mit den Werten darunter als Datei zurückgibt. Ich möchte diesen Serviceaufruf in eine Python-Client-Anwendung aufnehmen, die auf Computern ausgeführt wird, auf denen keine ESRI-Installation vorhanden ist. Könnten Sie nicht den Restaufruf erstellen, um den Dienst zu starten und das Ergebnis ohne arcpy zu konsumieren?

Hat jemand ein Beispiel, wie Sie dies tun könnten?

Danke, Colin

Colin Talbert
quelle

Antworten:

8

Mit ArcGIS for Server erhalten Sie JSON über HTTP. In Python sind HTTP-Client-Inhalte (urllib usw.) und bessere Community-Pakete (Requests, httplib2) integriert. Und JSON und Python passen zusammen wie Chips und Salsa.

sgillies
quelle
Ich habe Sachen mit urllib und owslib in Python gemacht, damit ich sehen kann, wie das zusammenpassen könnte. Ich werde untersuchen, wie die JSON-Antwort deserialisiert wird. Ich glaube, ich war am meisten verwirrt darüber, wie man die Restantwort mit Dingen wie Modellparametern, Angabe von Eingaben aus dem Client-Dateisystem usw. strukturiert.
Colin Talbert
Um eine Post-Anfrage an einen ESRI-Geocoder-Dienst zu senden, verwende ich das Python Requests-Modul wie folgt: r = request.post (geocoderUri, params = {"Adressen": Nutzdaten, "f": "json", "outSR": 4326}) Die Nutzlast var enthält das json-Objekt, das die Adressdaten in dem vom Dienst erwarteten Format codiert.
DavidF
2

Für die Strukturierung der Restantwort kann es hilfreich sein, zu untersuchen, wie die Javascript-API mit Geoverarbeitungsdiensten unter Verwendung von Firebug in Firefox interagiert. In der Regel sind alle Parameter entweder nackt oder in einem JSON-Objekt und werden in einem UrlEncoded-Format an die Abfragezeichenfolge der URL angehängt (oder per POST-Anforderung gesendet). Dann müssen Sie nur noch die zurückgegebenen JSON-Ergebnisse analysieren, die Sie durch das Flag f = json in der Anforderung erhalten.

Peter Smith
quelle
2

Esri hat die sogenannte GeoServices-REST-Spezifikation veröffentlicht, auf die von hier aus zugegriffen werden kann .

Es enthält viele Details zur REST-Kommunikation und ist die Grundlage, auf der ArcGIS Server basiert. Dies gibt viele Details zu den Anforderungs- und Antwortstrukturen für jeden der Diensttypen. Abschnitt 6.0 (Seite 52) ist der Abschnitt, der sich mit dem GP-Dienst befasst. Vielleicht hilft dies dabei, etwas Licht in die Struktur Ihrer Anforderungen zu bringen.

Chenderson
quelle