Lewati ke isi
Profil penulisSeri Buku GIS Kehutanan dan Pertanian/ PY

BAGIAN C  |  ARCPY (WINDOWS)

BAB 29: Kenalan dengan ArcPy: Dua Generasi, Satu Sistem Windows

Studi kasus: "Skrip itu jalan di kantor pusat, mati di kantor cabang" #

Kepala Seksi menyerahkan sebuah skrip dari kantor pusat. Ia berpesan: "Tolong dicoba di kantor cabang." Anda membukanya di komputer cabang, lalu muncul pesan galat pada baris pertama. Ternyata kantor pusat memakai ArcGIS Pro, sedangkan komputer cabang masih memakai ArcMap. Keduanya sama-sama memakai ArcPy. Tetapi tulisan di dalamnya tidak sama. Bab ini membekali Anda supaya tidak kaget: apa itu ArcPy, mana Pro dan mana ArcMap, di mana mengetiknya, dan apa saja yang berbeda.

Konsep: ArcPy dalam tiga kalimat #

ArcPy adalah paket Python bawaan ArcGIS. Bayangkan ArcGIS sebagai panel dengan ratusan tombol: penyangga, irisan, hitung luas, dan seterusnya. Dengan ArcPy, Anda menekan tombol itu cukup dengan menulis namanya di sebuah skrip. Dokumentasi Esri menyebut ArcPy sebagai paket Python untuk analisis data geografis, konversi data, pengelolaan data, dan otomasi peta.

Ilustrasi 29.1: ArcPy melayani dua aplikasi
Skema ArcPy sebagai perkakas Python bawaan ArcGIS yang dipakai di ArcGIS Pro dengan Python 3 dan di ArcMap 10.8 dengan Python 2.7, keduanya hanya di Windows

Lima istilah baru yang perlu Anda kenal sekarang:

  • ArcGIS Pro: aplikasi ArcGIS generasi baru. Ia memakai Python 3.
  • ArcMap 10.8: aplikasi ArcGIS generasi lama. Ia memakai Python 2.7.
  • import arcpy: perintah untuk memanggil ArcPy ke dalam skrip. Perintah import dibahas di Bab 8.
  • Jendela Python: kotak di dalam aplikasi ArcGIS untuk mengetik dan menjalankan perintah Python.
  • Proyek (di Pro, berkas .aprx) dan dokumen peta (di ArcMap, berkas .mxd): berkas yang menyimpan peta Anda.

Dua generasi: Pro lawan ArcMap #

Pro dan ArcMap itu seperti dua generasi telepon. Fungsinya mirip, tetapi tombolnya tidak persis sama. Perbedaan terbesarnya ada di versi Python. ArcGIS Pro memakai Python 3, menurut dokumentasi Esri tentang Python di ArcGIS Pro. ArcMap 10.8 memerlukan Python 2.7.18 dan NumPy 1.16.6. Bila belum ada, pemasangan lengkap ArcMap menambahkannya sendiri, menurut halaman persyaratan sistem ArcGIS Desktop 10.8.x.

HalArcGIS ProArcMap 10.8
Versi PythonPython 3Python 2.7
Berkas petaproyek .aprxdokumen peta .mxd
Modul untuk petaarcpy.mparcpy.mapping
Sistem operasihanya Windowshanya Windows
Nama alat di skrip I4arcpy.analysis.Buffer(...)arcpy.Buffer_analysis(...)
Ruang sementara di memorimemory\namain_memory\nama

Dokumentasi Esri menjelaskan asal perbedaan modul peta. Perubahan di ArcGIS Pro cukup besar sehingga nama modulnya diganti, dari arcpy.mapping menjadi arcpy.mp. Daftar peta, layer, dan tata letak kini menjadi metode (perintah yang menempel pada sebuah objek) milik objek proyek. Di ArcMap, daftar itu berupa fungsi tersendiri yang harus diberi dokumen peta sebagai masukan pertama.

