เมื่อ Versioning ด้วย ArcSDE สามารถทำการแก้ไขหรือยกเลิกการโพสต์ได้


28

ฉันใช้ ArcGIS 9.3.1 และพยายามทำงานกับฐานข้อมูลทางภูมิศาสตร์ SDE (ด้วยคลาสรูปหลายเหลี่ยมเดียว) ที่ได้รับการลงทะเบียนเป็นเวอร์ชันแล้ว ฉันยังใหม่กับเวอร์ชันและฉันยังคงพยายามหาฟังก์ชั่นพื้นฐานบางอย่าง จนถึงตอนนี้ฉันยังไม่สามารถค้นพบว่าเป็นไปได้ที่จะ "ยกเลิก" หรือ "ปฏิเสธ" การแก้ไขบางอย่างเมื่อมีการโพสต์ในเวอร์ชันหลัก

ตัวอย่างเช่นสมมติว่าเรามีสามเวอร์ชัน: SDE ดั้งเดิมข้อผิดพลาดที่สร้างขึ้นเมื่อลงทะเบียนเป็นเวอร์ชันเวอร์ชันลูกของค่าเริ่มต้นที่เรียกว่า SDE.QA (สำหรับการประกันคุณภาพ) และรุ่นย่อยของ QA เรียกว่า SDE .Edit1 (ซึ่งมีการแก้ไขครั้งแรก) หากคุณสมบัติบางอย่างของ SDE.Edit1 ได้รับการแก้ไข (เช่นเพื่อให้ง่ายขึ้นสมมติว่ามีการเพิ่มรูปหลายเหลี่ยมหนึ่งรูปแบบและรูปแบบหนึ่งถูกลบออก) จากนั้น SDE.Edit1 จะกระทบยอดกับ SDE.QA และจะโพสต์ลงใน SDE.QA มีวิธีใดบ้างที่จะยกเลิกการเปลี่ยนแปลงนี้ในภายหลัง การติดตามคำถามนี้เป็นไปได้ไหมที่จะปฏิเสธการเปลี่ยนแปลงบางอย่างเท่านั้น ตัวอย่างเช่นการยอมรับการเพิ่มโพลีแรก แต่ปฏิเสธการลบโพลีที่สอง?

เท่าที่ฉันสามารถบอกได้เมื่อมีการโพสต์การแก้ไขในเวอร์ชันผู้ปกครองการเปลี่ยนแปลงทั้งหมดนี้จะเป็น "ถาวร" (เนื่องจากไม่มีคำที่ดีกว่า) ส่วนหนึ่งของเวอร์ชันหลัก ฉันตระหนักถึงความจริงที่ว่าการเปลี่ยนแปลงเหล่านี้ทั้งหมดถูกบันทึกไว้ภายในสองตารางตาราง "เพิ่ม" และ "ลบ" (มักเรียกว่าตาราง "เดลต้า") และไม่ได้เปลี่ยน FC ดั้งเดิมจริง ๆ ฉันพิจารณาว่าการแก้ไขตารางเดลต้าเหล่านี้ด้วยตนเอง แต่ฉันพบว่ามีคนจำนวนมากพอที่จะรู้ว่าอาจเป็นทางออกที่ไม่ถูกต้อง

อาจเป็นความเข้าใจของฉันเกี่ยวกับการกำหนดเวอร์ชันที่ต้องใช้งานบางอย่าง แต่ฉันไม่สามารถหาวิธีปฏิเสธการเปลี่ยนแปลงหรือเลิกทำการเปลี่ยนแปลงได้เมื่อโพสต์แล้ว ดูเหมือนว่าจะแปลกสำหรับฉันเนื่องจากจะหมายความว่าไม่มีวิธีการยกเลิกการโพสต์ที่มีข้อผิดพลาด ฉันไม่สามารถหาวิธีติดตามเชื้อสายของเวอร์ชันเหล่านี้ได้ (เช่นเวอร์ชันใดเป็นลูกของพาเรนต์) ในขณะที่ฉันอยู่ในหัวข้อหากใครรู้การอ้างอิง ArcSDE ที่มีประโยชน์โดยเฉพาะ (ลิงก์บทความหนังสือ ฯลฯ ) ที่อาจช่วยฉันเข้าใจ ArcSDE (และอาจตอบคำถามเหล่านี้) มันจะได้รับการชื่นชมมาก !


