พิมพ์คำค้นหา...

รหัส

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

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

สคริปต์ Python ทั้งหมดของเราใช้ Python 3 และเราใช้ Visual Studio Code สำหรับ IDE ของเรา โปรดแจ้งให้เราทราบหากคุณมีปัญหาในการเรียกใช้สคริปต์ใดๆ และโปรดจำไว้ว่าเมื่อเรียกใช้สคริปต์ใดๆ เหล่านี้เพื่อแก้ไขข้อมูล สิ่งสำคัญคือต้องสำรองข้อมูลของคุณไว้ในกรณีที่คุณต้องการคืนค่าการเปลี่ยนแปลงของคุณกลับ

แสดงรายการฐานข้อมูลภูมิศาสตร์องค์กรและคลาสคุณลักษณะทั้งหมด และข้อมูลเมตาของพวกเขา

#

สคริปต์นี้มีประโยชน์สำหรับการตรวจสอบข้อมูลเมตา สคริปต์สามารถทำงานได้บนฐานข้อมูลทางภูมิศาสตร์ enterprise หลายฐานข้อมูล และจะสร้างไฟล์ CSV เอาท์พุตที่มีคอลัมน์เหล่านี้: 'Geodatabase', 'Feature Dataset', 'Feature Class', 'Spatial Reference', 'Spatial Reference', 'Row Count', 'Column Count', 'Column Count', 'Metadata Title', 'Metadata Description', 'Metadata Summary', 'Metadata Credits', 'ข้อจำกัดการเข้าถึงข้อมูลเมตา'

หากต้องการใช้สคริปต์นี้ คุณต้องเปลี่ยนบรรทัด 19 ให้ชี้ไปที่ไฟล์การเชื่อมต่อ SDE ของคุณ

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)