Saya memiliki geodatabase file Esri dengan domain atribut yang ditentukan. Saya perlu menghapus beberapa domain atribut tetapi tidak bisa karena "Domain digunakan oleh aturan atribut." . Bagaimana saya menemukan kelas fitur mana yang menggunakan domain?
Executing: DeleteDomain R:\v5\YT_Canvec.gdb Permanency
Start Time: Thu May 19 11:01:02 2011
ERROR 999999: Error executing function.
The domain is used by an attribute rule.
Failed to execute (DeleteDomain).
Failed at Thu May 19 11:01:02 2011 (Elapsed Time: 0.00 seconds)
Ada lebih dari seratus kelas fitur di geodatabase, yang secara interaktif melihat properti bidang FC untuk masing-masingnya adalah non-starter. Gdb terlalu besar untuk dikonversi ke gdb pribadi dan masuk di pintu belakang dengan ms-access (bagaimanapun juga metode yang cerdik).
(2011-May-26): Cara lain untuk frasa ini adalah "Kelas Fitur mana yang menggunakan domain X?"
arcpy
file-geodatabase
error-999999
domains
matt wilkie
sumber
sumber
Jawaban:
Untuk menjawab pertanyaan tentang penanganan kelas fitur dengan subtipe, dimungkinkan dengan arcpy (10.1+).
Kode subtipe, kode, akan menjadi nol jika tidak ada subtipe, sehingga kode tersebut mencetak 'Tidak Ada'.
The subtipe kamus telah lebih dari itu, sehingga memeriksanya dalam kode.
sumber
Python memiliki metode untuk mendaftarkan kelas fitur dalam geodatabase, mengulang setiap kelas fitur dalam daftar, mendaftarkan bidang di setiap kelas fitur, dan memperlihatkan domain dari setiap bidang.
Kode di atas harus bekerja di ArcGIS 10 dan itu akan mencetak daftar tepat di jendela juru bahasa python. Anda kemudian dapat menyalin dan menempel daftar ke editor teks atau Excel untuk meninjau hasilnya dengan lebih mudah.
sumber
Karena saya tidak berpikir python menangani subtipe, saya memposting kode c # ini yang seharusnya. Saya mengujinya dengan sampel air / air limbah geodb Esri dan menemukan domain yang tidak digunakan berikut:
Seringkali DBA merasa terganggu bahwa domain - yang pada dasarnya adalah tabel pencarian - tidak dapat diakses melalui SQL.
Kode ini diuji dari arcmap ( diperbarui per komentar Matt):
sumber
Kode ini harus mengembalikan apa yang diminta. Ini akan dengan singkat melintasi semua kelas fitur dan tabel di ruang kerja GDB / FS dan mengembalikan semua bidang yang terkait dengan domain, nama bidang, dan kelas fitur / tabel di dalamnya.
sumber
Sayangnya jawaban Brian, yang merupakan jawaban langsung dan dapat digunakan pertanyaan yang diajukan, tidak menyelesaikan masalah saya yang sebenarnya. Saya kira karena ada bug di gdb (meskipun tidak ada kelas fitur yang memiliki domain terlampir, masih ada satu yang tidak boleh saya hapus). Bagaimanapun saya menemukan metode lain untuk menentukan fc mana yang memiliki domain terkait. Ini interaktif, tetapi jauh lebih cepat daripada menelusuri setiap properti bidang pada setiap fc:
sumber
HD_148009_2
terhubung ke CV DomainPermanency
, skrip arc Brian melaporkan tidak ada domain tertaut, dan begitu pula inspektur bidang Feature Class Properties di ArcCatalog. Namun sekarang saya akhirnya mempersempitnya cukup untuk mencatat laporan bug dengan dukungan teknis Esri.Inilah yang saya bayangkan Matt Wilkie harus mencari dan menulis untuk menambah kode Brian. Saya harus mendapatkan semua domain untuk tabel, kelas fitur di direktori root database, dan fitur di semua dataset fitur. Saya mengekspor informasi sebagai csv untuk memungkinkan beberapa pekerja lain membersihkan lingkungan geodatabase kami di domain lama.
sumber
Esri: FAQ: Bagaimana saya bisa menemukan semua tempat di mana domain direferensikan dalam geodatabase saya? ."Fungsi-fungsi Python yang dapat membuat daftar properti dari struktur-struktur ini dalam sebuah geodatabase. Di antara sifat-sifat tersebut adalah domain yang dirujuk. Sebuah skrip sampel dan file geodatabase disediakan yang menunjukkan bagaimana fungsi-fungsi Python dapat digunakan untuk membuat daftar domain dan properti lain dari kelas fitur dan tabel. Domain dapat dikaitkan dengan bidang dalam kelas fitur atau tabel; mereka juga dapat diatur untuk bidang yang dikategorikan oleh subtipe. "
Hasilnya berisik untuk pertanyaan ini, melampaui domain apa yang digunakan, tetapi platform yang lebih luas untuk memulai.
Kutipan kode, diedit untuk singkatnya:
sumber