แม้ว่าคำตอบจะมีประโยชน์ (ขอบคุณสำหรับลิงก์) แต่ฉันก็ยังไม่สามารถหาคำตอบสำหรับแก่นแท้ของคำถามของฉันได้ อีกครั้งบางทีมันอาจเป็นความเข้าใจผิดของฉันเกี่ยวกับสถานการณ์ นี่คือสิ่งที่ฉันต้องการรู้:

คุณสามารถย้อนกลับ (โดยย้อนกลับได้ฉันหมายถึงเลิกทำ ) โพสต์เมื่อสร้างจากรุ่นลูกไปเป็นรุ่นหลักหรือไม่ ในสถานการณ์สมมตินี้พาเรนต์สามารถเป็นได้ แต่ไม่จำเป็นต้องเป็นเวอร์ชัน SDE.DEFAULT ยิ่งไปกว่านั้นฉันต้องการทราบว่าคุณสามารถย้อนกลับส่วนหนึ่งของโพสต์ได้หรือไม่ (เช่นการแก้ไขรูปหลายเหลี่ยมเดียว) หลังจากโพสต์แล้วหรือยัง ฉันยังต้องการที่จะรู้ว่าสิ่งนี้สามารถทำได้โดยไม่จำเป็นต้องมีการตรวจพบความขัดแย้งใด ๆ

ความจริงที่ว่าฉันไม่สามารถหาคำตอบที่ชัดเจนสำหรับคำถามนี้ (กล่าวคือ "ใช่" หรือ "ไม่") ได้ทุกที่ทำให้ฉันคิดว่าฉันขาดสิ่งที่สำคัญเกี่ยวกับการกำหนดเวอร์ชันใน ArcSDE ฉันต้องการหลีกเลี่ยงการจัดการตาราง A และ D ด้วยตนเอง


? version &
rdbms

คำตอบ:


53

ฮึ. คำตอบนั้นซับซ้อนจริงๆที่ต้องใช้พื้นหลัง ArcSDE จำนวนมากดังนั้นฉันจะพยายามสรุปให้สั้นที่สุด

หมายเหตุ: ฉันจะหมายถึงแผนภาพบางส่วนจากกระดาษสีขาวที่น่ากลัวสุดเวอร์ชันที่คุณจะพบในเว็บไซต์ ESRI หากคุณกำลังจัดการกับเวอร์ชันฉันขอแนะนำให้คุณอ่านมันอย่างละเอียด

จากนั้นคุณต้องเข้าใจว่าอะไรคือความสัมพันธ์ระหว่างสถานะ (เช่นโหนดจากแผนผังต้นไม้) และรุ่นที่ระบุชื่อ (เช่นป้ายชี้ไปที่รัฐ)

ฐานข้อมูลทั่วไปอาจมีลักษณะแผนภาพสถานะด้านล่าง:

ไดอะแกรมฐานข้อมูล arcsde ทั่วไป

ที่นี่คุณมีสี่รุ่นในฐานข้อมูล (เวอร์ชัน A, เวอร์ชัน B, เวอร์ชัน C และ DEFAULT) แต่บางทีฉันอาจได้รับล่วงหน้า เริ่มจากสิ่งที่เป็นรัฐกันก่อน

คุณสามารถนึกถึงสถานะว่าเป็น "ธุรกรรม" - หน่วยทางลอจิคัลที่มีการแก้ไขหลายอย่างในตารางเดียวหรือหลายตาราง มันอาจรวมสองแทรกไว้ใน "FeatureClass A", การลบจาก "Feature Class B" และการแก้ไข (การลบ + การแทรกอย่างมีประสิทธิภาพ) เป็น "Feature Class X" ทั้งหมดจัดกลุ่มเป็นหนึ่งเดียว

