使用ArcCatalog中的字段过滤器在许多要素数据集中搜索ArcSDE要素类?


11

我有约30个要素数据集和约100个要素类分布在整个要素数据集中。我想在要素数据集中按名称搜索要素类。另外,我想从所有要素类中查询从someDate到someOtherDate具有“ Date_Mod”的记录。

这一切都在SQL Server 2008上的ArcGIS SDE 10.0中完成。

Answers:


10

对于我来说,我建议为该任务(arcpy)选择python脚本。

这里有一些想法:

  1. 使用ListDatasets获取所有数据集。
  2. 使用ListFeatureClasses获取所有要素类。
  3. 使用SearchCursor查询数据。
  4. 看一下Describe函数-它对某些任务也非常有用。

更新:

发布后发现:@Aragon详细描述了如何执行步骤3。


我创建了一个python脚本,输出的内容与列出的4个项目相似,因此我可以保证这是可行的。首先,准确确定您想要的输出是什么。在您的脚本中,首先创建输出表。然后,从工作空间级别开始,进行一系列描述和列表,并一路收集数据。您需要添加ListFields并从日期列中收集最小值和最大值。您的确切算法将取决于您输出的格式和输入要素数据集的位置(它们都起源于一个公共工作空间吗?)。
RHB

6

您可以在此处查看SearchCursor方法。唯一的一件事就是构建一个SQL表达式而不是。查询表达式也与ArcGIS中的标准SQL表达式相同。它类似于“按属性选择”对话框。您可以通过查看以下代码来编写自己的工具where_clause

摘要

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) 

我希望它能对您有所帮助。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.