Vous recherchez une géodatabase pour une classe d'entités ou une table par son nom?

10

Je recherche un moyen de rechercher dans les géodatabases une classe d'entités ou une table en utilisant son nom.

Existe-t-il une fonction comme celle-ci?

De toute évidence, la recherche Windows ne renvoie que les ID aléatoires des tables d'une géodatabase. Je voudrais réellement rechercher des ensembles de données en leur sein.

Je pense que cela aiderait beaucoup de gens, car je sais que je ne suis pas le seul à stocker des données spatiales dans des géodatabases, seulement à les archiver avec mille autres ensembles de données et à ne pas vouloir les parcourir.

Je souhaite rechercher ces géodatabases dans ArcCatalog.

Cody Brown
la source

Réponses:

4

C'est un long chemin pour faire ce que vous demandez, en utilisant du python:

  1. Vous avez besoin d'une liste de toutes les géodatabases que vous souhaitez rechercher. S'il y en a beaucoup, utilisez la fonction walk de python sur le répertoire en question. Isolez pour tous les dossiers contenant un .gdbou .mdb, selon la base de données.

  2. Recherchez tous les jeux de données dans la géodatabase.

  3. Recherchez toutes les couches dans l'ensemble de données.

  4. Recherchez les résultats des calques pour ce que vous recherchez.

Voici un exemple de code de ce dont je parle:

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
la source
4
Toutes les classes d'entités ne sont pas dans des ensembles de données d'entités (les meilleures pratiques en entraîneraient très peu)
Vince
10

Une autre façon de rechercher des classes d'entités, qui peuvent ou non se trouver dans un ensemble de données, consiste à utiliser la walkfonction , comme mentionné précédemment. Il ne nécessite qu'un espace de travail pour effectuer une recherche (c'est-à-dire un dossier contenant des centaines de 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))

La liste résultante contiendra les chemins et les noms de fichiers de toutes les classes d'entités qui correspondent à vos critères de recherche, qui peuvent être imprimés.

for fc in feature_classes:
     print fc

La walkfonction peut également être modifiée pour rechercher des types spécifiques d'entités (c'est-à-dire des polygones, des points, des rasters, etc.) en changeant type=""pour le type d'entité.

Barbarossa
la source
1

Il y a quelque temps, je suis tombé sur un logiciel qui peut être utile pour indexer des géodatabases et d'autres données spatiales:

https://www.voyagersearch.com/

Je l'ai testé pour notre entreprise et bien que nous n'ayons pas fini par l'utiliser pour diverses raisons, il possède de nombreuses fonctionnalités utiles. En résumé, il crée un index de vos jeux de données spatiales qui peut ensuite être recherché en utilisant l'emplacement - car il enregistre l'étendue des données, le nom et aussi (je pense) les attributs / contenus des données.

Ce sont eux indexent GeoDB: https://voyagersearch.zendesk.com/hc/en-us/articles/204187447-Indexing-Esri-Geodatabases-and-Shapefiles

Ceci est leur page de démonstration qui fera un meilleur travail de démonstration de ses capacités que moi! http://voyagerdemo.com/web/navigo/#/home

MAJ742
la source