ลองดูแผนภาพสถานะ ArcSDE ขนาดเล็กง่ายที่เริ่มต้นที่สถานะ id 0:

การเคลื่อนไหวของรัฐ

หากคุณเริ่มต้นที่ 0 และรัฐที่คุณทำแก้ไขใดอย่างหนึ่งหรือหลายตารางในการดำเนินการแก้ไขคุณจะสร้างรัฐเด็ก 1 คนและให้ที่หนึ่งรัฐ ID กลุ่มการแก้ไขอื่น ๆ ที่ตามมาจะสร้างสถานะลูก 2 หากคุณต้องการเลิกทำคุณไม่จำเป็นต้องแก้ไขรหัสสถานะไม่ว่าด้วยวิธีใด - สิ่งที่คุณต้องทำคือเปลี่ยนรหัสสถานะปัจจุบันที่ใช้งานเป็น 1 หรือ 0 (ขึ้นอยู่กับ คุณต้องการไปไกลแค่ไหน) การทำซ้ำเป็นสิ่งที่ตรงกันข้าม - เพียงแค่ย้ายรหัสสถานะที่ใช้งานปัจจุบันไปข้างหน้า - ไปข้างหน้าไกลที่สุดเท่าที่คุณต้องการไป

นั่นคือวิธีการเลิกทำ / ทำซ้ำในเวอร์ชัน ArcSDE

ตกลงย้ายต่อไป สมมติว่าคุณต้องการแก้ไขแบบถาวร (เช่นคุณต้องการบันทึก) คุณต้องทำอะไร การประหยัดเป็นเพียงการคว้าป้ายกำกับเวอร์ชันและย้ายไปข้างหน้าไปยังสถานะเฉพาะ ชนิดเหมือนประทับมันและพูดว่า "นี่คือสิ่งที่รุ่น A ต้องมีลักษณะ" ดังนั้นถ้าคุณมองกลับไปที่แผนภาพแรกคุณจะเห็นว่ามันมีสี่ชื่อรุ่น

  • เวอร์ชัน B ชี้ไปที่สถานะ id 1
  • รุ่น A ชี้ไปที่สถานะ id 3
  • เวอร์ชัน C ชี้ไปที่ id id 5
  • รุ่น "SDE.DEFAULT" ชี้ไปที่สถานะ id 4

    โปรดทราบว่าแผนภาพนี้แม้จะมีความเชื่อที่ได้รับความนิยมไม่ได้บอกอะไรคุณเกี่ยวกับความสัมพันธ์แบบพ่อแม่และลูกเชิงตรรกะ ความสัมพันธ์แบบพ่อแม่และลูกแบบลอจิคัลสำหรับไดอะแกรมแรกอาจมีลักษณะเช่นนี้:

โครงสร้างรุ่นตรรกะ

นี่คือความสัมพันธ์พาเรนต์ - ลูกที่คุณเห็นใน ArcMap / ArcCatalog มีวัตถุประสงค์คือเพื่อจำกัดเวอร์ชันที่คุณสามารถกระทบยอดได้ ณ จุดนี้คุณสามารถถามตัวเองได้ว่าทำไมฉันถึงต้องการสิ่งนี้ คำตอบอยู่ในขั้นตอนการทำงานเวอร์ชัน กลับกลายเป็นว่าผู้คนใช้เวอร์ชันมาหลายครั้งแล้วและมีวิธีที่นิยมใช้ในการจัดโครงสร้างเหล่านี้ แต่นั่นเป็นหัวข้อสำหรับอีกวันหนึ่งเนื่องจากฉันต้องการตอบคำถามของคุณในวันนี้ :)

กำลังเดินทางไป...

ตกลงดังนั้นเวอร์ชันที่ชื่อนี้จะทำอะไรได้อีก ดีที่พวกเขาส่งผลกระทบต่อกระบวนการนี้เรียกว่าการบีบอัดพฤติกรรม

