Пошук у базі даних геоданих за класом ознак чи таблицею за назвою?


10

Я шукаю спосіб пошуку в базах даних геоданих за класом чи таблицею, використовуючи його ім'я.

Чи є така функція, як ця?

Очевидно, що пошук у Windows повертає лише випадкові ідентифікатори для таблиць у базі даних геоданих. Я хотів би фактично шукати набори даних у них.

Я думаю, що це допоможе багатьом людям, тому що я знаю, що я не єдиний, хто зберігає просторові дані в базах даних геоданих, лише архівує їх з тисячею інших наборів даних і не хоче їх просіювати.

Я хотів би пошукати ці бази геоданих в ArcCatalog.


Відповіді:


4

Це довгий спосіб робити те, що ви запитуєте, використовуючи деякий python:

  1. Вам потрібен список усіх баз даних GeoData, які ви хочете шукати. Якщо їх багато, використовуйте функцію прогулянки python у відповідному каталозі. Виділіть для будь-яких папок, що містять .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
Не всі класи функцій є у наборах даних про функції (найкраща практика призведе до дуже небагатьох)
Vince

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

Нещодавно я натрапив на програмне забезпечення, яке може бути корисним для індексації баз геоданих та інших просторових даних:

https://www.voyagersearch.com/

Я випробував це для нашої компанії, і хоча ми з різних причин не закінчили його використовувати, він має безліч корисних функцій. Підсумовуючи це, він створює індекс ваших наборів просторових даних, який потім можна шукати, використовуючи розташування - оскільки він записує обсяг даних, ім'я, а також (я думаю) атрибути / вміст даних.

Це вони індексують GeoDB: https://voyagersearch.zendesk.com/hc/en-us/articles/204187447-Indexing-Esri-Geodatabases-and-Shapefiles

Це їх демонстраційна сторінка, яка зробить кращу роботу, демонструючи свої можливості, ніж я! http://voyagerdemo.com/web/navigo/#/home

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.