검색어를 입력하세요...

암호

이 페이지에는 고객이 지오프로세싱 및 기타 작업을 자동화하는 데 도움이 되도록 공유하는 유용한 코드 중 일부가 나와 있습니다. 이러한 기타 작업의 예로는 CSV 파일로 출력할 수 있는 데이터 인벤토리 목록을 생성하여 데이터 감사가 있습니다. 예를 들어 디렉터리에 있는 여러 파일 지오데이터베이스의 공간 데이터에 대한 모든 메타데이터를 나열한 다음 결과를 CSV 파일로 출력하는 스크립트를 여기에 포함시켰습니다. 그런 다음 두 번째 스크립트를 실행하여 누락된 메타데이터를 일괄 업데이트할 수 있습니다.

아래 목록에서 보고 싶은 스크립트가 있는 경우 메시지를 보내주십시오. 우리는 이와 같은 수백 개의 스크립트를 작성했으며 귀하가 원하는 작업을 수행하는 스크립트가 이미 있을 수도 있고 귀하를 위해 스크립트를 작성할 수도 있습니다. 마찬가지로 이러한 스크립트 중 상당수는 ArcPy를 사용하지만 필요한 경우 ArcPy 없이 이러한 스크립트를 다시 작성할 수 있으며 어떤 경우에는 이미 ArcPy 없이 일부 스크립트를 작성했으므로 ArcGIS 소프트웨어가 없어도 사용할 수 있습니다.

모든 Python 스크립트는 Python 3을 사용하고 IDE에는 Visual Studio Code를 사용합니다. 스크립트를 실행하는 데 문제가 있으면 알려주십시오. 데이터를 수정하는 스크립트를 실행할 때 변경 사항을 되돌려야 할 경우를 대비해 데이터를 백업하는 것이 중요합니다.

모든 기업 지오데이터베이스, 피처 클래스, 해당 메타데이터 나열

#

이 스크립트는 메타데이터 감사에 유용합니다. 이 스크립트는 여러 enterprise 지오데이터베이스에서 실행될 수 있으며 '지오데이터베이스', '피처 데이터세트', '피처 클래스', '공간 참조', '행 개수', '열 개수', '메타데이터 제목', '메타데이터 설명', '메타데이터 요약', '메타데이터 크레딧', '메타데이터 액세스' 열이 포함된 출력 CSV 파일을 생성합니다. Constraints'.

이 스크립트를 사용하려면 SDE 연결 파일을 가리키도록 19행을 변경해야 합니다.

import csv
import os

from arcpy import Describe
from arcpy import env
from arcpy import GetCount_management
from arcpy import ListDatasets
from arcpy import ListFeatureClasses
from arcpy import ListFields
from arcpy import metadata as md

# the output CSV file name
output_csv_file = 'enterprise_gdbs_results.csv'

# or use this to make the output CSV file name the same as the script name
# output_csv_file = os.path.basename(__file__).replace('.py','.csv')

# change this path to use your SDE connection files
sde_connection_files = 'c:/gis/sde_connection_files'

with open(output_csv_file,'w',newline='') as csv_file:
    csv_writer = csv.writer(csv_file, delimiter=',')
    column_headers = [
        'Geodatabase', 'Feature Dataset', 'Feature Class', 
        'Spatial Reference', 'Row Count', 'Column Count', 
        'Metadata Title', 'Metadata Description', 'Metadata Summary',
        'Metadata Credits', 'Metadata Access Constraints'
    ]
    
    csv_writer.writerow(column_headers)

    for (folder, dirs, files) in os.walk(sde_connection_files):
        for file in files:
            if(not file.startswith('_') and file.endswith('.sde')):
                geodatabase = file.split('@')[1]

                wksp = os.path.join(folder,file)
                env.workspace = wksp

                datasets = ListDatasets(feature_type='feature')
                datasets = [''] + datasets if datasets is not None else []

                for dataset in datasets:
                    for feature_class in ListFeatureClasses(dataset):
                        desc = Describe(feature_class)
                        spatial_reference = desc.SpatialReference.factoryCode
                        count = GetCount_management(feature_class)[0]
                        column_count = len(ListFields(feature_class))
                        metadata = md.Metadata(feature_class)

                        row = [
                            geodatabase,dataset,feature_class,
                            spatial_reference,count,column_count,
                            metadata.title,metadata.description,
                            metadata.summary,metadata.credits,
                            metadata.accessConstraints    
                        ]

                        print(row)
                        
                        csv_writer.writerow(row)