การบีบอัดเป็นข้อมูลเกี่ยวกับการจับสถานะกลางที่อาจไม่จำเป็นและการลบสิ่งที่ไม่จำเป็นออกรวมถึงการรวมเข้าด้วยกัน คุณสามารถเรียกใช้การบีบอัด ArcSDE ผ่าน ArcCatalog ตั้งค่าบริการที่ทำได้ทุกอย่างในชั่วขณะหนึ่งและการดำเนินการแก้ไข ArcMap บางอย่างจะทำให้เกิดการบีบอัดขนาดเล็ก (เช่นสำหรับสาขาขนาดเล็กที่ใช้)

ไดอะแกรมทางด้านซ้ายแสดงแผนผังสถานะก่อนที่จะถูกบีบอัดและแผนผังทางด้านขวาแสดงให้เห็นทันทีหลังจากที่ถูกบีบอัด:

แผนภาพการบีบอัด

แนวคิดสำคัญที่จะเข้าใจ (ซึ่งฉันจะอ้างถึงคุณเมื่อฉันตอบคำถามของคุณได้ในที่สุด) คือทุก ๆ สถานะเป็นผู้สมัครที่มีศักยภาพที่จะถูกบีบอัด - ยกเว้นรัฐที่มีป้ายกำกับ (เช่นชื่อรุ่น) ชี้ไปที่พวกเขา

คุณสามารถเห็นได้ว่าก่อนการบีบอัดมีบางสถานะที่ไม่จำเป็น ที่จริงแล้ว [3,4,5] สาขาทั้งหมดถูกลบออกไป หากมีรุ่นที่ชื่อ 5 ผลลัพธ์ที่ได้จะแตกต่างกันมาก

การบีบอัดข้อมูลจะช่วยประหยัดพื้นที่บนฐานข้อมูลของคุณโดยการลบบันทึกที่คุณไม่ต้องการอีกต่อไป

ตกลงย้ายต่อไป

แนวคิดสุดท้ายที่คุณต้องเข้าใจคือการกระทบยอดซึ่งเป็นการรวมสาขาสองสาขาเข้าด้วยกันอย่างมีประสิทธิภาพ

ลองกลับไปดูแผนภาพแรกของเรากัน สมมติว่าคุณต้องการกระทบยอดเวอร์ชัน A กับ SDE.DEFAULT

ขอปะยางรถ: รุ่นที่มีชื่อสี่แบบซึ่งชี้ไปยังรหัสสถานะต่าง ๆ ดังนั้นสิ่งแรกที่เราต้องทำคือสร้างสถานะลูกภายใต้รุ่นเป้าหมายดังนั้นเราจึงสร้างรัฐย่อยภายใต้สถานะ id 4 ในตัวอย่างของเราฉันเรียกว่าสถานะ id 20

เริ่มกระทบยอด

ขั้นตอนต่อไปคือการคำนวณความแตกต่างระหว่างทั้งสองเวอร์ชัน (รายละเอียดยาวเกินไปสำหรับโพสต์นี้ แต่ฉันสามารถบอกคุณได้ว่าพวกเขาทำด้วยเคอร์เซอร์ที่ต่างกัน ) จากนั้นใช้ความแตกต่างเหล่านั้นกับสถานะ id ใหม่ 20 (สีน้ำเงิน)

กระทบยอด

สมมติว่าคุณตัดสินใจที่จะทำการแก้ไขเพิ่มเติมหรือพบความขัดแย้งและกำลังเลือกแถวจากรุ่นหนึ่งหรือรุ่นอื่น มันไม่สำคัญ สิ่งเหล่านี้เป็นเพียงการแก้ไขใหม่และดำเนินการภายในการดำเนินการแก้ไขเนื่องจากสถานะลูกภายใต้สาขาที่คุณรวมเข้าด้วยกัน ในตัวอย่างนี้ฉันได้ทำการแก้ไขต่อเนื่องอีกสองกลุ่มหลังจากการกระทบยอด

แก้ไขหลังจากการกระทบยอด

น่ารัก

