उसके नाम से फ़ीचर क्लास या टेबल के लिए जियोडेटाबेस की खोज?


10

मैं एक फ़ीचर क्लास या टेबल के लिए उसके नाम का उपयोग करके जियोडैट डेटाबेस को खोजने का तरीका खोज रहा हूँ।

क्या इस तरह का कोई कार्य उपलब्ध है?

स्पष्ट रूप से विंडोज़ खोज केवल यादृच्छिक आईडी के लिए एक जियोडैटेबेस के भीतर तालिकाओं के लिए रिटर्न करती है। मैं वास्तव में उनके भीतर डेटासेट की खोज करना चाहता हूं।

मुझे लगता है कि इससे बहुत से लोगों को मदद मिलेगी, क्योंकि मुझे पता है कि मैं केवल एक ही व्यक्ति नहीं हूं, जो जियोडैट डेटाबेस में स्थानिक डेटा संग्रहीत करता है, केवल इसे एक हजार अन्य डेटासेट के साथ संग्रहित करना चाहता हूं और इसके माध्यम से झारना नहीं चाहता।

मैं इन जियोडैट डेटाबेस को आर्ककॉस्टिक्स के भीतर खोजना चाहता हूं।


जवाबों:


4

यह एक लंबा रास्ता है जो आप पूछ रहे हैं, कुछ अजगर का उपयोग करके:

  1. आपको उन सभी GeoDat डेटाबेस की एक सूची की आवश्यकता है जिन्हें आप खोजना चाहते हैं। यदि बहुत सारे हैं, तो प्रश्न में निर्देशिका पर अजगर के चलने के कार्य का उपयोग करें। डेटाबेस के आधार पर, .gdbउनमें से किसी भी फ़ोल्डर के लिए अलग या .mdb

  2. जियोडाटाबेस के भीतर सभी डेटासेट खोजें।

  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फ़ंक्शन का उपयोग कर सकता है , जैसा कि पहले उल्लेख किया गया है। इसमें खोज करने के लिए केवल एक कार्यक्षेत्र की आवश्यकता होती है (यानी सैकड़ों GDBs वाला फ़ोल्डर)।

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समारोह भी (यानी बहुभुज, बिंदु, rasters, आदि) को बदलने के द्वारा सुविधाओं के विशिष्ट प्रकार के लिए खोज करने के संशोधित किया जा सकता type=""सुविधा प्रकार के लिए।


1

मैं कुछ समय पहले कुछ सॉफ्टवेयर में आया था जो जियोडेटाट और अन्य स्थानिक डेटा को अनुक्रमित करने के लिए उपयोग किया जा सकता है:

https://www.voyagersearch.com/

मैंने इसे अपनी कंपनी के लिए ट्रायल किया और यद्यपि हमने इसे विभिन्न कारणों से उपयोग नहीं किया, क्योंकि इसमें उपयोगी कार्यक्षमता का भार है। सारांश में यह आपके स्थानिक डेटासेट का एक सूचकांक बनाता है जिसे तब स्थान का उपयोग करके खोजा जा सकता है - क्योंकि यह डेटा की सीमा, नाम और भी (मुझे लगता है) डेटा की विशेषताओं / सामग्री को रिकॉर्ड करता है।

यह वे इंडेक्स जियोबीडी हैं: https://voyagersearch.zendesk.com/hc/en-us/articles/204187447-Indexing-Esri-Geodat डेटाबेस-and-Shapefiles

यह उनका डेमो पेज है जो यह प्रदर्शित करने का एक बेहतर काम करेगा कि यह मुझ से अधिक क्षमता है! http://voyagerdemo.com/web/navigo/#/home

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.