File Geodatabase 기능 클래스 전체를 다시 계산 하시겠습니까?


19

Esri 파일 지오 데이터베이스에 피쳐 클래스가 있습니다. ArcMap에서 편집기를 사용하여 피쳐를 편집 할 때 대부분의 피쳐를 삭제하고 중간 피쳐 만 유지하면 레이어 확대 / 축소 명령이 예상대로 작동하지 않습니다. 피쳐 클래스에 남아있는 피쳐의 범위까지 확대하는 대신, 범위는 이전 피쳐 (삭제 된 모든 피쳐 포함)가됩니다. 피쳐 클래스의 특성 대화 상자에서 범위 값을 검토 할 때 이전 값을 명확하게 볼 수 있습니다. 따라서 편집 세션은 전체 범위 값을 변경하지 않는 것 같습니다.

이 값을 다시 계산하는 방법이 있습니까?

ArcMap에서 기능을 편집하는 모든 사람 에게이 문제가 발생해야한다고 확신합니다 ...


1
불행하게도 Arc : REBOX는 ArcGIS 도구로 번역되지 않았습니다 :-)
PolyGeo

답변:


6

Esri는 이제 10.4 (hooray) : 기능 클래스 범위 재 계산을 위한 도구를 제공합니다 .

피처 클래스를 생성하고 arcpy로 지오메트리를 작성할 때이 문제가 발생했습니다. 분명히 이러한 도구는 범위를 업데이트하지 않습니다 (성능상의 이유로 좋은 아이디어 일 것입니다).

@Lou의 제안으로 10.2.2의 범위를 성공적으로 재설정했습니다.

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/

컴팩트 (데이터 관리)

"개인 지오 데이터베이스가 250MB보다 커지면 압축하는 것이 좋습니다. 데이터베이스에서 데이터 입력, 삭제 또는 일반 편집을 자주 수행하는 경우 최적의 성능을 보장하기 위해 데이터베이스를 정기적으로 압축해야합니다."

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


4
대규모 삭제를 수행하는 경우 특히 중요한 지오 데이터베이스의 경우 중요한 작업입니다. 개인적으로 익스텐트 문제를 안정적으로 해결하지는 못했지만 확실히 좋은 생각입니다.
Lou


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 지원 프로그래밍 언어로이 작업을 수행 할 수 있습니다. 요령은 스키마 잠금을 얻고 IFeatureClassManage :: UpdateExtent 메소드 를 사용하는 입니다.


샘플 데이터 세트에서 공간 인덱스를 다시 작성하려고 시도했지만 테스트 사례에서 도움이되지 않았습니다. 나는 솔직히 놀랐다.
Lou

그런 다음 코드로 답변을 업데이트하십시오.
Ragi Yaser Burhum

이런 식으로 ArcCatalog VBA 코드입니다.
Ragi Yaser Burhum

4

File Geodatabases에서 원인을 정확히 알지 못하지만 실제로 복제 할 수 있으며 이전에 직면 한 것입니다. 우회하는 방법을 찾을 수있는 유일한 방법은 파일 지오 데이터베이스를 압축하는 것입니다. 그러면 범위 문제가 해결됩니다. 압축 파일 지오 데이터베이스를 편집 할 수 없기 때문에 압축을 풀어야합니다.

실제로 데이터를 사용하는 경우 편집 / 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.