ตอนนี้บอกว่าคุณพร้อม " โพสต์ " เวอร์ชันแล้ว นั่นหมายความว่าอย่างไร? นั่นเป็นเพียงการคว้าป้ายกำกับและชี้ไปที่รหัสรัฐเดียวกัน ที่นี่ฉันจะโพสต์เวอร์ชัน A ถึง SDE.DEFAULT นี่คือสิ่งที่ดูเหมือนว่า:

โพสต์

tadaaa! ดังนั้นตอนนี้เวอร์ชั่น A และ SDE.DEFAULT จะชี้ไปที่ id สถานะเดียวกันและทำให้ดูเหมือนกัน

ตกลงดังนั้นตอนนี้ในที่สุดผมก็สามารถตอบคำถามของคุณ

คุณสามารถเลิกทำการโพสต์ได้หรือไม่? เอกสาร ArcGIS จะบอกคุณไม่ - อย่าไปยุ่งกับมัน อย่าทำเพราะคุณจะยุ่งกับตรรกะนี้และถ้าคุณไม่รู้ว่าคุณกำลังทำอะไรอยู่คุณสามารถทำลายข้อมูลของคุณได้

แต่ในความเป็นจริงสิ่งที่ต้องทำก็คือทำการอัปเดตหนึ่งในตารางการกำหนดเวอร์ชัน ArcSDE - ตาราง VERSIONS และปรับเปลี่ยนรายการของฉลาก (aka ชื่อรุ่น) ในตัวอย่างของเราชี้ไปที่สถานะ id 21 และคุณเพิ่งเลิกทำการแก้ไขทั้งหมด ตั้งค่าเป็น 3 และคุณเพียงแค่ยกเลิกการกระทบยอดทั้งหมด ตั้งไว้ที่ 5 และตอนนี้คุณอยู่ในสถานที่ที่แตกต่างอย่างสิ้นเชิง ไม่ว่าจะมีหรือไม่มีความขัดแย้งก็ไม่เกี่ยวข้อง

แน่นอนว่านี่ถือว่าการบีบอัดไม่ได้เกิดขึ้น ลองพิจารณากรณีที่การบีบอัดเกิดขึ้นในเวลาเดียวกันกับที่คุณกำลังอัปเดตตาราง SDE โปรดจำไว้ว่าถ้าคุณ - หรือคนอื่น ๆ - ดำเนินการบีบอัดหลังจากที่คุณโพสต์นี้เป็นต้นไม้ที่มีลักษณะ:

บีบอัดหลังจากโพสต์

คุณสามารถยกเลิกการกระทบยอดหลังจากการบีบอัดได้หรือไม่? ทั้งในกรณีนี้ไม่มี การบีบอัดทำให้สาขาทั้งหมดหายไปดังนั้นคุณจึงไม่สามารถเลิกทำ - ข้อมูลนั้นถูกลบไปแล้ว หากมีอีกเวอร์ชันหนึ่งชื่อในสาขานั้นการบีบอัดจะไม่ทำลายสาขานั้น ฉันหวังว่าตอนนี้มันสมเหตุสมผลแล้ว

ดังนั้นคุณควรทำเช่นนี้? ขึ้นอยู่กับคุณถ้าคุณไม่รู้ว่าคุณกำลังทำอะไรคุณสามารถหลุดข้อมูลได้อย่างง่ายดายหลังจากทำการบีบอัดข้อมูล


4
คำตอบที่ดี Ragi! การกำหนดเวอร์ชัน SDE เป็นสัตว์ร้ายที่มีความซับซ้อน
blah238

2
ขอบคุณ ฉันรักษา / ขยายรหัสการปรับยอดใน ArcObjects เป็นเวลาสามปีดังนั้นฉันจึงเล่นการปรับพฤติกรรมนี้ตลอดการปล่อย ArcGIS ต่างๆ ฉันละเว้นบางสิ่งเพื่อพยายามทำให้แนวคิดง่ายขึ้น ฉันหวังว่ามันชัดเจนพอเป็นคำตอบ
Ragi Yaser Burhum

