Tìm kiếm Cơ sở dữ liệu địa lý cho Lớp tính năng hoặc Bảng theo tên của nó?


10

Tôi đang tìm cách tìm kiếm Cơ sở dữ liệu địa lý cho Lớp tính năng hoặc Bảng bằng cách sử dụng tên của nó.

Có bất kỳ chức năng như thế này có sẵn?

Rõ ràng cửa sổ tìm kiếm chỉ trả về ID ngẫu nhiên cho các bảng trong Cơ sở dữ liệu địa lý. Tôi thực sự muốn tìm kiếm các bộ dữ liệu trong đó.

Tôi nghĩ rằng điều này sẽ giúp được rất nhiều người, vì tôi biết tôi không phải là người duy nhất lưu trữ dữ liệu không gian trong Cơ sở dữ liệu địa lý, chỉ lưu trữ nó với hàng ngàn bộ dữ liệu khác và không muốn lọc qua nó.

Tôi muốn tìm kiếm các cơ sở dữ liệu địa lý này trong ArcCatalog.


Câu trả lời:


4

Đây là một cách dài để làm những gì bạn yêu cầu, sử dụng một số python:

  1. Bạn cần một danh sách tất cả các cơ sở dữ liệu GeoDat mà bạn muốn tìm kiếm. Nếu có nhiều, sử dụng chức năng đi bộ của python trên thư mục được đề cập. Cô lập cho bất kỳ thư mục có .gdbtrong đó hoặc .mdb, tùy thuộc vào cơ sở dữ liệu.

  2. Tìm tất cả các bộ dữ liệu trong GeoDatabase.

  3. Tìm tất cả các lớp trong tập dữ liệu.

  4. Kết quả tìm kiếm từ các lớp cho những gì bạn đang tìm kiếm.

Đây là một mẫu mã về những gì tôi đang nói về:

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
Không phải tất cả các lớp tính năng đều nằm trong bộ dữ liệu tính năng (thực tiễn tốt nhất sẽ dẫn đến rất ít)
Vince

10

Một cách khác để tìm kiếm các lớp đối tượng, có thể có hoặc không có trong tập dữ liệu là sử dụng walkhàm , như đã đề cập trước đó. Nó chỉ yêu cầu một không gian làm việc để tìm kiếm (tức là một thư mục chứa hàng trăm 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))

Danh sách kết quả sẽ chứa các đường dẫn và tên tệp của tất cả các lớp đối tượng phù hợp với tiêu chí tìm kiếm của bạn, có thể được in.

for fc in feature_classes:
     print fc

Các walkchức năng cũng có thể được sửa đổi để tìm kiếm các loại cụ thể các tính năng (tức là đa giác, điểm, rasters, vv) bằng cách thay đổi type=""các loại tính năng.


1

Tôi đã tình cờ thấy một số phần mềm có thể được sử dụng để lập chỉ mục Cơ sở dữ liệu GeoDat và dữ liệu không gian khác:

https://www.voyagerearch.com/

Tôi đã dùng thử nó cho công ty của chúng tôi và mặc dù chúng tôi đã không sử dụng nó vì nhiều lý do khác nhau, nó có vô số chức năng hữu ích. Tóm lại, nó tạo ra một chỉ mục các bộ dữ liệu không gian của bạn, sau đó có thể được tìm kiếm bằng cách sử dụng vị trí - vì nó ghi lại phạm vi của dữ liệu, tên và cả (tôi nghĩ) các thuộc tính / nội dung của dữ liệu.

Đây là chỉ mục của GeoDB: https://voyagerearch.zendesk.com/hc/en-us/articles/204187447-Indexing-Esri-Geodatabase-and-Shapefiles

Đây là trang demo của họ sẽ thể hiện tốt hơn khả năng của nó so với tôi! http://voyagerdemo.com/web/navigo/#/home

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.