Saya menggunakan ArcGIS 9.3.1 dan berusaha untuk bekerja dengan geodatabase SDE (dengan satu kelas fitur poligon) yang telah terdaftar sebagai versi. Saya baru mengenal versi dan saya masih mencoba mencari tahu beberapa fungsi dasar itu. Sejauh ini, saya belum dapat menemukan apakah mungkin untuk "membatalkan" atau "menolak" suntingan tertentu setelah mereka diposting ke versi induk.
Misalnya, katakanlah kita memiliki tiga versi: SDE.DEFAULT asli yang dibuat ketika terdaftar sebagai versi, versi anak dari standar yang disebut SDE.QA (untuk Jaminan Kualitas), dan versi anak dari QA yang disebut SDE .Edit1 (tempat pengeditan pertama kali dilakukan). Jika fitur-fitur tertentu dari SDE.Edit1 diedit (misalnya, untuk membuatnya sederhana, katakanlah satu poligon ditambahkan dan satu telah dihapus) dan kemudian SDE.Edit1 direkonsiliasi dengan SDE.QA dan kemudian diposting ke SDE.QA, apakah akan ada ada cara untuk membatalkan perubahan ini nanti? Menindaklanjuti pertanyaan ini, apakah mungkin untuk menolak hanya beberapa perubahan? Misalnya, menerima penambahan poli pertama, tetapi menolak menghapus poli kedua?
Sejauh yang saya tahu, setelah diedit telah diposting ke versi induk, semua perubahan ini sekarang menjadi bagian "permanen" (karena tidak ada kata yang lebih baik) dari versi induk. Saya menyadari fakta bahwa semua perubahan ini dicatat dalam dua tabel, tabel "ADD" dan "DELETE" (sering disebut sebagai tabel "delta"), dan tidak benar-benar mengubah FC asli itu sendiri. Saya mempertimbangkan untuk mengubah tabel delta ini secara manual, tetapi saya menemukan cukup banyak orang yang memperingatkannya untuk mengetahui bahwa kemungkinan itu bukan solusi yang tepat.
Mungkin pemahaman saya tentang versi yang memerlukan beberapa pekerjaan, tapi sepertinya saya tidak bisa menemukan cara untuk menolak perubahan atau membatalkan perubahan setelah diposting. Ini tampak aneh bagi saya, karena ini berarti bahwa tidak ada cara untuk mengurungkan pos yang berisi kesalahan. Saya juga tidak bisa menemukan cara untuk melacak garis keturunan dari versi-versi ini (yaitu, versi mana yang merupakan anak dari orang tua mana). Sementara saya sedang membahas topik ini, jika ada yang tahu tentang referensi ArcSDE yang sangat berguna (tautan, artikel, buku, dll) yang mungkin membantu dengan pemahaman saya tentang ArcSDE (dan mungkin menjawab beberapa pertanyaan ini), itu akan sangat dihargai !
Meskipun jawaban sejauh ini sangat membantu (terima kasih atas tautannya), saya masih tidak dapat menemukan jawaban atas inti pertanyaan saya. Sekali lagi, mungkin itu kesalahpahaman saya sendiri tentang situasi ini. Inilah yang ingin saya ketahui:
Bisakah Anda membalikkan (secara terbalik, maksud saya membatalkan ) sebuah pos setelah dibuat dari versi anak ke versi induk? Dalam skenario ini, orang tua dapat, tetapi tidak harus, versi SDE.DEFAULT. Bahkan lebih baik, saya ingin tahu apakah Anda dapat membalikkan bagian dari sebuah posting (katakanlah, satu edit ke sebuah poligon), setelah diposkan? Saya juga ingin tahu apakah ini dapat dilakukan tanpa perlu ada konflik yang terdeteksi.
Fakta bahwa saya tidak dapat menemukan jawaban yang jelas untuk pertanyaan ini (yaitu, "ya" atau "tidak") yang didokumentasikan di mana saja membuat saya berpikir saya kehilangan sesuatu yang penting tentang versi di ArcSDE. Saya juga lebih suka menghindari memanipulasi tabel A dan D secara manual.
Jawaban:
Ugh. Jawabannya benar-benar rumit yang membutuhkan banyak latar belakang ArcSDE, jadi saya akan mencoba sesingkat mungkin.
Catatan saya akan merujuk ke beberapa diagram dari kertas putih versi super keren yang dapat Anda temukan di situs ESRI . Jika Anda berurusan dengan versi, saya sangat menyarankan Anda untuk membacanya secara menyeluruh.
Kemudian, Anda perlu memahami apa hubungan antara keadaan (yaitu simpul dari pohon negara) dan versi bernama (yaitu label yang menunjuk ke keadaan).
Database tipikal mungkin terlihat seperti diagram-negara di bawah ini:
Di sini, Anda memiliki empat versi dalam basis data (Versi A, Versi B, Versi C dan DEFAULT). Tapi mungkin, saya sedikit lebih maju. Mari kita mulai dengan apa itu negara .
Anda bisa menganggap negara sebagai "transaksi" - unit logis yang berisi beberapa pengeditan untuk satu - atau banyak - tabel. Ini mungkin termasuk dua sisipan untuk "FeatureClass A", penghapusan dari "Feature Class B" dan yang memodifikasi (secara efektif sebuah delete + a insert) ke "Feature Class X". Semua dikelompokkan menjadi satu.
Mari kita lihat diagram state ArcSDE kecil dan sederhana yang dimulai dengan state id 0:
Jika Anda mulai pada status 0 dan Anda mengedit ke satu atau banyak tabel dalam operasi edit, Anda akan membuat status anak 1 dan menjadikannya sebagai status keadaan aktif saat ini . Grup pengeditan berikutnya berikutnya akan membuat status anak 2. Jika Anda ingin membatalkan, Anda tidak perlu mengubah status id dengan cara apa pun - yang perlu Anda lakukan adalah mengubah status keadaan aktif saat ini menjadi 1, atau 0 (tergantung seberapa jauh ke belakang Anda ingin pergi). Redo adalah kebalikannya - cukup gerakkan id keadaan aktif saat ini - sejauh yang Anda inginkan.
Itulah cara undo / redo bekerja dalam versi ArcSDE.
Oke, lanjutkan. Katakan, bahwa Anda ingin membuat edit permanen (yaitu, Anda ingin menyimpan). Apa yang harus Anda lakukan? Ya, menabung hanya mengambil label versi dan memajukannya ke kondisi tertentu. Agak suka mencapnya dan mengatakan "Versi seperti apa yang harus terlihat". Jadi jika Anda melihat kembali diagram pertama, Anda akan melihat bahwa ia memiliki empat versi bernama .
Versi "SDE.DEFAULT" menunjuk ke status id 4
Harap perhatikan bahwa diagram ini, terlepas dari kepercayaan populer, tidak memberi tahu Anda apa pun tentang hubungan logis orang tua-anak yang mereka miliki. Hubungan logis orangtua-anak untuk diagram pertama dapat terlihat seperti ini:
Ini adalah hubungan orangtua-anak yang Anda lihat di ArcMap / ArcCatalog. Tujuannya adalah untuk membatasi versi mana yang dapat Anda rekonsiliasi. Pada titik ini, Anda dapat (secara sah) bertanya pada diri sendiri, mengapa saya membutuhkan ini? Jawabannya, terletak pada versi alur kerja . Ternyata, orang-orang telah menggunakan versi untuk beberapa waktu dan ada beberapa cara yang lebih disukai bagaimana menyusun ini, tapi itu adalah topik untuk hari lain sejak saya ingin menjawab pertanyaan Anda hari ini :)
Bergerak...
OK, jadi apa lagi yang dilakukan versi bernama ini? Ya, mereka memengaruhi bagaimana proses yang disebut kompres ini berperilaku.
Kompres adalah tentang meraih status perantara yang mungkin tidak diperlukan, dan menghapus yang tidak perlu serta menggabungkannya. Anda dapat memicu operasi kompres ArcSDE melalui ArcCatalog, mengatur layanan yang melakukannya setiap saat, dan beberapa operasi edit ArcMap akan memicu operasi kompres mini (yaitu hanya untuk cabang kecil yang sedang digunakan).
Diagram di sebelah kiri menunjukkan pohon keadaan sebelum dikompresi, dan yang di sebelah kanan menunjukkannya tepat setelah dikompresi:
Konsep penting untuk dipahami (yang akan saya rujuk kepada Anda begitu saya akhirnya bisa menjawab pertanyaan Anda) adalah bahwa setiap negara bagian adalah kandidat potensial untuk dikompresi - kecuali negara yang memiliki label (yaitu versi yang disebutkan) menunjuk pada mereka.
Anda dapat melihat bahwa sebelum kompres ada beberapa kondisi tambahan yang tidak perlu. Bahkan, seluruh cabang [3,4,5] dihilangkan. Seandainya ada versi bernama di 5, hasil akhirnya akan sangat berbeda.
Operasi kompres ada untuk menghemat ruang pada basis data Anda dengan menghapus catatan yang tidak Anda butuhkan lagi.
Oke, lanjutkan.
Konsep terakhir yang perlu Anda pahami adalah berdamai - yang secara efektif menggabungkan dua cabang menjadi satu.
Jadi mari kita kembali ke diagram pertama kita. Katakan bahwa Anda ingin merekonsiliasi Versi A dengan SDE.DEFAULT.
Mari kita rekap: empat versi bernama menunjuk ke berbagai id negara. Jadi hal pertama yang harus kita lakukan, adalah membuat status anak di bawah versi target, jadi kita membuat status anak di bawah status id 4, dalam contoh kita, saya sebut status id 20.
Langkah selanjutnya adalah menghitung perbedaan antara kedua versi (detailnya terlalu panjang untuk posting ini, tetapi saya dapat memberitahu Anda bahwa mereka selesai dengan kursor perbedaan ) dan kemudian menerapkan perbedaan tersebut ke id keadaan baru 20 (garis biru).
Katakanlah Anda memutuskan untuk melakukan lebih banyak pengeditan atau menemukan konflik dan memilih baris dari satu versi, atau yang lain. Itu tidak masalah. Itu hanya suntingan baru, dan dilakukan di dalam operasi edit, saat anak menyatakan di bawah cabang yang Anda gabungkan. Dalam contoh ini, saya telah melakukan dua kelompok suntingan berturut-turut setelah rekonsiliasi.
Menyenangkan.
Jadi sekarang katakan bahwa Anda siap " memposting " versi. Apa artinya? Itu hanya meraih label dan mengarahkannya ke status yang sama. Di sini, saya akan memposting Versi A ke SDE.DEFAULT. Seperti inilah tampilannya:
TADAAA! Jadi sekarang Versi A dan SDE.DEFAULT menunjuk ke state id yang sama, dan dengan demikian mereka terlihat sama.
Oke, jadi sekarang saya akhirnya bisa menjawab pertanyaan Anda.
Bisakah Anda membatalkan kiriman? Dokumentasi ArcGIS akan memberi tahu Anda tidak - jangan macam-macam dengan itu. Jangan lakukan itu, karena Anda akan mengacaukan logika ini, dan jika Anda tidak tahu apa yang Anda lakukan, Anda dapat merusak data Anda.
Namun sebenarnya, yang diperlukan hanyalah melakukan satu pembaruan dari salah satu tabel Versi ArcSDE - tabel VERSI, dan memodifikasi entri label (alias versi yang disebutkan). Dalam contoh kami, arahkan ke status id 21, dan Anda baru saja membatalkan seluruh operasi edit. Atur ke 3, dan Anda hanya membatalkan unduhan seluruh rekonsiliasi. Atur ke 5, dan sekarang Anda berada di tempat yang sama sekali berbeda. Apakah ada atau tidak ada konflik tidak relevan.
Tentu saja, ini mengasumsikan bahwa kompres belum terjadi. Mari kita perhatikan kasus di mana kompres terjadi tepat pada saat yang sama Anda memperbarui tabel SDE. Ingat, jika Anda - atau orang lain - mengeksekusi kompres setelah Anda mengeposkannya, seperti inilah struktur pohonnya:
Bisakah Anda membatalkan rekonsiliasi setelah kompres? Nah, dalam hal ini, tidak . Kompres telah menghapus seluruh cabang, jadi Anda tidak dapat membatalkan - bahwa data telah dihapus. Jika ada versi bernama lain di cabang itu, maka kompres tidak akan menghancurkan cabang itu. Saya harap sekarang ini masuk akal.
Jadi, haruskah Anda melakukan ini? Terserah Anda, jika Anda tidak tahu apa yang Anda lakukan, Anda dapat dengan mudah kehilangan data setelah kompres.
sumber
Ada alat yang disebut Geodatabase Toolset (GDBT), yang merupakan plugin untuk ArcCatalog. Ini memvisualisasikan garis keturunan negara dan versi:
Unduh GDBT di sini
sumber
Tidak mengetahui versi dan db. berikut adalah beberapa informasi awal yang akan membantu Anda.
Admin dasar
Berikut adalah beberapa info tentang rec dan post.
Jadi jika Anda menerapkan konsep-konsep ini dan menggunakan perintah perubahan versi, Anda masih memiliki kesempatan untuk menolak perubahan-perubahan itu ketika Anda rec dan memposting ke default.
Anda tidak memiliki tiga salinan dari database yang sama.
Anda memiliki satu salinan dengan versi.
Jika Anda mengelola db ini, Anda benar-benar harus menghabiskan waktu (bahkan mungkin uang) dan menjadi akrab dengan semua ini.
Alur kerja Pengeditan Berversi kelas esri untuk Multiuser Geodatabase gratis dan akan membantu beberapa orang.
Tetapi monte penuh akan menjadi apa yang saya rekomendasikan untuk seseorang yang mengelola segala jenis alur kerja pengeditan sde versi.
Kelas itu Luar Biasa! untuk memahami Alur Kerja Pengeditan Berversi untuk Geodatabase Multiuser .
sumber
Saya punya cara "cepat dan kotor". Beralihlah ke versi default dan edit sesuatu tentang poligon yang telah dihapus. Kemudian ketika Anda berdamai dengan default Anda akan mendapatkan konflik. Klik kanan konflik dan katakan untuk menggunakan kondisi pra-rekonsiliasi. Ini bekerja untuk saya.
sumber
Ya, Anda bisa melakukan ini, tetapi Anda harus melakukannya menggunakan SQL.
SAYA TIDAK MELAKUKAN INI, LAKUKAN RISIKO ANDA SENDIRI. SELALU KEMBALI DATA ANDA SEBELUM MENGEDIT SDE MANUAL.
Anda dapat meminta tabel sde.versions untuk mendapatkan state_id dari versi yang Anda posting dengan perubahan yang ingin Anda batalkan. Kemudian Anda bisa pergi ke tabel A dan D dan menghapus entri yang cocok dengan state_id.
Sekarang Anda memiliki state_id yang menarik. Sekarang Anda perlu menemukan tabel A dan D untuk kelas fitur. Anda melakukan ini dengan menanyakan table_registry. Nilainya akan menjadi registration_id. Jadi untuk mendapatkan tabel A dan D, tambahkan saja pendaftaran_id ke A dan D.
Kemudian cukup kueri tabel A dan D dan hapus entri yang memiliki state_id dari kueri di atas.
Untuk mengetahui lebih lanjut tentang hubungan orangtua dan anak, cukup kueri dari tabel sde berikut.
Ini semua memiliki hubungan dan harus membantu Anda mengikuti bola memantul.
sumber
Tidak mungkin untuk membatalkan pengeditan setelah diedit dari versi anak ke versi induk. Lihat: http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00270000001s000000.htm
Anda dapat meninjau hasil edit yang dilakukan di setiap versi selama proses rekonsiliasi - ini adalah kesempatan Anda untuk menolak suntingan tertentu. Proses rekonsiliasi dijelaskan di sini .
sumber
Ya, seperti yang dikatakan orang lain, jawaban singkatnya adalah tidak.
Versi SDE sangat menjanjikan tetapi sangat disayangkan bahwa alur kerjanya hanya mengasumsikan perubahan fitur.
Versi fitur lengkap di SDE akan menawarkan alat yang-
Ini akan menjadi seperti sistem versi kontrol kode sumber SVN tetapi untuk fitur spasial.
sumber
Jawaban sederhananya adalah TIDAK.
Tujuan memposting versi adalah untuk melakukan pengeditan tersebut ke versi target.
Kembalikan dilakukan dengan tidak memposting versi (dan merupakan praktik yang baik untuk menghapus versi yang ditinggalkan tersebut).
Saat mengedit versi, aplikasi pengeditan (misalnya ArcMap) dapat memberikan berbagai tingkat 'undo' dan pengguna dapat memilih untuk menyimpan / tidak menyimpan hasil edit tersebut untuk versi yang sedang diedit.
Tetapi setelah memposting ke target (mis. Sde.default) satu-satunya cara untuk membatalkan adalah melalui hacks ke tabel sistem sde.
sumber