Hanya Windows: apa artinya bagi Anda #

Halaman persyaratan sistem ArcGIS Pro menyebut hanya Windows yang didukung: Windows 11, serta Windows Server 2025, 2022, dan 2019. Halaman persyaratan ArcGIS Desktop 10.8.x menyebut Windows 10, Windows 11 (hanya untuk 10.8.1 dan 10.8.2), serta Windows Server 2022, 2019, dan 2016. Tidak ada macOS atau Ubuntu di kedua daftar itu.

Akibat praktisnya: skrip di Bagian C tidak bisa Anda jalankan di Mac atau Ubuntu. Anda tetap bisa membacanya, menerjemahkannya ke PyQGIS (lihat Bab 32), dan menyalin pola pikirnya. Daftar sistem operasi di atas dicatat per tanggal pembacaan dokumen. Versi ArcGIS yang lebih baru bisa mengubahnya, jadi cek ulang di situs Esri. [CEK]

Di mana mengetik dan menjalankan skrip #

Ilustrasi 29.2: Tempat mengetik skrip ArcPy
Skema tiga tempat mengetik di ArcGIS Pro (jendela Python, Python Command Prompt, IDE) dan dua tempat di ArcMap (jendela Python, Python 2.7 di luar aplikasi)

Di ArcGIS Pro, ada tiga tempat. Mulailah dari yang pertama.

  1. Jendela Python. Buka tab Analysis, grup Geoprocessing, klik panah di tombol Python, lalu pilih Python window. Jendela ini menjalankan satu baris atau banyak baris tanpa berkas skrip, dan bisa bekerja dengan layer di peta yang terbuka. Tombol Load Code memasukkan berkas .py ke jendela, dan transkrip jendela bisa disimpan ke berkas.
  2. Python Command Prompt. Ini terminal yang sudah diarahkan ke lingkungan Python milik ArcGIS Pro. Ketik python untuk sesi interaktif.
  3. IDE atau notebook. Dokumentasi Esri menyebut IDLE, Spyder, dan Jupyter bisa dipakai bila diarahkan ke Python milik Pro.

Untuk menjalankan berkas skrip dari terminal, dokumentasi Esri memberi contoh perintah ini. Alamat pemasangan Anda bisa berbeda: untuk pemasangan per pengguna, ganti %PROGRAMFILES% dengan %LOCALAPPDATA%.

TERMINAL
"C:\Program Files\ArcGIS\Pro\bin\Python\Scripts\propy" skrip.py

Di ArcMap 10.8, tempat termudah adalah jendela Python. Klik tombol Python di toolbar Standard. Jendela itu punya dua bagian: tempat mengetik di kiri dan bantuan di kanan. Tanda >>> berarti siap menerima perintah baru, dan tanda ... berarti perintah masih berlanjut. Menjalankan skrip dari luar ArcMap memakai Python 2.7 yang ikut terpasang. Cara persisnya (IDLE atau terminal) belum penulis cocokkan. [CEK]

Percobaan pertama: cek versi #

Coba satu baris ini di jendela Python, di Pro maupun di ArcMap. Baris print dengan satu isian berjalan di kedua versi. [CEK]

PYTHON
import arcpy
print(arcpy.GetInstallInfo()["Version"])

Layar menampilkan nomor versi ArcGIS Anda, misalnya 3.x di Pro atau 10.8.x di ArcMap. Penulis belum menjalankannya, dan fungsi GetInstallInfo belum penulis cocokkan dengan dokumentasi. [CEK]

Beda penulisan yang paling sering menjebak #

Ilustrasi 29.3: Empat beda penulisan Pro dan ArcMap
Skema empat hal yang berbeda: print, pembagian bilangan bulat, baris coding di awal berkas, dan modul peta

