Saya menggunakan ArcGIS 10.2 untuk Desktop, dan saya telah mencari-cari di situs ini, dan sepertinya belum dapat menemukan jawaban saya. Sangat baru untuk VBA dan Python, tetapi banyak tahun dengan ArcGIS. Saya tahu saya bisa melakukan ini dengan cara lambat dengan Select By Attributes, tetapi itu memakan waktu.
Saya mencoba gabungan spasial antara kasus-kasus penyakit (lapisan poin) dan US Census Tracts (lapisan poligon). Ini membutuhkan data jumlah. Untuk setiap titik / kasus, saya memiliki bidang yang disebut TAHUN dengan rentang tanggal 2001 hingga 2012 tergantung pada tahun apa kasus itu terjadi. Saya perlu kolom hitungan untuk setiap tahun. Misalnya, yang pertama saya panggil COUNT01. Jika tanggal kasus dalam TAHUN adalah 2001, maka COUNT01 akan memiliki 1 di dalamnya. Jika tahun lainnya (2002-2012), maka harus ada 0. Saya akan memiliki COUNT02, COUNT03 ... COUNT12 kolom. Tidak dapat memiliki nilai "Null".
Inilah yang saya coba sejauh ini
Dan inilah tampilan data di Arc.
vba
danvbscript
tag denganpython
tag. Meskipun belum hilang VBScript sedang dalam proses menjadi usang . Saya berharap ini akan mudah dilakukan dengan parser Python setelah Anda memberikan deskripsi yang lebih rinci yang mencakup gambar / tabel dari beberapa baris sampel yang menunjukkan input aktual dan output yang diharapkan. Apakah YEAR bidang tanggal atau bidang bilangan bulat yang berisi nilai yang sesuai dengan tahun?Jawaban:
Saya pikir ini adalah apa yang Anda inginkan .... menggunakan python Anda bisa melakukan hal berikut (mengasumsikan bidang TAHUN dan COUNT0X adalah bilangan bulat)
Catatan Python menggunakan lekukan untuk mengurai kode sehingga memastikan jaraknya benar.
sumber
if (int(year) == yearVal):
, atau yang lain (lihat: informit.com/articles/article.aspx?p=459269&seqNum=7 ).Jawaban ini pada dasarnya sama dengan yang tercantum di atas, namun cara untuk tidak harus menggunakan blok kode ... untuk bidang Count01, Anda akan mengatur parser ke Python dan kemudian mengatur perhitungan Anda ke
Cara ini berbunyi: Setel bidang ke 1 jika bidang TAHUN adalah 2001, jika bukan 2001, maka setel ke 0 ...
Jika Anda memiliki beberapa kondisi if, Anda dapat membuat kondisi ke-2 (dan selanjutnya) ke-2 di dalam pernyataan lain, seperti ini ...
Cara membaca ini adalah: Setel bidang ke 1 jika bidang TAHUN adalah 2001, jika bukan tahun 2001, lalu setel ke 2 jika tahun 2002, jika tidak, maka setel ke 0 ...
sumber
1 if !YEAR! == 2001 else (2 if !YEAR! == 2002 else (3 if !YEAR! == 2003 else 0))
Jika Anda akan menggunakan VBScript maka perhitungan bidang Anda salah. Pertama saya tidak akan menggunakan variabel yang merupakan nama bidang, ini membingungkan, gunakan nama yang berbeda sehingga sangat jelas apa yang Anda setting. "Endif" Anda salah, seharusnya "berakhir jika" dan kode Anda seharusnya ada di bagian skrip pra-logika. Cara yang benar untuk mengatur ini ditunjukkan di bawah ini. Tetapi seperti yang dikatakan orang lain, cobalah untuk tidak menggunakan VBScript karena ESRI sangat ingin menyingkirkannya demi Python.
sumber