Kantor saya akan melihat perubahan besar di bagian GIS. Bagian ini telah beroperasi sejak 1980-an dan memiliki banyak koleksi data GIS (yaitu, shapefile, file raster, data, dll) tetapi tidak pernah melalui inventaris apa pun. Sekarang ini akan terjadi.
Apakah ada cara otomatis untuk mengekstrak semua informasi tentang data GIS (yaitu, shapefile, cakupan info busur, file lapisan, * .mxd, gdb, file raster, dan banyak lagi) dari PC ke file Excel? Informasi dapat mencakup tanggal pembuatan, tanggal diedit terakhir, nama folder atau wadah, dll.
arcpy
file-geodatabase
excel
metadata
blu_sr
sumber
sumber
arcpy.da.walk
.Jawaban:
Ini berfungsi untuk saya, menggunakan
arcpy.da.Walk
fungsi di ArcGIS 10.1 SP1:The
csv
Modul ini juga digunakan untuk menyederhanakan penulisan file output. Excel dapat membuka file CSV sehingga Anda dapat melihatnya sebagai spreadsheet.Lihat
arcpy.Describe
fungsi untuk properti tambahan yang dapat Anda sertakan dalam output.Jika Anda secara khusus mencari untuk mem-parsing informasi dari metadata yang sebenarnya , lihat skrip dalam jawaban ini: Membuat tabel yang berisi semua nama file (dan mungkin metadata) dalam File Geodatabase
sumber
Ketika Anda menggunakan Python, Anda harus menggunakan modul yang benar untuk melakukan apa yang Anda inginkan. Untuk menemukan semua file dalam direktori dengan ekstensi shp, misalnya, ada banyak solusi sederhana yang disajikan tanpa jeda, yang mengerikan ... (seperti solusi yang disajikan oleh Nathan W, tetapi ada banyak, banyak yang lain, hanya cari di internet)
Beberapa contoh dengan modul yang relevan:
1) dengan modul glob:
hanya shapefile:
shapefile dan geodatabases:
jika Anda ingin mencari juga di subdirektori:
2) dengan os.listdir dan daftar pemahaman (dalam dua baris) -> daftar hasil
3) dengan modul fnmatch:
dan banyak solusi lainnya, rekursif dll
sumber
Terima kasih artwork21 dan Nathan W atas tanggapan Anda. Dan ya, kode Nathen membuat keajaiban.
Hanya nama file, dan lokasi. PC saya akan bekerja dengan memiliki banyak cakupan (file arc-info) file, apakah akan bekerja pada mereka juga
sumber
arcpy.da.walk
akan mencantumkan cakupan, tapi saya kira tidak karena tidak terdaftar dalam tipe data atau filter tipe.if
pernyataan.txt.close()
jika menggunakanwith
karena akan melakukannya untuk Anda ketika blok keluar.Jika Anda memiliki ArcGIS Desktop 10.0 (atau salah satu paket layanannya), saya pikir taruhan terbaik Anda adalah menulis skrip python yang menggunakan os.walk untuk melihat melalui direktori GIS yang ditentukan dan mencari ekstensi file GIS yang umum seperti .shp,. gdb, .mdb, dll ... dan menulis hasilnya ke file teks yang dibatasi koma. Anda kemudian dapat membawa file teks ke excel, lihat contoh kode di bawah ini:
Jika Anda menggunakan ArcGIS 10.1 (atau lebih baru) untuk Desktop, maka ada Jawaban lain di sini yang menggunakan arcpy.da.Walk yang tidak tersedia pada 10.0 atau sebelumnya.
sumber
csv
modul untuk sedikit abstrak penulisan file, dan menggunakanarcpy.da.walk
pada 10,1 SP1 untuk membiarkan ArcGIS menangani daftar tipe data GIS.Jika Anda ingin menghindari pemrograman, ini mungkin metode termudah dan tercepat.
Ada add-on untuk Excel yang disebut ASAP Utilities . Ada uji coba gratis 90 hari, tetapi setelah itu, $ 49 USD untuk penggunaan bisnis. Ini gratis untuk penggunaan siswa atau pribadi. Add-on menambahkan banyak fungsi yang bermanfaat. Salah satunya adalah membuat daftar file dalam struktur folder. Ini juga menyediakan properti file. Anda dapat membatasi hasil berdasarkan tipe file jika diinginkan.
Berikut video cara melakukan ini.
Saya telah menggunakan pengaya ini sebelumnya dan hasilnya sangat cepat.
Catatan, saya tidak berafiliasi dengan perusahaan perangkat lunak ini.
sumber
Saya tidak bisa mendapatkan jawaban lain untuk bekerja sepenuhnya.
Dalam contoh pertama, dalam direktori dengan geodatabases dan shapefile, saya hanya mendapat daftar kelas fitur di geodatabase, tetapi ketika saya berkomentar bagian geodatabases dari skrip, saya mendapat daftar shapefile.
Pada contoh kedua, bagian geodatabases tidak berfungsi sama sekali, jadi saya menyalin bagian geodatabases dari contoh pertama. Sekali lagi, saya mendapat daftar hanya geodatabases.
Lalu saya tersadar: geodatabases dibaca sebelum shapefile, dan skrip berhenti di
break
di bagian geodatabases.Menjadi pemula python saya tidak tahu mengapa
break
itu diperlukan, tetapi tanpa itu skrip tampaknya pergi dalam loop tak berujung, tetapi karenabreak
diperlukan terpikir oleh saya bahwa menempatkan bagian geodatabases di loop sendiri, setelah file lainnya jenis terdaftar, akan menyelesaikan masalah:#create blank text file with open("C:\\Temp\\GISlayers.txt", "w") as txt: for root, dirs, files in os.walk("C:\\Temp\\temp"): for f in files: #look for shapefiles, etc. [code...] for f in files: #look for geodatabases [code...]
Ketika saya melakukan itu, saya mendapatkan daftar lengkap saya.
sumber