ArcCatalogのフィールドフィルターを使用して、ArcSDEフィーチャクラスの多くのフィーチャデータセットを検索しますか?


11

最大30個のフィーチャデータセットと、最大100個のフィーチャクラスがフィーチャデータセット全体に分散しています。フィーチャデータセットの中から名前でフィーチャクラスを検索したいと思います。また、すべてのフィーチャクラスから、someDateからsomeOtherDateの「Date_Mod」を持つレコードをクエリしたいと思います。

これはすべて、SQL Server 2008上のArcGIS SDE 10.0にあります。

回答:


10

私については、このタスク(arcpy)にPythonスクリプトを選択することをお勧めします。

ここにいくつかのアイデアがあります:

  1. ListDatasetsを使用して、すべてのデータセットを取得します。
  2. すべてのフィーチャクラスを取得するには、ListFeatureClassesを使用します。
  3. データのクエリにはSearchCursorを使用します。
  4. Describe関数を見てください-それはいくつかのタスクにとっても非常に便利です。

更新:

投稿後に見つけた:@Aragonは、ステップ3の実行方法を詳細に説明しています。


リストされた4つのアイテムと同様の出力を行うPythonスクリプトを作成したので、これが実行可能であることを保証できます。まず、出力をどのようにするかを正確に決定します。スクリプトで、最初に出力テーブルを作成します。次に、ワークスペースレベルで開始し、一連の説明とリストを実行して、途中でデータを収集します。ListFieldsを追加し、日付列から最小値と最大値を収集する必要があります。正確なアルゴリズムは、出力の形式と入力フィーチャデータセットの場所に依存します(それらはすべて1つの共通のワークスペースに由来しますか?)。
RHB

6

ここでSearchCursorメソッドを確認できます。唯一のことは、の代わりにSQL式を作成することですwhere_clause。クエリ式は、ArcGISの標準SQL式とも同じです。[属性で選択]ダイアログボックスに似ています。次のコードを見て、独自のツールを作成できます

概要

SearchCursor関数は、フィーチャクラスまたはテーブルに読み取り専用カーソルを確立します。SearchCursorを使用して、行オブジェクトを反復処理し、フィールド値を抽出できます。オプションで、検索をwhere句またはフィールドで制限し、オプションで並べ替えることができます。

構文SearchCursor(データセット、{where_clause}、{spatial_reference}、{fields}、{sort_fields})

例:

import arcpy

# Open a searchcursor 
#  Input: C:/Data/Counties.shp 
#  FieldList: NAME; STATE_NAME; POP2000 
#  SortFields: STATE_NAME A; POP2000 D 
# 
rows = arcpy.SearchCursor("C:/Data/Counties.shp", "'POP2000' > 5000", "", "NAME; 
STATE_NAME; POP2000", "STATE_NAME A; POP2000 D") 
currentState = "" 

# Iterate through the rows in the cursor 
# 
for row in rows: 
    if currentState != row.STATE_NAME: 
        currentState = row.STATE_NAME 

    # Print out the state name, county, and population 
    # 
    print "State: %s, County: %s, population: %i" % \
            (row.STATE_NAME, row.NAME, row.POP2000) 

私はそれがあなたを助けることを願っています....


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.