Tính toán diện tích chiếm ưu thế trong đa giác bằng ArcGIS Desktop?


8

Đầu tiên, tôi có một shapefile bao gồm các ô vuông và mỗi lưới có một ID. Thứ hai, tôi có một shapefile bao gồm các vùng khác nhau (có ID).

ID lưới trong shapefile đầu tiên có thể chứa nhiều ID vùng từ shapefile thứ hai.

Tôi muốn biết ID khu vực thống trị bên trong lưới là gì và ghi lại trong bảng. Tôi chỉ muốn biết khu vực thống trị (về mặt khu vực) chứ không phải phần còn lại của các khu vực giao nhau với lưới đó. Cuối cùng, tôi muốn có một bảng 2 cột với tất cả các ID lưới trong cột đầu tiên và ID vùng thống trị tương ứng (hoặc vùng lớn nhất về diện tích) trong cột thứ hai.

Đây là một con số mẫu. Chỉ cần nhìn vào hình, tôi có thể biết rằng trong Grid ID 1, vùng / vùng chiếm ưu thế là Vùng ID 1. Trong Grid ID 2, vùng / vùng chiếm ưu thế là Vùng ID 2. Và trong Grid ID 3, vùng chiếm ưu thế / area là Vùng ID 3. Tôi muốn có một bảng có hai cột, với mỗi lưới chỉ hiển thị ID của vùng trội.

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

Câu trả lời:


8

ĐẦU VÀO:

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

Sau khi hòa tan các khu vực sử dụng sau WORKFLOW:

arcpy.Intersect_analysis("GRID #;ZONE #","D:/Scratch.gdb/intersect")
arcpy.Sort_management("intersect", "D:/Scratch.gdb/sorted","Shape_Area DESCENDING")
# DELETE MINORITIES USING GRID ID 
arcpy.DeleteIdentical_management("sorted", "ID")

ĐẦU RA HIỂN THỊ "NGẮN HẠN" VÀ GRID:

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

Chuyển ID vùng chiếm ưu thế sang lớp lưới từ "được sắp xếp", sử dụng nối theo thuộc tính, nếu cần.

Cập nhật quan trọng một năm sau: mỗi khu vực phải là một đa giác đơn, có khả năng đa bội. Nếu đây không phải là một trường hợp khu vực ban đầu lớp phải được giải thể bằng tên khu vực.


6

Ok tôi nghĩ rằng tôi làm theo câu hỏi. Tôi đã thử điều này với một bộ dữ liệu thử nghiệm. Tôi đang sử dụng cơ sở dữ liệu địa lý để tính diện tích (được khuyến nghị). Nếu bạn phải sử dụng một shapefile, hãy tính toán một trường có hình học cho shape_area trước khi bạn thực hiện bước 2. Tôi có một lớp đa giác có tên Poly và lưới fishnet có tên FNET. Poly có một trường (MTYPE) và các giá trị là 1 (maroon), 2 (xanh lá cây) hoặc 3 (tím) (màu từ ảnh chụp màn hình thứ 1).

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

Bước 1. Giao nhau 2 lớp. Giao lộ

Bây giờ, đầu ra từ bước đầu tiên đó cung cấp cho bạn các trường FID cho mỗi lớp (trong trường hợp của tôi, đó là FID_FNET và FID_Poly).

Ảnh chụp màn hình cho thấy cách FID cho mỗi được bảo toàn (325 là ô lưới và nó có một trong 1, 2 và 3 trong đó). Ảnh chụp màn hình cho thấy cách FID cho từng được bảo tồn

Bước 2. TÓM TẮT (xin lỗi, ảnh chụp màn hình trông giống như "Thống kê" nhưng sử dụng Tóm tắt.

Tóm tắt (hiển thị bảng)

Bước 2 (tiếp theo). Thực hiện Tóm tắt trên FID_FNET và thiết lập nó như trong ảnh chụp màn hình tiếp theo này để bạn nhận được tối đa trên trường Shape_Area ...

Các thông số để tóm tắt

Bước 3. Thực hiện phép nối bằng cách sử dụng đầu ra của phép toán giao nhau và bảng (nối bảng với giao điểm) và căn cứ phép nối trên shape_area từ đầu ra giao nhau và "Max_shape_area" từ bảng.

Các giá trị null có thể bị bỏ qua (chúng là giá trị KHÔNG tối đa) hoặc bị xóa (tốt hơn nữa). và kết quả sử dụng bảng đã tham gia là danh sách các bản ghi FID_FNET cũng có FID_POLY khớp với giá trị (MAX) lớn nhất cho mỗi ô lưới!

Ảnh chụp màn hình cuối cùng này cho thấy cách tôi thiết lập tham gia. THAM GIA


Cảm ơn bạn rất nhiều @jbeclill. Tôi sẽ thử nó trên tập dữ liệu của tôi và sẽ cho bạn biết sau nếu nó hoạt động.
GISnew

Tôi theo từng bước. Tôi có tập tin giao nhau với khoảng 34.000 hồ sơ. Sau bước tóm tắt, tôi nhận được một bảng với 30.000 hồ sơ. Khi tôi cố gắng tham gia cùng họ, nó chỉ tham gia dưới 100. Tôi bối rối về những gì đã xảy ra với phần còn lại. ArcMap có thể tham gia nhiều hồ sơ này không?
GISnew

Trên thực tế, các khu vực không phù hợp là "khu vực không chiếm ưu thế" còn sót lại, vì vậy bạn không cần phải lo lắng về chúng. Nếu không, chúng nằm ngoài vùng chồng lấn.
jbeclill

Thật đáng kinh ngạc. Tôi đã không tìm kiếm tối đa nhưng điều này vẫn giúp tôi rất nhiều. Tôi chỉ tự hỏi, Khu vực hình dạng trong bảng tóm tắt, đơn vị của nó là gì?
AndrewLebron

@AndrewLebron nó (theo thiết kế) luôn giống như các đơn vị ngang cho lớp tính năng, vì vậy hãy xem các thuộc tính của đầu vào.
jbeclill
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.