Đặt định nghĩa Truy vấn trên lớp ArcPy từ shapefile?


11

Tôi đang cố gắng xác định các tùy chọn để đặt truy vấn định nghĩa lớp bằng ArcPy.

Tôi biết rằng có thể khi sử dụng arcpy.micking.ListLayers ().

Tuy nhiên, trong kịch bản này, tôi đang tải trong shapefiles và sử dụng arcpy.MakeFeatureLayer_man Quản lý () trong ArcPy.

Tôi muốn đặt một truy vấn định nghĩa trên lớp mà tôi tạo từ việc sử dụng bộ xử lý địa lý này.

Điều này có thể không?

Câu trả lời:


15

Mã dưới đây sẽ tạo, từ một shapefile, một tệp lớp có tên test_A.lyr có Truy vấn Định nghĩa của "testField" = 'A' được lưu vào nó.

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

Nếu được yêu cầu, bạn cũng có thể thêm tệp lớp này hoặc đối tượng Lớp (lyr) từ trước khi nó được lưu dưới dạng tệp lớp, vào bản đồ của bạn thông qua arcpy.micking.AddLayer.

Để xem liệu một địa chỉ trên MakeFeatureLayer có được chuyển qua dưới dạng Truy vấn Định nghĩa hay không, tôi nghĩ đó là hành vi không có giấy tờ, tôi đã thực hiện một thử nghiệm thứ hai bên dưới để xác minh Câu trả lời của @John và anh ta hoàn toàn chính xác.

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

Để cập nhật cho ArcGIS Pro và thư viện của nó , arcpy.mapping.layer()đã được thay thế bằngarcpy.mp.LayerFile()
adin

5

Có, điều này chắc chắn là có thể đối với bạn vì đó là tham số "where_clause" tùy chọn dành cho - xem tài liệu của nó để biết chi tiết và ví dụ, nhưng về cơ bản bạn chỉ cần bao gồm truy vấn định nghĩa là param_clause param và nó sẽ hoạt động. Điều duy nhất cần lưu ý, nếu bạn đang sử dụng một lớp không có trường ObjectID / FID, ArcGIS có vấn đề khi chạy các biểu thức SQL chống lại nó, nhưng bất kỳ lớp ArcGIS thông thường nào cũng sẽ.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.