2
ขอบคุณสำหรับคำตอบที่ละเอียดมาก Ragi! ฉันรู้สึกว่าตอนนี้ฉันมีความเข้าใจที่ดีขึ้นเกี่ยวกับสิ่งที่ฉันกำลังจะทำ คำอธิบายของคุณในการชี้ไปยังรหัสสถานะอื่นเป็นกลไกในการ "เลิกทำ" การเปลี่ยนแปลง (หรืออาจ "ถอยกลับ" จะเป็นคำอธิบายที่เพียงพอมากกว่า) ฉันยังคงสำรวจลิงก์ตารางเวอร์ชัน ArcSDE ที่คุณระบุ ในกรณีใด ๆ ฉันจะใช้คำแนะนำของคุณและดำเนินการด้วยความระมัดระวัง ขอขอบคุณอีกครั้งที่สละเวลาเพื่อทำตามขั้นตอนนี้!
Sole23

2
+1 คั่นหน้านี้ ฉันคิดว่ามันแสดงให้เห็นว่าทำไมคนส่วนใหญ่ไม่ควรแก้ไขตารางการกำหนดเวอร์ชัน SDE และฉันจะส่งลิงก์ไปยังคำตอบนี้เมื่อฉันเรียนรู้เกี่ยวกับคนที่กำลังคิดเกี่ยวกับเรื่องนี้!
Jay Cummins

2
ว้าวคุณแสดงความคิดเห็นในคำถามของฉันและฉันใช้เวลาสองสามชั่วโมงที่ผ่านมาและอ่านคำถามทั้งหมดที่คุณตอบไป สิ่งที่น่ากลัวขอบคุณ
ianbroad

7

มีเครื่องมือชื่อ Geodatabase Toolset (GDBT) ซึ่งเป็นปลั๊กอินของ ArcCatalog มันแสดงให้เห็นภาพสถานะ linage และรุ่น:

ดาวน์โหลด GDBT ที่นี่


ขอบคุณสเตฟาน นี่คือสิ่งที่ฉันคาดหวังอย่างแท้จริง! สิ่งนี้ทำให้การมองเห็นและติดตามเชื้อสายของ SDE FC ของฉันง่ายขึ้นมาก
Sole23

2
นอกจากนี้คนส่วนใหญ่ไม่รู้เรื่องนี้ แต่ (ตราบใดที่รัฐยังไม่ถูกบีบอัดอย่างสมบูรณ์) คุณสามารถเพิ่มรายการในตาราง VERSIONS สำหรับรหัสสถานะใด ๆ ที่ยังใช้การได้อยู่จากนั้นใช้ arcgis เพื่อเรียกดูแก้ไขอย่างมีความสุข และแม้แต่คืนดีเวอร์ชันนั้นโดยใช้เครื่องมือ ArcGIS มาตรฐาน รุ่นเป็นเพียงป้ายกำกับเพื่อระบุรหัสที่บังคับใช้ ArcSDE เพื่อให้สถานะเหล่านั้นยังคงอยู่
Ragi Yaser Burhum

ตกลงให้ฉันทำคำตอบที่ซับซ้อนยิ่งขึ้น
Ragi Yaser Burhum

3

ขาดความรู้เกี่ยวกับเวอร์ชันและ db นี่คือข้อมูลเบื้องต้นที่จะช่วยคุณ
ผู้ดูแลระบบขั้นพื้นฐาน
นี่คือข้อมูลเกี่ยวกับการบันทึกและโพสต์
ดังนั้นหากคุณใช้แนวคิดเหล่านี้และใช้คำสั่งการเปลี่ยนแปลงเวอร์ชันคุณยังคงมีโอกาสที่จะปฏิเสธการเปลี่ยนแปลงเหล่านั้นเมื่อคุณรับทราบและโพสต์เป็นค่าเริ่มต้น

