Arcmap Chọn theo thuộc tính với Python


9

Tôi muốn sau đây để chọn (tô sáng) lớp "dự án" giao với lưới, sau đó kéo một bản ghi từ "Lưới" đã chọn. Tôi không cần phải lưu lớp.

Lưu ý: Chạy tập lệnh từ bên trong ArcMap trong cửa sổ Python Console.

import arcpy

# Make a layer from the feature class
arcpy.MakeFeatureLayer_management("project","project_lyr")

# Then add a selection to the layer based on location to features in another feature class 
arcpy.SelectLayerByLocation_management("project_lyr","INTERSECT","Grid")

Mã này chạy và không có lỗi được đưa ra, nhưng nó không chọn (tô sáng) bất kỳ tính năng nào. Bất cứ ý tưởng tại sao? Cũng chạy rất chậm.

Các kết quả

Về cơ bản tôi đang cố gắng làm điều này:

nhập mô tả hình ảnh ở đây

Điều này chạy rất nhanh gần như ngay lập tức, nhưng tôi muốn làm tương tự bằng python. Tôi chỉ cần một giá trị từ bảng tính năng đã chọn, tôi không cần một bản sao của lớp.

Một phần của giải pháp có thể sử dụng không gian làm việc trong bộ nhớ đó là

Ghi dữ liệu vào không gian làm việc trong bộ nhớ thường nhanh hơn đáng kể so với ghi vào các định dạng khác ...

Chỉ không chắc chắn làm thế nào để thực hiện không gian làm việc trong bộ nhớ


Bạn có đang chạy tập lệnh này từ bên trong ArcMap (tức là trong bảng điều khiển Python) không? Hoặc từ bên ngoài ArcMap (tức là trong IDLE hoặc trình soạn thảo Python khác)? Cách duy nhất ArcMap sẽ "chọn (tô sáng) bất kỳ tính năng nào" là từ trong ArcMap. Tôi nghi ngờ rằng bạn đang chạy tập lệnh từ bên ngoài ArcMap, vì import arcpylệnh sẽ mất một lúc để chạy.
dmahr

Tôi đang chạy tập lệnh từ bên trong ArcMap trong cửa sổ Python Console.
Tristan Chuyển tiếp

Nếu bạn đang chạy nó từ bên trong ArcMap, bạn không cần arcpy.MakeFeatureLayer()dòng này, vì projectđã là một lớp. Cứ làm đi arcpy.SelectLayerByLocation_management("project","INTERSECT","Grid").
dmahr

định dạng câu hỏi tuyệt vời!
Brad Nesom

Cảm ơn @dmahr, vẫn chạy chậm hơn so với Chọn theo thuộc tính tích hợp nhưng hoạt động.
Tristan Chuyển tiếp

Câu trả lời:


2

Câu hỏi hay!

Dmahr đã đúng, sẽ nhanh hơn khi chỉ cần chọn lớp thay vì tạo lớp tính năng. Tôi cũng sẽ thêm phần còn lại của các biến, mặc dù chúng là tùy chọn.

arcpy.SelectLayerByLocation_management ("project_lyr", "INTERSECT", "Grid", "#", "NEW_SELECTION")

Một điều nữa tôi tìm thấy là việc chạy mọi thứ trong cửa sổ python của ArcMap luôn chậm hơn. Tôi thấy rằng nếu bạn viết mã vào một tệp .py, hãy thêm nó dưới dạng tập lệnh vào hộp công cụ và sau đó chạy nó, quá trình xử lý sẽ diễn ra nhanh hơn.

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.