Tạo lớp từ công cụ Tính năng được chọn: Danh sách các tính năng được lưu trữ như thế nào?


12

Trong ArcGIS Desktop, có một công cụ gọi là Tạo lớp từ các tính năng được chọn . Sử dụng công cụ này, tôi có thể chuyển đổi lựa chọn thành một lớp trong ArcMap.

Theo suy đoán của tôi, có một "danh sách các tính năng" được nhúng trong lớp ở một nơi nào đó cô lập các tính năng sẽ hiển thị trên bản đồ.

Tôi đã nghĩ rằng "danh sách các tính năng" sẽ được lưu trữ trong một wheremệnh đề trong một truy vấn định nghĩa dưới dạng một danh sách objectids. Ví dụ : where objectid in(123,456,789,...). Tuy nhiên, đây không phải là trường hợp.

Nếu lớp không có WHEREtruy vấn mệnh đề hoặc định nghĩa, thì danh sách các tính năng được lưu trữ như thế nào?


2
Có một sự khác biệt lớn giữa mục menu và công cụ xử lý địa lý. Những gì bạn đang nói là trước đây. Bạn có thể sử dụng dữ liệu được lưu trữ trong fidset để tạo các lớp của bạn.
FelixIP

2
Tôi khá chắc chắn rằng không có mệnh đề WHERE được lưu trữ khi bạn tạo Lớp chọn và khi nó được tạo, bạn KHÔNG thể tìm ra lựa chọn ban đầu được sử dụng để tạo nó. Tôi hy vọng tôi đã được chứng minh là sai ở dạng câu trả lời vì tôi đã xử lý một lớp lựa chọn rất cũ gần đây và việc tìm ra lựa chọn ban đầu của các tính năng được sử dụng để tạo ra nó sẽ rất hữu ích.
Dan C

1
Fidset là tài sản của lớp. Nó là ; chuỗi riêng biệt để lưu trữ FID lựa chọn.
FelixIP

Tạo lớp từ các tính năng được chọn KHÔNG tạo lớp NĂNG ĐỘNG. Lớp kết quả không động chút nào. Nó dựa trên một FIDset. Nếu bạn thay đổi dữ liệu nguồn, FID sẽ thay đổi và lớp lựa chọn của bạn sẽ bị hỏng. Điều này không giống với lớp Truy vấn, lưu trữ mệnh đề
where

Câu trả lời:


14

Tạo lớp từ các tính năng được chọn KHÔNG tạo lớp NĂNG ĐỘNG . Lớp kết quả không động chút nào. Nó dựa trên một FIDset.

Nếu bạn thay đổi dữ liệu nguồn, FID sẽ thay đổi và lớp lựa chọn của bạn sẽ bị hỏng.

Không có mệnh đề where trong một lớp chọn. Nó dựa trên FIDset (FID được chọn khi bạn sử dụng 'Tạo lớp từ các tính năng được chọn').

Xin lưu ý rằng nếu bạn thêm hoặc xóa các bản ghi khỏi dữ liệu nguồn, FID sẽ thay đổi và lớp lựa chọn của bạn sẽ hiển thị các bản ghi không chính xác.

Bạn đang nhầm lẫn giữa lớp lựa chọn với lớp truy vấn, nơi lưu trữ mệnh đề where và là động.

EDIT: Danh sách các tính năng cho một lớp lựa chọn được lưu trữ trong bộ nhớ. Đó là một thực tế xấu khi sử dụng các lớp lựa chọn ngoài công việc tạm thời vì không có cách nào để phục hồi lựa chọn ban đầu một khi lớp lựa chọn bị phá vỡ.

Để tìm danh sách các tính năng trong lớp chọn, bạn có thể sử dụng nhiều phương thức khác nhau bao gồm SearchCoder để tạo danh sách ID.

Một cái gì đó như thế này:

OIDlist = []
with arcpy.da.SearchCursor(layer, 'OBJECTID') as scur:
    for row in scur:
        OIDlist.append(row[0])

Từ bình luận của crmackey :

Ngoài ra còn có một cách tích hợp với mô tả để có được FIDSet. Đây là một chuỗi, nhưng rất dễ để chuyển đổi thành một danh sách:

OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))

1
Ngoài ra còn có một cách tích hợp với mô tả để có được FIDSet. Đây là một chuỗi, nhưng rất dễ để chuyển đổi thành một danh sách: OIDlist = map(int, arcpy.Describe(layer).FIDSet.split(';'))
crmackey


11

Cách tốt nhất tôi đã hiểu làm thế nào Create Layer from Selected Featureslà tham chiếu này mà tôi đã tìm thấy Tạo một lớp tạm thời để chọn các tính năng

Tạo một lớp tạm thời cho phép bạn thực hiện mọi việc, chẳng hạn như thực hiện các lựa chọn, mà không ảnh hưởng đến nguồn dữ liệu gốc. Lớp này sẽ không xuất hiện trong nội dung ArcCatalog, vì nó được tạo trong bộ nhớ và chỉ đơn giản là tham chiếu dữ liệu được lưu trữ trên đĩa. Các lớp này có thể được sử dụng làm đầu vào cho các công cụ xử lý địa lý khác trong phiên làm việc của bạn. Khi bạn thoát khỏi ứng dụng, các lớp trong bộ nhớ sẽ bị xóa.

Công cụ Make Feature Layer nằm trong bộ công cụ Lớp và Bảng xem, trong hộp công cụ Công cụ quản lý dữ liệu. Nhấp chuột phải vào công cụ Make Feature Layer và nhấp vào Mở hoặc bấm đúp vào nó để mở công cụ.

Cơ chế có thể đọc vào không gian đĩa đó sẽ là cách truy cập vào "bộ kết quả"

Ngoài ra, như đã đề cập trước đây và Esri bao gồm nó Hoạt động với các tính năng được chọn ,

Trong ví dụ này, lớp được tạo từ các tính năng được chọn chỉ hữu ích dưới dạng tập dữ liệu làm việc tạm thời (ví dụ: để sử dụng làm đầu vào cho mô hình xử lý địa lý). Lớp mới tạo danh sách các FeatureID (FID) hoặc ObjectID (OID) của các tính năng được chọn và sẽ trở nên không hợp lệ khi nguồn dữ liệu gốc được cập nhật hoặc thay đổi .

Ngoài ra, ở đây có nhiều thảo luận hơn khi đọc chung, Sử dụng không gian làm việc trong bộ nhớ , liên quan đến in_memorykhông gian làm việc. Điều này chỉ dành cho thông tin bổ sung nếu bạn quan tâm.


2

Tôi đoán là, lớp từ Create Layer From Selected Featureskhông dựa trên WHEREmệnh đề hoặc điều kiện logic, bởi vì bộ lựa chọn có thể được tạo mà không liên quan đến logic.

Ví dụ: bạn có thể thêm / xóa thủ công bất kỳ tính năng nào khỏi bộ lựa chọn bằng cách sử dụng menu chính bằng cách kéo hộp, có thể từ một trong các Chọn thuộc tính / Vị trí trước đó.

Tôi đoán là bộ lựa chọn ( IFeatureSelection) chỉ là một bộ kết quả mở rộng (chứa các bản sao ID của lớp gốc), chứ không phải là các quy tắc xác định tập kết quả. Do đó, cảnh báo trong tài liệu được liên kết rằng ID có thể trở nên không hợp lệ nếu ID của lớp gốc thay đổi.

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.