Contoh berbasis industri menggunakan ArcPy di ​​Python untuk Geoprocessing?

12

Baru-baru ini saya ditanyai oleh beberapa siswa jenis operasi apa Analis / Pengembang GIS biasanya mencoba untuk mengotomatisasi dengan menggunakan Python dengan geoprocessing dalam paket situs ArcGIS dan ArcPy. Saya kira mungkin berguna untuk mengetahui saat mencari beberapa latihan untuk memastikan bahwa apa yang Anda buat relevan untuk industri dan mungkin akan digunakan kembali nanti di tempat kerja.

Jawaban termudah adalah "membaca bantuan Esri dan melihat sampel", tapi saya mencari skenario yang lebih spesifik yang paling umum untuk diterapkan. Dengan demikian, berbagi alur kerja sush sebagai "kita mendapatkan file .zip dengan shapefile, kita menggunakan Python untuk membukanya, memproyeksikan semuanya ke sistem koordinat X, memuat ke dalam geodatabase ArcSDE, memberikan pengguna akses ke data ini" sangat disambut. Silakan merasa nyaman untuk memberikan deskripsi singkat tentang alur kerja, tidak ada detail ekstrim yang diperlukan.

Alex Tereshenkov
sumber

Jawaban:

10

Bagi saya, seperti yang disarankan oleh pertanyaan Anda, saya banyak menggunakan Python untuk mengotomatisasi pemrosesan batch, tetapi juga untuk membuat kalkulasi spesialis berulang. Saat ini saya tidak menggunakan ArcPy karena saya tidak mampu membeli lisensi ESRI sebagai Konsultan GIS lepas. Saya menggunakan GDAL / OGR, Shapely, PostGIS, Numpy dan SciPy banyak, meskipun semua yang ada dalam daftar saya dapat dilakukan dengan ArcPy (dan beberapa di antaranya). Contohnya termasuk:

  1. Turunkan Statistik Zonal untuk seluruh Inggris yang pertama kali memerlukan mosaicing 20 km raster ubin dari dua tipe data yang berbeda, melakukan beberapa "mapematics" pada raster-raster itu, menggabungkan area ekivalen ubin vektor poligon 10 km, menghitung statistik zona dari hasil raster mapematics dan bergabung dengan tabel statistik ke data vektor asli sebelum mengeluarkan ke shapefile dalam struktur direktori logis dan membakar ke CD untuk klien.
  2. Melakukan perhitungan visibilitas berurutan setiap 100m di sepanjang jalan atau trek dan kemudian menetapkan hasil perhitungan sebagai nilai M kembali dalam data rute.
  3. Proses otomatis untuk membuat model lanskap 3D dengan mem-mosaing / menggabungkan ubin data raster dan vektor, memotong ke area yang diperlukan dan kemudian mengonversi ke format 3D (non-GIS). Saya menggunakan perpustakaan Python kecil yang saya kembangkan untuk ini banyak dalam pekerjaan freelance saya.
  4. Salah satu proyek besar yang saya kerjakan dalam sebuah tim menggunakan ArcPy untuk membuat proses batch untuk mengkonversi atau mendapatkan data baru dari data GIS ke dalam format dengan fitur yang dapat dikonsumsi oleh generator-aset-komputer-permainan-aset prosedural. Script geoprocessing dipanggil oleh batch processing 'slave-driver' yang juga ditulis dengan Python dan dijalankan melalui Django.
  5. Python sangat berguna bahkan untuk tugas-tugas kecil, terutama di mana ada pengulangan (misalnya fitur dengan pemrosesan fitur). ArcGIS 'Model Builder jauh lebih baik dengan kontrol aliran yang masuk dalam versi 10 tetapi meskipun demikian, masih sering tidak dapat memberikan kontrol yang diperlukan dan / atau lebih cepat dan lebih mudah hanya untuk menulis proses di ArcPy daripada mencoba untuk memaksa Pembuat Model.
  6. Saya telah membuat alat dengan Python untuk melakukan analisis jalur-sapu (untuk menghitung apakah kendaraan yang sangat panjang dapat mengikuti rute yang ditentukan dan di mana trailer akan cenderung terjepit di tikungan yang ketat di antara bangunan. Ini adalah spesialis lain yang bekerja dengan freelance gudang senjata.
  7. Menghasilkan output dari Mapnik
  8. Sebelum ArcGIS menjadi multithreaded, saya menggunakan Python untuk memungkinkan saya menelurkan subproses yang kadang-kadang bisa mempercepat, perhitungan lambat tanpa overhead ArcMap mengacaukan memori.

Python dalam geoprocessing komersial sangat bagus karena Anda memiliki semua kecepatan dan singkatnya skrip yang disediakan oleh Python dan kecepatan pemrosesan kode gaya C yang dikompilasi menyediakan karena, sementara Python ditafsirkan sebagian besar memanggil kode gaya-C yang dikompilasi di bawah tenda. Python menyediakan lem yang dapat menampung banyak tugas geoproses berurutan bersama dan daftar di atas hanyalah cuplikan kecil dari beberapa hal yang secara pribadi saya gunakan untuk itu. Dalam 'Good Old Days' kami akan mengatur file Tontonan dan minta ArcInfo merekam input baris perintah kami dan kemudian membersihkan AML (yang mengingat Arc Macro Language!) Untuk membuat proses yang dapat digunakan kembali dari panggilan geoproses yang direkatkan dengan AML. Hari ini tidak begitu berbeda, kecuali kami menggunakan Python atau C # sebagai lem.

MappaGnosis
sumber
1
Cukup lucu Saya baru saja menjawab pertanyaan ini ( gis.stackexchange.com/questions/52478/... ) - yang memberikan contoh lain menggunakan Python sebagai metode untuk mengalahkan kebocoran memori ArcGIS!
MappaGnosis
+1, saya terutama ingin melihat topik blog GIS.SE di # 4.
blah238
1
Meskipun perusahaan sekarang sudah mati dan saya pergi beberapa saat yang lalu, perusahaan lain membeli IP jadi saya tidak tahu seberapa eksplisit saya. Bagaimanapun, Anda bisa mendapatkan beberapa petunjuk tentang sisi multiprosesing dari jawaban saya di tautan dalam komentar saya di atas. Saya pikir saya juga dapat menambahkan bahwa pertanian geoproses kami memiliki mesin 16-inti, dua server 8-inti, dan sekitar selusin 'pensiunan' PC dual-core yang semuanya dijalankan oleh driver-budak. ESRI bahkan mengirim beberapa orang untuk datang dan melihat apa yang telah kami lakukan karena kami tidak menggunakan ArcServer untuk ini. Kami menjalankan mesin begitu keras sehingga dua bahkan terbakar!
MappaGnosis
7

Di mana untuk memulai ... Saya adalah pendukung besar Python di perusahaan, meskipun sekarang saya bekerja di pemerintah negara bagian yang lebih tinggi. Berikut adalah beberapa contoh tugas yang saya gunakan untuk Python:

  1. Memindahkan data. Tugas yang cukup sederhana seperti memindahkan data secara rutin dapat diotomatisasi dengan sangat mudah dengan Python, terutama dengan shutilmodul di luar kotak.
  2. Mengekspor kacamata fitur dari basis data ArcSDE dan ke shapefile untuk dikonsumsi oleh paket perangkat lunak lain. ArcSDE (atau beberapa basis data relasional lainnya) seringkali merupakan catatan utama dalam suatu organisasi, tetapi tidak setiap paket perangkat lunak dapat terhubung ke dalam basis data. Banyak paket yang masih akan menggunakan shapefile ole yang bagus, dan menggunakannya arcpy, tidak sulit untuk mengekspornya setiap malam sehingga pengguna Anda dapat memiliki data terbaru.
  3. Membuat dataset spasial dari dataset yang berbeda. Semua orang di perusahaan menggunakan (dan seringkali menyalahgunakan) Excel untuk menyimpan data mereka. Dengan arcpy(atau metode Pythonic lainnya) mudah untuk mengambil data tabular yang memiliki komponen spasial dan dengan cepat membuat dataset spasial darinya. Hal yang sama berlaku untuk file teks. Baru-baru ini saya membuat alat ArcToolbox untuk klien yang membaca file teks dalam format XYZ dan membuat polyline yang diaktifkan ZM (tidak bisa benar-benar berbagi lebih dari itu pada yang itu).
  4. Menerjemahkan data GIS sehingga dapat dimasukkan ke dalam perangkat lunak yang tidak tahu apa itu "spasial". Saya sedang menulis alat sekarang yang mengambil dataset GIS (raster, vektor) dan mendorong data ke dalam program pemodelan 3D melalui API Python. Paket 3D ini tidak dapat bekerja dengan format data spasial sama sekali, tetapi dapat bekerja dengan nilai teks dan atribut di balik data spasial. Untuk ini saya menggunakan arcpytarik keluar informasi dari geodatabase dan dorong ke file teks atau ke file konfigurasi XML.
  5. Mengambil data. Punya situs web dengan tabel data yang Anda butuhkan? Gunakan beautifulsoupuntuk mengekstraknya. Punya situs FTP dengan ratusan atau ribuan file yang harus Anda ambil? Gunakan urllib2atau ftplibuntuk mengunduhnya dengan mudah.

Itu hanya beberapa contoh. Apa yang hebat tentang Python di perusahaan adalah bahwa bahkan tanpa hak admin penuh untuk mesin Anda, yang sering terjadi, Anda masih dapat mencapai sedikit. Kombinasikan itu dengan kurva belajar yang lembut dan keterbacaan Python, dan Anda memiliki alat otomatisasi yang hebat untuk GIS Tech / Analyst yang tidak memiliki banyak pengalaman pemrograman.

Chad Cooper
sumber
6

Saya bekerja untuk sebuah kotamadya, dan geng GIS memberikan dukungan kepada berbagai departemen kami (Teknik, Inspeksi Bangunan, Anggaran Rumah Tangga, Taman, Kebakaran, dll.).

  1. Memperbarui informasi paket dan alamat sipil. Kami memiliki skrip yang agak panjang yang memanipulasi data spasial dan atribut, yang melibatkan penggunaan berbagai alat geoproses untuk melakukan hal-hal spasial serta terhubung ke database relasional untuk mengambil informasi yang kemudian bergabung dengan data spasial kami.
  2. Alat khusus. Kami telah membuat alat khusus menggunakan Wisaya Tambah Python baru untuk beberapa staf Non-GIS kami. Beberapa staf kami perlu membaca data spasial serta melakukan beberapa manipulasi dasar. Kami telah merancang bilah alat yang memungkinkan mereka melakukan apa pun yang perlu mereka lakukan tanpa masuk ke keberanian lingkungan ArcGIS.

Seperti yang telah dinyatakan orang lain, ini hanya beberapa contoh.

dchaboya
sumber