21 votos

Volver a calcular toda la extensión de Archivo de clase de entidad de Geodatabase?

Tengo un featureclass en un archivo Esri geodatabase. Cuando me editar las características usando el editor en ArcMap, y puedo eliminar la mayoría de mis características y conservando sólo los que están en el medio, el zoom a la capa de comandos no funcionan como se espera. En lugar de acercarse a la medida de las características restantes en la clase de entidad, la medida será que la anterior (que contiene todos los borrados características). Cuando la revisión de la medida de los valores en el cuadro de diálogo propiedades de la clase de entidad, que se puede ver claramente los valores antiguos. Para la sesión de edición no parece alterar el alcance total de los valores.

Hay una manera de calcular estos valores?

Estoy bastante seguro de que este problema debe producirse a cada uno funciones de edición en ArcMap...

20voto

Haga clic derecho en la clase de entidad en ArcCatalog y vaya a Propiedades. En la Función de Extensión de la pestaña, haga clic en Recalcular. Y voilà!

Estoy usando ArcGIS 10.2.1

6voto

Erik Öjebo Puntos 6937

La compactación de la Geodatabase se ordene su índice espacial

"Si con frecuencia agregar y eliminar datos, debe compactar el archivo o la personal geodatabase en una base mensual. Usted también debe compactar una geodatabase después de cualquier cambio a gran escala. La compactación contenedoras de almacenamiento por la reordenación de los registros y eliminar el espacio no utilizado. Después de la compactación, los datos de cada archivo puede ser accedido de manera más eficiente. La compactación también reduce el tamaño de cada archivo, es posible ser capaz de reducir el tamaño de una geodatabase a la mitad o más."

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

Compacto (Gestión De Datos)

"Se recomienda compactar las geodatabases personales cuando llegan a la mayor de 250 MB. Si la entrada de datos, la eliminación o edición general se realizan frecuentemente en una base de datos, la base de datos debe ser regularmente compactada para garantizar un rendimiento óptimo."

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

6voto

auramo Puntos 161

Aquí está una ArcCatalog add-in for ArcGIS 10 que agrega un comando de actualización de la clase de entidad de punto, probablemente utilizando el mismo método que @Ragi del código de VBA:

5voto

FlySwat Puntos 61945

La GeoDatabase Medida en que siempre se expande fuera nunca se acorta automáticamente. La compactación y la Compresión de sólo optimiza el almacenamiento y la fragmentación, pero no en la Medida en sí. Me gustaría tratar de recrear el índice espacial primero y ver si se hace el truco.

Actualización:

Dado que el índice espacial de reconstrucción no hace el truco, estoy seguro de que el siguiente código 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

Usted puede hacer esto en cualquier otro ESRI apoyado lenguaje de programación. El truco es conseguir un schemalock y el uso de la IFeatureClassManage::UpdateExtent método.

3voto

Carl Norum Puntos 1856

Si desea actualizar la medida de la característica de clases, en su mxd documento este fragmento de código puede ayudarle a:

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

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X