กำลังค้นหา Geodatabase สำหรับชื่อ Feature Class หรือ Table โดยใช้ชื่อหรือไม่


10

ฉันกำลังมองหาวิธีค้นหาฐานข้อมูล Geod สำหรับ Class Feature หรือ Table โดยใช้ชื่อ

มีฟังก์ชั่นเช่นนี้หรือไม่?

เห็นได้ชัดว่าการค้นหา windows ส่งคืนรหัสสุ่มของตารางภายใน Geodatabase เท่านั้น ฉันต้องการค้นหาชุดข้อมูลในนั้น

ฉันคิดว่านี่จะช่วยให้ผู้คนจำนวนมากเพราะฉันรู้ว่าฉันไม่ใช่คนเดียวที่เก็บข้อมูลเชิงพื้นที่ในฐานข้อมูล Geod เพื่อเก็บไว้กับชุดข้อมูลอื่นอีกพันชุดและไม่ต้องการกรองผ่านมัน

ฉันต้องการค้นหาฐานข้อมูล Geod เหล่านี้ภายใน ArcCatalog


คำตอบ:


4

นี่เป็นวิธีการทำสิ่งที่คุณขอโดยใช้งูหลาม:

  1. คุณต้องการรายการฐานข้อมูล GeoD ทั้งหมดที่คุณต้องการค้นหา หากมีจำนวนมากให้ใช้ฟังก์ชั่นการเดินของงูใหญ่ในไดเรกทอรีที่เป็นปัญหา แยกสำหรับโฟลเดอร์ใด ๆ ที่มี.gdbในโฟลเดอร์นั้นหรือ.mdbขึ้นอยู่กับฐานข้อมูล

  2. ค้นหาชุดข้อมูลทั้งหมดภายใน GeoDatabase

  3. ค้นหาเลเยอร์ทั้งหมดภายในชุดข้อมูล

  4. ผลการค้นหาจากเลเยอร์สำหรับสิ่งที่คุณกำลังมองหา

นี่คือตัวอย่างโค้ดของสิ่งที่ฉันพูดถึง:

import arcpy
from arcpy import env
x = 'File Name That You Are Looking For'
GDBs = ['GeoDatabase1', 'GeoDatabase2', 'ect']  # Your list of GeoDatabases
for GDB in GDBs:                                # Iterate through your list
    env.workspace = GDB
    GDBds = arcpy.ListDatasets()                # Find datasets in GeoDatabase
    for ds in GDBds:                            # Iterate through datasets
        env.workspace = GDB + '/' + ds
        fc = arcpy.ListFeatureClasses()         # Find all data in the dataset
        for f in fc:
            if f.find(x) != -1:
                print GDB + '/' + ds + '/' + f    

4
ไม่ได้ทุกชั้นเรียนคุณลักษณะอยู่ในชุดข้อมูลคุณลักษณะ (ปฏิบัติที่ดีที่สุดจะส่งผลให้ในช่วงไม่กี่มาก)
วินซ์

10

อีกวิธีหนึ่งในการค้นหาคลาสคุณลักษณะซึ่งอาจหรืออาจไม่อยู่ในชุดข้อมูลคือการใช้walkฟังก์ชันดังกล่าวก่อนหน้านี้ มันต้องการเพียงพื้นที่ทำงานในการค้นหา (เช่นโฟลเดอร์ที่มี GDB หลายร้อยรายการ)

import arcpy, os
workspace = "Path/to/folder"
search = "name_string_you_are_searching_for"
feature_classes = []
for dirpath, dirnames, filenames in arcpy.da.Walk(workspace,
                                                  datatype="FeatureClass",
                                                  type="ANY"):
    for fname in filenames:
        # search for string in string to eliminate the need for exact filenames
        if search.upper() in fname.upper():
            feature_classes.append(os.path.join(dirpath, fname))

รายการผลลัพธ์จะมีเส้นทางและชื่อไฟล์ของคลาสคุณลักษณะทั้งหมดที่ตรงกับเกณฑ์การค้นหาของคุณซึ่งสามารถพิมพ์ได้

for fc in feature_classes:
     print fc

walkฟังก์ชั่นนอกจากนี้ยังสามารถปรับเปลี่ยนเพื่อค้นหาประเภทที่เฉพาะเจาะจงของคุณลักษณะ (เช่นรูปหลายเหลี่ยมจุดเชิงภาพ ฯลฯ ) โดยการเปลี่ยนtype=""ประเภทคุณลักษณะ


1

ฉันเจอซอฟต์แวร์มาพักหนึ่งแล้วซึ่งอาจใช้สำหรับการทำดัชนี GeoDatabase และข้อมูลเชิงพื้นที่อื่น ๆ :

https://www.voyagersearch.com/

ฉันลองใช้มันกับ บริษัท ของเราและถึงแม้ว่าเราจะไม่ได้ใช้มันด้วยเหตุผลหลายประการ แต่มันมีฟังก์ชั่นการใช้งานที่มีประโยชน์มากมาย โดยสรุปแล้วมันจะสร้างดัชนีของชุดข้อมูลเชิงพื้นที่ของคุณซึ่งสามารถค้นหาโดยใช้ตำแหน่ง - เนื่องจากจะบันทึกขอบเขตของข้อมูลชื่อและ (ฉันคิดว่า) คุณลักษณะ / เนื้อหาของข้อมูล

นี่คือดัชนีของ GeoDB: https://voyagersearch.zendesk.com/hc/en-us/articles/204187447-Indexing-Esri-Geodatabase-and-Shapefiles

นี่คือหน้าตัวอย่างของพวกเขาที่จะแสดงให้เห็นถึงความสามารถของมันได้ดีกว่าฉัน! http://voyagerdemo.com/web/navigo/#/home

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.