กำลังค้นหาชุดข้อมูลคุณลักษณะมากมายสำหรับคลาสคุณลักษณะ ArcSDE โดยใช้ฟิลเตอร์ฟิลด์ใน ArcCatalog?


11

ฉันมีชุดข้อมูลคุณสมบัติ ~ 30 ชุดและมีคุณลักษณะชั้นเรียน ~ 100 ชุดกระจายอยู่ทั่วชุดข้อมูลคุณสมบัติ ฉันต้องการค้นหาคลาสคุณลักษณะตามชื่อในชุดข้อมูลคุณสมบัติ นอกจากนี้ฉันต้องการสอบถามคุณสมบัติทั้งหมดที่มีระเบียนที่มี "Date_Mod" จาก someDate ไปยัง someOtherDate

ทั้งหมดนี้อยู่ใน ArcGIS SDE 10.0 บน sql server 2008

คำตอบ:


10

สำหรับฉันฉันขอแนะนำให้เลือก python scripting สำหรับงานนี้ (arcpy)

นี่คือแนวคิดบางส่วน:

  1. ใช้ListDatasetsเพื่อรับชุดข้อมูลทั้งหมด
  2. ใช้ListFeatureClassesเพื่อรับคุณลักษณะทั้งหมด
  3. ใช้SearchCursorเพื่อสอบถามข้อมูล
  4. ลองดูฟังก์ชั่นDescribeซึ่งมันมีประโยชน์มากสำหรับงานบางอย่าง

UPDATE:

พบหลังจากโพสต์: @Aragon ได้อธิบายรายละเอียดวิธีการปฏิบัติตามขั้นตอนที่ 3


ฉันสร้างสคริปต์หลามแสดงสิ่งที่คล้ายกับรายการ 4 รายการดังนั้นฉันสามารถรับรองความจริงที่ว่าสิ่งนี้ทำได้ ขั้นแรกให้ตัดสินใจว่าสิ่งที่คุณต้องการให้ผลลัพธ์ของคุณคืออะไร ในสคริปต์ของคุณสร้างตารางผลลัพธ์ก่อน จากนั้นคุณเริ่มที่ระดับพื้นที่ทำงานและดำเนินการชุดของการอธิบายและรายการการรวบรวมข้อมูลของคุณไปพร้อมกัน คุณจะต้องเพิ่ม ListFields และรวบรวมค่า min และ max จากคอลัมน์วันที่ อัลกอริทึมที่แน่นอนของคุณจะขึ้นอยู่กับรูปแบบของเอาต์พุตและตำแหน่งของชุดข้อมูลคุณลักษณะการป้อนข้อมูลของคุณ
RHB

6

คุณสามารถตรวจสอบSearchCursorวิธีการที่นี่ เพียงสิ่งเดียวคือการสร้างการแสดงออก SQL where_clauseแทน นิพจน์เคียวรีเหมือนกับนิพจน์ SQL มาตรฐานใน ArcGIS เช่นกัน มันคล้ายกับกล่องโต้ตอบเลือกตามคุณสมบัติ คุณสามารถเขียนเครื่องมือของคุณเองโดยดูที่รหัสต่อไปนี้

สรุป

ฟังก์ชัน SearchCursor สร้างเคอร์เซอร์แบบอ่านอย่างเดียวบนคลาสหรือตารางคุณลักษณะ SearchCursor สามารถใช้เพื่อวนซ้ำวัตถุแถวและแยกค่าฟิลด์ การค้นหาสามารถเลือกที่จะถูก จำกัด โดยส่วนคำสั่งหรือตามที่และเลือกเรียง

Syntax SearchCursor (ชุดข้อมูล {where_clause}, {spatial_reference}, {field}, {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.