Menggunakan layanan geoproses ESRI dari klien non-ESRI (Python)?

8

Saya pikir mungkin untuk mengkonsumsi layanan Geoprocessing ESRI dari skrip python tanpa menggunakan ArcPy atau membutuhkan instalasi ESRI pada mesin klien. Misalnya saya membuat layanan geoproses yang mengambil serangkaian lokasi titik dan mengembalikan file csv dengan nilai di bawahnya sebagai file. Saya ingin memasukkan panggilan layanan ini dalam aplikasi klien python yang akan berjalan pada mesin yang tidak memiliki instalasi ESRI. Tidak bisakah Anda membuat panggilan sisa untuk memulai layanan dan mengkonsumsi hasilnya tanpa arcpy?

Adakah yang punya contoh bagaimana Anda bisa melakukan ini?

Terima kasih, Colin

Colin Talbert
sumber

Jawaban:

8

ArcGIS untuk Server akan memberi Anda JSON melalui HTTP. Python memiliki hal-hal klien HTTP bawaan (urllib, dll) dan paket komunitas yang lebih baik (Permintaan, httplib2). Dan JSON dan Python berjalan bersama seperti keripik dan salsa.

sgillies
sumber
Saya telah melakukan hal-hal dengan urllib dan owslib dengan Python sehingga saya bisa melihat bagaimana itu bisa berjalan bersama. Saya akan melihat bagaimana deserialize respon JSON. Saya rasa saya paling bingung dengan bagaimana menyusun respon sisanya dengan hal-hal seperti parameter model, menentukan input dari sistem file klien, dll.
Colin Talbert
Untuk mengirim permintaan pos ke layanan geocoder ESRI, saya menggunakan modul Permintaan Python seperti ini: r = requests.post (geocoderUri, params = {"address": payload, "f": "json", "outSR": 4326}) Payload var berisi objek json yang menyandikan data alamat dalam format yang diharapkan oleh layanan.
DavidF
2

Untuk menyusun respon sisanya, mungkin membantu untuk melihat bagaimana API javascript berinteraksi dengan layanan geoproses menggunakan Firebug di Firefox. Biasanya semua parameternya telanjang atau dalam beberapa objek JSON dan ditambahkan ke string kueri url (atau dikirim melalui permintaan POST) dalam format UrlEncoded. Maka Anda hanya perlu menguraikan hasil JSON yang dikembalikan yang Anda peroleh dengan bendera f = json dalam permintaan.

Peter Smith
sumber
2

Esri telah menerbitkan apa yang mereka sebut Spesifikasi REST GeoServices yang dapat diakses dari sini .

Ini berisi banyak detail tentang komunikasi REST dan merupakan dasar yang mendasari ArcGIS Server. Ini memberikan banyak detail tentang struktur permintaan dan respons untuk masing-masing jenis layanan. Bagian 6.0 (halaman 52) adalah bagian yang berhubungan dengan Layanan GP, ​​mungkin ini akan membantu menjelaskan bagaimana Anda harus menyusun permintaan Anda.

Chenderson
sumber