Anda akan menemui empat beda ini hampir di setiap skrip. Penjelasan bahasa Python-nya diambil dari panduan resmi Python tentang peralihan Python 2 ke 3.

  1. Perintah print. Di Python 3, print adalah fungsi: print("A:", x). Di Python 2.7, print adalah pernyataan, dan tata bahasanya menerima daftar isian tanpa tanda kurung. Akibatnya, print("A:", x) di Python 2.7 kemungkinan besar mencetak sepasang isian lengkap dengan tanda kurung dan tanda kutipnya, karena kurung itu dibaca sebagai satu pasangan nilai. [CEK] Karena itu skrip ArcMap di buku ini mencetak satu teks hasil rakitan: print("A: %s" % x). Pilihan lain adalah menambahkan from __future__ import print_function di awal berkas, seperti pada skrip bab M1.

2. Pembagian bilangan bulat. Di Python 3, 7 / 2 menghasilkan 3.5. Di Python 2.7, 7 / 2 menghasilkan 3, sebab pembagian dua bilangan bulat menghasilkan bilangan bulat. Obatnya: tulis salah satu angka sebagai desimal, 7 / 2.0, seperti luas / 10000.0 di skrip ArcMap. Hasil di Python 3.12 sudah diuji, sedangkan hasil di Python 2.7 dibaca dari panduan resmi.

HASIL
3.5 3 3.5

