คำนวณใหม่เต็มขอบเขตของคลาสคุณลักษณะ File Geodatabase หรือไม่


19

ฉันมี classclass ในไฟล์ภูมิศาสตร์ Geodatabase เมื่อฉันแก้ไขฟีเจอร์โดยใช้เครื่องมือแก้ไขใน ArcMap และฉันลบฟีเจอร์ส่วนใหญ่และเก็บเฉพาะฟีเจอร์ที่อยู่ตรงกลางคำสั่งซูมเพื่อเลเยอร์ไม่ทำงานตามที่คาดไว้ แทนที่จะซูมตามขอบเขตของคุณลักษณะที่เหลืออยู่ในคลาสคุณลักษณะขอบเขตจะเป็นฟีเจอร์เดิม (ประกอบด้วยคุณสมบัติที่ถูกลบทั้งหมด) เมื่อตรวจสอบค่าขอบเขตในกล่องโต้ตอบคุณสมบัติสำหรับคลาสคุณลักษณะฉันสามารถเห็นค่าเก่าได้อย่างชัดเจน เซสชันการแก้ไขจึงดูเหมือนจะไม่เปลี่ยนแปลงค่าขอบเขตทั้งหมด

มีวิธีคำนวณค่าเหล่านี้ใหม่หรือไม่?

ฉันค่อนข้างมั่นใจว่าปัญหานี้จะเกิดขึ้นกับทุกคนที่แก้ไขคุณสมบัติใน ArcMap ...


1
น่าเสียดาย Arc: REBOX ไม่ได้แปลเป็นเครื่องมือ ArcGIS :-)
PolyGeo

คำตอบ:


6

ตอนนี้ Esri มีเครื่องมือสำหรับสิ่งนี้ใน 10.4 (ไชโย): คำนวณขอบเขตคุณลักษณะของชั้นเรียน

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

ฉันรีเซ็ตขอบเขตได้สำเร็จใน 10.2.2 ด้วยคำแนะนำของ @Lou:

arcpy.CompressFileGeodatabaseData_management(output_workspace)
arcpy.UncompressFileGeodatabaseData_management(output_workspace)

19

คลิกขวาที่คลาสคุณลักษณะใน ArcCatalog และไปที่คุณสมบัติ ในแท็บคุณสมบัติขอบเขตให้คลิกคำนวณใหม่ และvoilà!

ฉันใช้ ArcGIS 10.2.1


6

การกระชับฐานข้อมูลภูมิศาสตร์จะทำให้ดัชนีอวกาศของคุณเป็นระเบียบขึ้น

"ถ้าคุณเพิ่มและลบข้อมูลบ่อยครั้งคุณควรกระชับไฟล์หรือฐานข้อมูลส่วนบุคคลของคุณเป็นรายเดือนนอกจากนี้คุณควรกระชับฐานข้อมูลทางภูมิศาสตร์หลังจากการเปลี่ยนแปลงขนาดใหญ่ใด ๆ การกระชับจัดเก็บข้อมูลโดยจัดเรียงเรคคอร์ดและกำจัดพื้นที่ที่ไม่ได้ใช้ ข้อมูลในแต่ละไฟล์สามารถเข้าถึงได้อย่างมีประสิทธิภาพยิ่งขึ้นการกระชับยังช่วยลดขนาดของไฟล์แต่ละไฟล์ - เป็นไปได้ที่จะสามารถลดขนาดของฐานข้อมูลทางภูมิศาสตร์ได้มากกว่าครึ่งหนึ่ง "

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#/Compacting_file_and_personal_geodatabases/003n0000007t000000/

กะทัดรัด (การจัดการข้อมูล)

"ขอแนะนำให้กระชับฐานข้อมูลทางภูมิศาสตร์ส่วนบุคคลเมื่อมีขนาดใหญ่กว่า 250 MB ถ้ามีการป้อนข้อมูลลบหรือแก้ไขทั่วไปในฐานข้อมูล

http://help.arcgis.com/en/arcgisdesktop/10.0/help/index.html#//00170000000n000000


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

6

