การตั้งค่าแบบสอบถามความหมายในชั้น ArcPy จาก shapefile?


11

ฉันพยายามกำหนดตัวเลือกเพื่อตั้งค่าคิวรีเลเยอร์การกำหนดโดยใช้ ArcPy

ฉันรู้ว่ามันเป็นไปได้เมื่อใช้ arcpy.mapping.ListLayers ()

อย่างไรก็ตามในสถานการณ์นี้ฉันกำลังโหลดในรูปร่างและใช้ arcpy.MakeFeatureLayer_management () ใน ArcPy

ฉันต้องการตั้งค่าคิวรีการสืบค้นบนเลเยอร์ที่ฉันสร้างจากการใช้ตัวประมวลผลทางภูมิศาสตร์นี้

เป็นไปได้ไหม

คำตอบ:


15

โค้ดด้านล่างจะสร้างจากไฟล์เลเยอร์ไฟล์เลเยอร์ชื่อ test_A.lyr ซึ่งมีคำจำกัดความของคำว่า "testField" = 'A' ที่บันทึกไว้

import arcpy

arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr")
lyr = arcpy.mapping.Layer("test_lyr")
lyr.name = "test"
lyr.definitionQuery = '"testField" = ' + "'A'"
lyr.saveACopy(r"C:\temp\test_A.lyr")

del lyr

หากจำเป็นคุณสามารถเพิ่มไฟล์เลเยอร์นี้หรือวัตถุเลเยอร์ (lyr) จากก่อนหน้านี้จะถูกบันทึกเป็นไฟล์เลเยอร์เข้าสู่แผนที่ของคุณผ่าน arcpy.mapping.AddLayer

หากต้องการดูว่า Where_clause บน MakeFeatureLayer ได้รับการส่งผ่านเป็นแบบสอบถามแบบ จำกัด ซึ่งฉันคิดว่าเป็นพฤติกรรมที่ไม่มีเอกสารฉันได้ทำการทดสอบครั้งที่สองด้านล่างเพื่อตรวจสอบคำตอบของ @John และเขาค่อนข้างถูกต้อง

arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr2",'"testField" = ' + "'A'")
lyr2 = arcpy.mapping.Layer("test_lyr2")
lyr2.name = "test2"
lyr2.saveACopy(r"C:\temp\test_2.lyr")

del lyr2

การอัปเดตสำหรับ ArcGIS Pro และห้องสมุด , arcpy.mapping.layer()ได้ถูกแทนที่ด้วยarcpy.mp.LayerFile()
ADIN

5

ใช่มันควรจะเป็นไปได้สำหรับคุณแน่นอนว่าเป็นสิ่งที่พารามิเตอร์ "where_clause" เป็นตัวเลือก - ดูเอกสารประกอบสำหรับรายละเอียดและตัวอย่าง แต่โดยทั่วไปคุณเพียงแค่ต้องรวมแบบสอบถามคำจำกัดความเป็นพารามิเตอร์ where_clause และควรใช้งานได้ สิ่งเดียวที่ควรทราบหากคุณใช้เลเยอร์ที่ไม่มีฟิลด์ ObjectID / FID นั้น ArcGIS มีปัญหาในการใช้งานนิพจน์ SQL กับมัน แต่เลเยอร์ ArcGIS ปกติจะเกิดขึ้น


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.