Mencari Geodatabase untuk Kelas Fitur atau Tabel dengan namanya?

10

Saya mencari cara untuk mencari Geodatabases untuk Kelas Fitur atau Tabel dengan menggunakan namanya.

Apakah ada fungsi seperti ini yang tersedia?

Jelas pencarian windows hanya mengembalikan ID acak untuk tabel dalam Geodatabase. Saya ingin benar-benar mencari dataset di dalamnya.

Saya pikir ini akan membantu banyak orang, karena saya tahu saya bukan satu-satunya di luar sana yang menyimpan data spasial di Geodatabases, hanya untuk mengarsipkannya dengan ribuan dataset lain dan tidak ingin menyaringnya.

Saya ingin mencari Geodatabases ini di dalam ArcCatalog.

Cody Brown
sumber

Jawaban:

4

Ini jauh dari melakukan apa yang Anda minta, menggunakan beberapa python:

  1. Anda memerlukan daftar semua GeoDatabases yang ingin Anda cari. Jika ada banyak, gunakan fungsi berjalan python pada direktori yang dimaksud. Isolasikan untuk folder apa pun dengan .gdbdi dalamnya atau .mdb, tergantung pada database.

  2. Temukan semua dataset dalam GeoDatabase.

  3. Temukan semua layer dalam dataset.

  4. Telusuri hasil dari lapisan untuk apa yang Anda cari.

Berikut adalah contoh kode dari apa yang saya bicarakan:

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    
OtonabeeGIS
sumber
4
Tidak semua kelas fitur ada dalam dataset fitur (praktik terbaik akan menghasilkan sangat sedikit)
Vince
10

Cara lain untuk mencari kelas fitur, yang mungkin atau mungkin tidak ada dalam dataset adalah dengan menggunakan walkfungsi , seperti yang disebutkan sebelumnya. Ini hanya membutuhkan ruang kerja untuk mencari (yaitu folder yang berisi ratusan 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))

Daftar yang dihasilkan akan berisi jalur dan nama file dari semua kelas fitur yang cocok dengan kriteria pencarian Anda, yang dapat dicetak.

for fc in feature_classes:
     print fc

The walkFungsi juga dapat dimodifikasi untuk mencari jenis tertentu fitur (yaitu poligon, poin, raster, dll) dengan mengubah type=""dengan jenis fitur.

Barbarossa
sumber
1

Saya menemukan beberapa perangkat lunak beberapa waktu lalu yang mungkin berguna untuk mengindeks GeoDatabases dan data spasial lainnya:

https://www.voyagersearch.com/

Saya menguji coba untuk perusahaan kami dan meskipun kami tidak menggunakannya karena berbagai alasan ia memiliki banyak fungsi yang berguna. Singkatnya itu membuat indeks dataset spasial Anda yang kemudian dapat dicari dengan menggunakan lokasi - karena mencatat tingkat data, nama dan juga (saya pikir) atribut / isi data.

Ini adalah mereka indeks GeoDB: https://voyagersearch.zendesk.com/hc/en-us/articles/204187447-Indexing-Esri-Geodatabases-and-Shapefiles

Ini adalah halaman demo mereka yang akan melakukan pekerjaan yang lebih baik untuk menunjukkan kemampuannya daripada saya! http://voyagerdemo.com/web/navigo/#/home

MAJ742
sumber