นี่คือ ArcCatalog add-in สำหรับ ArcGIS 10 ที่เพิ่มคำสั่งเพื่ออัปเดตขอบเขตคลาสคุณลักษณะซึ่งอาจใช้วิธีเดียวกันกับรหัส VBA ของ @ Ragi:


ลิงค์นี้ add-in ที่ทำงานที่ดีสำหรับฉันใน 10.1 arcgis.com/home/item.html?id=576ebff497094274bdd7c76e456de6c3
ไซมอน

5

GeoDatabase Extent จะขยายออกเสมอ - ไม่สั้นลงโดยอัตโนมัติ การบีบอัดและบีบอัดจะปรับการจัดเก็บและการกระจายตัวของข้อมูลเท่านั้น ฉันจะลองสร้างดัชนีอวกาศขึ้นมาใหม่ก่อนและดูว่ามันใช้เล่ห์เหลี่ยมหรือไม่

ปรับปรุง:

เนื่องจากการสร้างดัชนีเชิงพื้นที่ไม่ได้ทำเคล็ดลับฉันมั่นใจว่ารหัส VBA ต่อไปนี้จะ:

Public Sub reCalcExt()
  Dim pGXApplication As IGxApplication
  Set pGXApplication = Application

  Dim pGxObject As IGxObject
  Set pGxObject = pGXApplication.SelectedObject

  If Not TypeOf pGxObject.InternalObjectName Is IFeatureClassName Then
    Exit Sub
  End If

  Dim pName As IName
  Set pName = pGxObject.InternalObjectName
  Dim pSchemaLock As ISchemaLock
  Set pSchemaLock = pName.Open

  pSchemaLock.ChangeSchemaLock esriExclusiveSchemaLock
  Dim pFeatureClassManage As IFeatureClassManage
  Set pFeatureClassManage = pSchemaLock
  pFeatureClassManage.UpdateExtent

  Exit Sub

ErrHandler:
  pSchemaLock.ChangeSchemaLock esriSharedSchemaLock
End Sub

คุณสามารถทำได้ในภาษาการเขียนโปรแกรมอื่น ๆ ที่สนับสนุน ESRI เคล็ดลับคือการได้รับ schemalock และการใช้IFeatureClassManage :: UpdateExtentวิธี


ฉันพยายามสร้างดัชนีอวกาศขึ้นใหม่บนชุดข้อมูลตัวอย่างและนั่นไม่ได้ช่วยในกรณีทดสอบของฉัน ฉันรู้สึกประหลาดใจโดยสุจริต
Lou

อัปเดตคำตอบของฉันด้วยรหัสบางส่วนแล้ว
Ragi Yaser Burhum

ด้วยวิธีนี้นี่คือรหัส ArcCatalog VBA
Ragi Yaser Burhum

4

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

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

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


คุณสามารถย้ายคลาสคุณลักษณะไปยังฐานข้อมูลภูมิศาสตร์ / รูปร่างใหม่ แต่ฉันสงสัยอย่างมากว่าเป็นคำตอบที่ยอมรับได้ อย่างไรก็ตามในโอกาสที่แปลกที่เป็นส่วนหนึ่งของเวิร์กโฟลว์ของคุณ (บรรจุข้อมูลสำหรับการจัดส่ง) มันอาจทำงานให้คุณและไม่ต้องการขั้นตอนพิเศษ
Lou

3

หากคุณต้องการอัปเดตขอบเขตของคุณสมบัติคลาสในเอกสาร mxd ของคุณโค้ดนี้อาจช่วยคุณได้:

Dim pLayer As ILayer
        Dim pEnumLayer As IEnumLayer
        Dim pFeatureLayer As IFeatureLayer
        Dim pFeatureClass As IFeatureClass
        Dim pFeatureClassManage As IFeatureClassManage


        pEnumLayer = pMap.Layers
        pLayer = pEnumLayer.Next

        Do Until pLayer Is Nothing
            If TypeOf pLayer Is FeatureLayer Then
                pFeatureLayer = pLayer
                pFeatureClass = pFeatureLayer.FeatureClass
                pFeatureClassManage = pFeatureClass
                pFeatureClassManage.UpdateExtent()
            End If
            pLayer = pEnumLayer.Next
        Loop
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.