คุณไม่มีฐานข้อมูลเดียวกันสามสำเนา
คุณมีหนึ่งสำเนาที่มีเวอร์ชัน
หากคุณจัดการฐานข้อมูลนี้คุณจะต้องใช้เวลาอย่างมาก (อาจเป็นเงิน) และคุ้นเคยกับสิ่งเหล่านี้ทั้งหมด เวิร์กโฟลว์การแก้ไข Versioned
คลาสesri สำหรับ Multiuser Geodatabaseนั้นว่างและจะช่วยคุณได้
แต่ monte แบบเต็มจะเป็นสิ่งที่ฉันแนะนำสำหรับคนที่ดูแลเวิร์กโฟลว์การแก้ไข sde เวอร์ชันใด ๆ
คลาสนั้นยอดเยี่ยมมาก! สำหรับการทำความเข้าใจ versioned แก้ไขเวิร์กโฟลว์สำหรับผู้ใช้หลายคน geodatabase


ขอบคุณสำหรับคำตอบของคุณแบรด ฉันจะตรวจสอบลิงก์และคลาสที่คุณแนะนำ!
Sole23

ลิงก์เหล่านี้ใช้สำหรับเซิร์ฟเวอร์ sql - แต่มีไฟล์ช่วยเหลือ rdbms อื่น ๆ อยู่ใกล้กับสิ่งเหล่านี้
Brad Nesom

1
ผมเฝ้าดูการบันทึกฟรีสัมมนา Esri คุณแนะนำ: versioned แก้ไขเวิร์กโฟลว์สำหรับผู้ใช้หลายคน geodatabase ฉันคิดว่ามันมีประโยชน์จริง ๆ และคุ้มค่ากับเวลาที่ใช้ในการดู (ประมาณ 1 ชั่วโมง) ขอบคุณอีกครั้งสำหรับคำแนะนำ ฉันยังพบการเชื่อมโยงเพื่อดูคำตอบที่พวกเขาจะมีคำถามเพิ่มเติมว่าพวกเขาไม่ได้มีเวลาที่จะตอบในระหว่างการสัมมนาที่นี่
Sole23

3

ฉันมีวิธี "รวดเร็วและสกปรก" สลับไปเป็นเวอร์ชันเริ่มต้นและแก้ไขบางอย่างเกี่ยวกับรูปหลายเหลี่ยมที่ถูกลบ จากนั้นเมื่อคุณคืนดีกับการเริ่มต้นคุณจะได้รับความขัดแย้ง คลิกขวาที่ข้อขัดแย้งและบอกให้ใช้สถานะกระทบยอดล่วงหน้า มันใช้งานได้สำหรับฉัน


1

ใช่คุณสามารถทำได้ แต่คุณจะต้องใช้ SQL

ฉันไม่ใช้มันทำสิ่งนี้ตามความเสี่ยงของคุณเอง สำรองข้อมูลของคุณก่อนทำการแก้ไข SDE ด้วยตนเองเสมอ

คุณสามารถสืบค้นตาราง sde.versions เพื่อรับ state_id จากเวอร์ชันที่คุณโพสต์ด้วยการเปลี่ยนแปลงที่คุณต้องการเลิกทำ จากนั้นคุณสามารถไปที่ตาราง A และ D และลบรายการที่ตรงกับ state_id

    SELECT *
    FROM SDE.VERSIONS
    WHERE NAME = 'Version of interest';

ตอนนี้คุณมี state_id ที่น่าสนใจ ตอนนี้คุณต้องค้นหาตาราง A และ D สำหรับคลาสคุณลักษณะ คุณทำได้โดยการสอบถาม table_registry ค่าจะเป็น register_id ดังนั้นในการรับตาราง A และ D เพียงแค่เพิ่ม register_id ลงใน A และ D

    REGISTRATION_ID = 1
    A table would be A1
    D table would be D1

จากนั้นเพียงสอบถามทั้งตาราง A และ D และลบรายการที่มี state_id จากแบบสอบถามด้านบน

หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับความสัมพันธ์ระหว่างผู้ปกครองและเด็กเพียงสอบถามจากตาราง sde ต่อไปนี้

    state_lineages
    versions
    states

สิ่งเหล่านี้ล้วนมีความสัมพันธ์และจะช่วยให้คุณติดตามลูกบอลกระดอน


1

ไม่สามารถยกเลิกการแก้ไขได้เมื่อโพสต์จากรุ่นลูกไปเป็นรุ่นแม่ ดู: http://help.arcgis.com/th/arcgisdesktop/10.0/help/index.html#//00270000001s000000.htm

