اكتب شيئا للبحث...

شفرة

تعرض هذه الصفحة بعضًا من التعليمات البرمجية المفيدة التي نشاركها مع عملائنا لمساعدتهم في أتمتة المعالجة الجغرافية والمهام الأخرى. يتضمن أحد الأمثلة على هذه المهام الأخرى تدقيق البيانات عن طريق إنشاء قوائم جرد البيانات التي يمكن إخراجها إلى ملفات CSV. على سبيل المثال، قمنا بتضمين برنامج نصي هنا يسرد جميع البيانات التعريفية للبيانات المكانية في قواعد بيانات جغرافية ملفية متعددة في دليل، ثم يقوم بإخراج النتائج إلى ملف CSV. يمكن بعد ذلك تشغيل برنامج نصي ثانٍ لتحديث أي بيانات تعريف مفقودة.

إذا كان هناك برنامج نصي ترغب في رؤيته في القائمة أدناه، فيرجى إرسال رسالة إلينا لأننا كتبنا مئات البرامج النصية مثل هذه، وربما يكون لدينا بالفعل برنامج نصي يفعل ما تريد، أو يمكننا كتابة البرنامج النصي لك. وبالمثل، تستخدم العديد من هذه البرامج النصية ArcPy، ومع ذلك، يمكننا إعادة كتابة أي من هذه البرامج النصية بدون ArcPy إذا لزم الأمر، وفي بعض الحالات، قمنا بالفعل بكتابة بعض البرامج النصية بدون ArcPy، بحيث يمكنك استخدامها إذا لم يكن لديك برنامج ArcGIS.

جميع برامج Python النصية لدينا تستخدم Python 3، ونستخدم Visual Studio Code لـ IDE الخاص بنا. يرجى إعلامنا إذا كانت لديك أية مشكلات في تشغيل أي من البرامج النصية، وتذكر عند تشغيل أي من هذه البرامج النصية التي تعدل البيانات، فمن المهم عمل نسخة احتياطية من بياناتك في حالة احتياجك إلى التراجع عن التغييرات مرة أخرى.

قم بإدراج جميع قواعد البيانات الجغرافية المؤسسية وفئات المعالم وبيانات التعريف الخاصة بها

#

هذا البرنامج النصي مفيد لتدقيق البيانات التعريفية. يمكن تشغيل البرنامج النصي عبر قواعد بيانات جغرافية enterprise متعددة، وسيقوم بإنشاء ملف CSV مخرج بهذه الأعمدة: "قاعدة البيانات الجغرافية"، و"مجموعة بيانات المعالم"، و"فئة المعالم"، و"المرجع المكاني"، و"عدد الصفوف"، و"عدد الأعمدة"، و"عنوان البيانات التعريفية"، و"وصف البيانات التعريفية"، و"ملخص البيانات التعريفية"، و"أرصدة البيانات التعريفية"، "قيود الوصول إلى بيانات التعريف".

لاستخدام هذا البرنامج النصي، تحتاج إلى تغيير السطر 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)