Baris di atas adalah hasil print(7 / 2, 7 // 2, 7 / 2.0) di Python 3.12. Tanda // selalu membulatkan ke bawah.

3. Merakit teks. Skrip Pro memakai f-string, misalnya f"{i}/{total} selesai". F-string baru ada sejak Python 3.6, jadi tidak ada di Python 2.7. Skrip ArcMap memakai "{}/{} selesai".format(i, total) atau tanda persen: "%s: luas %.2f ha" % (nama, luas). Format % berjalan di kedua versi dan dibahas di Bab 9.

  1. Huruf Indonesia dan baris coding. Panduan Python menyebut berkas sumber Python 2 memakai penyandian ASCII bila tidak ada keterangan lain. Karena itu skrip ArcMap dari Buku I4 membuka berkas dengan # -*- coding: utf-8 -*-. Di Python 3, UTF-8 sudah bawaan. Isi skrip itu sebenarnya hanya huruf ASCII, jadi baris itu berjaga-jaga saja. Begitu Anda menulis é atau tanda khusus lain di komentar skrip ArcMap, baris itu menjadi wajib.

Jalur Windows dan huruf r #

Jalur folder Windows memakai garis miring terbalik: D:\Latihan\paket-i4. Masalahnya, Python memakai tanda yang sama sebagai tanda khusus. Di dalam teks biasa, \n berarti baris baru dan \t berarti tab. Sebagian urutan lain bahkan membuat skrip gagal dimuat. Obatnya: tulis huruf r tepat sebelum kutip pembuka. Huruf r berarti raw atau mentah: garis miring dibaca apa adanya.

Lihat bedanya pada percobaan di Python 3.12. Pada baris pertama, \t berubah menjadi tab, sehingga tim_a terpotong. Python 3.12 juga memberi peringatan SyntaxWarning untuk \L.

PYTHON
print("D:\Laporan\tim_a")
print(r"D:\Laporan\tim_a")
HASIL
D:\Laporan	im_a
D:\Laporan\tim_a

Kasus lain yang lebih keras: print("C:\Users\anda") tanpa huruf r langsung gagal di Python 3.12 dengan pesan SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape. Tanda \U dianggap awal penulisan huruf khusus. Semua jalur di skrip Bagian C ditulis dengan r"...". Biasakan hal yang sama. Satu catatan: teks mentah tidak boleh berakhir dengan satu garis miring terbalik sebelum kutip penutup. Baris x = r"D:\" gagal di Python 3.12 dengan SyntaxError: unterminated string literal. Bila perlu garis miring di ujung, gabungkan teks biasa: DATA + "\\".

Kebiasaan kerja yang aman #

  • Salin dulu datanya. Banyak skrip menyimpan, menimpa, atau menulis keluaran. Pelajari bagian "Jebakan" tiap skrip sebelum menjalankannya.
  • Cocokkan dengan versi Anda. Nama alat dan parameter bisa berubah antarversi. Setiap skrip di buku ini membawa komentar [CEK].
  • Mulailah dari baris kecil. Di jendela Python, coba satu baris dulu. Bila hasilnya sesuai harapan, baru jalankan skrip utuh.
  • Hati-hati dengan save(). Perintah aprx.save() di Pro menyimpan perubahan ke proyek yang sedang dibuka. Dokumentasi Esri juga menyediakan saveACopy(nama_berkas) untuk menyimpan salinan. [CEK]

Cek paham #

  1. Apa dua generasi ArcGIS yang memakai ArcPy, dan versi Python masing-masing?
  2. Mengapa skrip ArcPy di buku ini tidak bisa Anda jalankan di Ubuntu?
  3. Mengapa jalur Windows di skrip ditulis dengan huruf r di depan kutip?

Jawaban.

  1. ArcGIS Pro memakai Python 3. ArcMap 10.8 memakai Python 2.7.
  2. Karena ArcGIS Pro dan ArcMap hanya didukung di Windows menurut halaman persyaratan sistem Esri.
  3. Huruf r membuat garis miring terbalik dibaca apa adanya. Tanpa r, \n dan \t menjadi tanda khusus, dan \U bisa membuat skrip gagal.

Kesalahan umum #

  • Menyalin gaya Python 3 ke ArcMap. Contohnya print("A:", x) atau f-string. Perbaikan: ikuti versi ArcMap di Bab 30 dan 31.
  • Lupa huruf r pada jalur. Perbaikan: tulis r"D:\Latihan\paket-i4".
  • Menjalankan skrip ber-CURRENT dari terminal. Perbaikan: jalankan dari jendela Python di dalam aplikasi.
  • Menyamakan arcpy.mp dengan arcpy.mapping. Keduanya mirip tujuannya, tetapi namanya dan cara kerjanya berbeda. Perbaikan: pakai arcpy.mp di Pro dan arcpy.mapping di ArcMap.

Ringkasan dan latihan #

  • ArcPy adalah paket Python bawaan ArcGIS untuk analisis, pengelolaan data, dan otomasi peta.
  • ArcGIS Pro memakai Python 3 dan arcpy.mp. ArcMap 10.8 memakai Python 2.7 dan arcpy.mapping.
  • Keduanya hanya berjalan di Windows. Tempat termudah menjalankan skrip adalah jendela Python di dalam aplikasi.
  • Empat beda yang paling sering menjebak: print, pembagian bilangan bulat, baris coding, dan modul peta.
  • Tulis jalur Windows dengan huruf r di depan kutip.

Latihan. Tulis dua baris print yang menampilkan nama KPH dan luasnya di Python 3, lalu tulis ulang untuk Python 2.7 dengan tanda persen. Contoh jawaban: print("KPH Alpha", 4.0) menjadi print("%s %.1f" % ("KPH Alpha", 4.0)). Hasil tulisan kedua penulis cek di Python 3 saja: KPH Alpha 4.0. Di Python 2.7 belum diuji. [CEK]

Tabel perbandingan: Pro dan ArcMap sekilas #

PertanyaanArcGIS ProArcMap 10.8
Python versi berapa32.7
Bagaimana membuka peta yang sedang terbukaarcpy.mp.ArcGISProject("CURRENT")arcpy.mapping.MapDocument("CURRENT")
Di mana mengetik cepattab Analysis, tombol Python, Python windowtombol Python di toolbar Standard
Cara aman mencetakprint("A:", x)print("A: %s" % x)
Cara aman membagiluas / 10000luas / 10000.0