検索するものを入力してください...

コード

このページでは、ジオプロセシングやその他のタスクの自動化に役立つように、クライアントと共有する便利なコードの一部を示します。 これらの他のタスクの例には、CSV ファイルに出力できるデータ インベントリ リストを作成することによるデータ監査が含まれます。 たとえば、ディレクトリ内の複数のファイル ジオデータベース内の空間データのすべてのメタデータを一覧表示し、結果を CSV ファイルに出力するスクリプトをここに組み込みました。 次に、2 番目のスクリプトを実行して、欠落しているメタデータをバッチ更新できます。

以下のリストに表示したいスクリプトがある場合は、メッセージをお送りください。当社はこのようなスクリプトを何百も作成しており、ご要望に応じたスクリプトがすでに存在する可能性があります。または、当社がスクリプトを作成することもできます。 同様に、これらのスクリプトの多くは ArcPy を使用しますが、必要に応じて ArcPy を使用せずにこれらのスクリプトを書き直すことができます。また、場合によっては、ArcGIS ソフトウェアをお持ちでない場合でも使用できるように、一部のスクリプトがすでに ArcPy を使用せずに作成されています。

すべての Python スクリプトは Python 3 を使用し、IDE には Visual Studio Code を使用します。 スクリプトの実行中に問題が発生した場合はお知らせください。データを変更するこれらのスクリプトを実行するときは、変更を元に戻す必要がある場合に備えてデータをバックアップすることが重要です。

すべてのエンタープライズ ジオデータベースとフィーチャクラス、およびそれらのメタデータをリストします。

#

このスクリプトは、メタデータの監査に役立ちます。 このスクリプトは複数の enterprise ジオデータベースにわたって実行でき、次の列を含む出力 CSV ファイルを作成します: 「ジオデータベース」、「フィーチャ データセット」、「フィーチャクラス」、「空間参照」、「行数」、「列数」、「メタデータ タイトル」、「メタデータの説明」、「メタデータの概要」、「メタデータ クレジット」、 「メタデータ アクセス制約」。

このスクリプトを使用するには、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)