ไม่สามารถยกเลิกการโพสต์ได้เนื่องจากคุณใช้การเปลี่ยนแปลงกับเวอร์ชันที่คุณไม่ได้ทำการแก้ไข

คุณสามารถตรวจสอบการแก้ไขที่ทำในแต่ละรุ่นในระหว่างกระบวนการกระทบยอดซึ่งเป็นโอกาสของคุณที่จะปฏิเสธการแก้ไขบางอย่าง กระบวนการกระทบยอดมีการอธิบายไว้ที่นี่ที่นี่


1

ใช่อย่างที่คนอื่น ๆ บอกไว้คำตอบสั้น ๆ คือ

การกำหนดเวอร์ชันของ SDE นั้นมีแนวโน้มดีมาก แต่ก็เป็นที่น่าเสียดายที่เวิร์กโฟลว์สันนิษฐานว่าจะมีการเปลี่ยนแปลงคุณสมบัติเท่านั้น

เวอร์ชันที่มีคุณลักษณะครบถ้วนใน SDE จะเสนอเครื่องมือที่ -

  • อนุญาตการย้อนกลับ (ระดับคุณลักษณะ) และยอมรับ / ปฏิเสธ
  • จะอนุญาตให้เลิกทำ
  • และอนุญาตการยกเลิกสถานะก่อนหน้า (เช่นเริ่มจาก stat 3 เลิกทำการเปลี่ยนแปลงจากสถานะ 1 แต่เก็บการเปลี่ยนแปลงจากสถานะ 2)

สิ่งนี้จะเป็นเหมือนระบบควบคุมเวอร์ชันซอร์สโค้ด SVN แต่สำหรับคุณลักษณะเชิงพื้นที่


สวัสดีเดวิดใช่นั่นคือสิ่งที่ฉันมีอยู่ในใจเมื่อฉันมองไปที่เวอร์ชัน น่าเสียดายที่เวิร์กโฟลว์ปัจจุบันไม่ค่อยมีความยืดหยุ่นมากนัก แต่ฉันคิดว่ามันเป็นงานที่อยู่ระหว่างดำเนินการและอาจเป็นไปได้ในที่สุด
Sole23

1
ถ้าข้อมูลไม่เคยบีบอัดในทางทฤษฎีคุณสามารถย้อนกลับไปได้มากเท่าที่คุณต้องการ ปัญหาคือว่าการรวมฐานข้อมูลช้ามากและระบบช้าลงจนใช้ไม่ได้ ปัญหาแตกต่างจากการจัดการควบคุมแหล่งที่มา repo แหล่ง git ขนาดใหญ่เช่นเคอร์เนล linux ปัจจุบัน ~ 175MB ในทางภูมิศาสตร์นั่นจะเป็นปัญหาที่ใหญ่กว่ามาก อย่างไรก็ตามคนฉลาดจริงๆกำลังคิดเกี่ยวกับปัญหานี้ในขณะนี้ ดู Geogit: blog.opengeo.org/tag/geogit
Ragi Yaser Burhum

0

คำตอบง่ายๆคือไม่

จุดประสงค์ของการโพสต์เวอร์ชันคือการคอมมิทการแก้ไขเหล่านั้นไปยังเวอร์ชั่นเป้าหมาย

การย้อนกลับทำได้โดยไม่โพสต์เวอร์ชัน (และเป็นวิธีที่ดีในการลบเวอร์ชันที่ถูกทอดทิ้งดังกล่าว)

ในขณะที่แก้ไขเวอร์ชันแอปพลิเคชันการแก้ไข (เช่น ArcMap) อาจมีระดับ 'เลิกทำ' และผู้ใช้สามารถเลือกที่จะบันทึก / ไม่บันทึกการแก้ไขดังกล่าวกับเวอร์ชันที่กำลังแก้ไข

แต่หลังจากโพสต์ไปยังเป้าหมาย (เช่น sde.default) วิธีเดียวในการยกเลิกคือการแฮ็กไปยังตารางระบบ sde

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.