Lebih

Cara menemukan dan mengganti nilai atribut berdasarkan daftar


Saya memiliki Shapefile dan daftar di .csv yang berisi dua kolom dengan nama:

  • "Old_name" yang berisi nama-nama lama yang sudah ada di tabel atribut Shapefile yang disebutkan sebelumnya; dan
  • "New_name" yang berisi nama yang diperbarui.

Bagaimana saya bisa melakukan ini di ArcGIS, QGIS atau dengan python?

Berdasarkan pertanyaan ini saya perlu menggunakanPerbarui Kursorfungsi, tetapi bagaimana saya bisa menggunakan daftar dalam fungsi ini?


Dengan asumsi csv siap dikonsumsi oleh arcpy sebagai tabel dengan dua kolom bernamaOLD_NAMEdanNAMA BARU, dan mengikuti contoh yang diberikan dalam pertanyaan untuk sampai ke sumber shp diPerbarui Kursor.

#buat kamus csv untuk bergabung ke shapefile #r[0] adalah item pertama yang diteruskan ke SearchCursor dan digunakan untuk bergabung ke shp #r[1] adalah item kedua dan digunakan untuk pembaruan csvDict= dict([ (r[0], (r[1])) untuk r di arcpy.da.SearchCursor(my_csv, ["OLD_NAME","NEW_NAME"])]) dengan arcpy.da.UpdateCursor(my_shp, ["OLD_NAME", "NEW_NAME"]) sebagai kursor: untuk baris di kursor: joinFieldValue = row[0] #ini adalah "OLD_NAME" pada shapefile jika baris[0] di csvDict: #periksa untuk melihat apakah old_name ada di baris baru[1] = csvDict[joinFieldValue] else: row[1] = row[0] #nama baru sama dengan kursor nama lama.updateRow(baris) del kursor, baris

Di QGIS Anda dapat melakukan Tambahkan Gabung Vektor.

  1. Klik kanan pada layer shapefile Anda pada Layer Panel dan pilih Properti.
  2. Lalu pergi ke bergabung tab.
  3. tekan + tombol, itu akan membuat baru bergabung.
  4. Join layer adalah layer shapefile Anda. Bidang gabung adalah bidang dengan nilai-nilai umum di keduanya. Bidang target adalah bidang Anda yang ingin Anda ikuti.
  5. Setelah itu Anda akan mendapatkan atribut baru di tabel shapefile Anda.

Di ArcGIS sangat mirip. Anda perlu menggunakan alat Tambah Gabung.

Lebih lanjut tentang bergabung di ArcGIS.


Impor csv sebagai tabel sehingga Anda dapat melihat nilainya lalu klik kanan layer asli Anda untuk memilih bergabung dan terkait -> gabung. Pastikan "Bergabung dengan Atribut dari Tabel" adalah opsi yang dipilih dari pulldown di bagian atas. Pilih old_name dari layer asli (di bawah #1), tabel csv di bawah #2, dan old_name di tabel csv untuk #3, lalu klik Ok. Jika Anda kemudian menyimpan layer asli ke output baru dengan mengklik kanan dan memilih "Data"->"Ekspor Data", itu akan memiliki kedua bidang dari tabel csv di tabel atribut output sehingga Anda dapat menggunakannya untuk simbologi atau namun Anda inginkan.