Đếm và rasterizing đa giác chồng chéo trong ArcGIS Desktop?


17

Làm thế nào để bạn lấy một lớp vectơ với các đa giác chồng chéo và biến nó thành một raster trong đó mỗi ô đếm số lượng đa giác chứa ô đó?

Chúng tôi đang xem xét các đa giác của các khu vực cháy từ năm 1976 đến 2000 và muốn xem có bao nhiêu đám cháy sẽ được chứa trong mỗi tế bào raster.

Câu trả lời:


22

Thực hiện việc này theo ba bước: chia đa giác thành các phần thành phần của chúng, đếm các phần trùng lặp và chuyển đổi thành raster. Điều này tránh được chi phí tính toán tiềm tàng rất lớn khi chuyển đổi riêng từng đa giác thành raster và kết hợp các raster đó.

  1. Union (bên trong Geoprocessing menu) chia các đa giác thành các phần của chúng.

    Thật không may, mỗi sự trùng lặp được nhân đôi trong đầu ra: nó có một bản sao giống hệt nhau cho mỗi đa giác ban đầu bao phủ nó. vì thế

  2. Dissolve(một lần nữa trong Geoprocessingmenu) sẽ hợp nhất các phần chồng chéo, miễn là bạn có thể tìm cách xác định duy nhất chúng. Đọc qua hộp thoại: đến cuối, bạn sẽ có tùy chọn để tính "thống kê". Chọn bất kỳ trường nào có thể đã xác định các đa giác ban đầu và yêu cầu đếm.

    Trong nhiều trường hợp, sự kết hợp giữa diện tích đa giác và chu vi sẽ xác định duy nhất các phần. Nếu không, bạn có thể thêm nhiều thuộc tính hình học trong các trường bổ sung, chẳng hạn như tọa độ của tâm, cho đến khi bạn tích lũy đủ thông tin để phân biệt mọi tính năng.

    Lớp kết quả có một tính năng cho mỗi chồng chéo đa giác và một số loại trường "đếm" đếm số lượng chồng lấp.

  3. Chuyển đổi nó thành raster, sử dụng trường "đếm" cho các thuộc tính.


Ví dụ, đây là một số đa giác chồng chéo và số nhận dạng của chúng với bảng thuộc tính được hiển thị:

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

Sau bước thứ hai, chúng ta có một bản ghi cho từng vùng chồng lấp cùng với số đếm có thể được sử dụng để tượng trưng cho số lượng chồng lấp:

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

Phần còn lại rất dễ dàng - và đó chỉ là một hoạt động rasterization duy nhất .


Phương pháp vectơ này cũng hoạt động rất tốt, ngoại trừ khi được áp dụng cho hàng trăm ngàn đa giác với nhiều phần trùng lặp trên máy tính có bộ nhớ hạn chế ...
ccn

@ccn Khi có nhiều đa giác hơn ArcGIS có thể xử lý, hãy chia tập dữ liệu thành các phần mà nó có thể xử lý. Đầu ra sẽ là một vài raster - nhưng không phải là hàng ngàn hoặc hàng triệu trong số chúng - mà sau đó đơn giản là tổng hợp. Một ưu điểm khác của việc sử dụng Unionlà với quy trình công việc gần như giống nhau, nó có thể giải quyết tình huống đa giác nằm trong nhiều bộ dữ liệu (thường là một thiết kế cơ sở dữ liệu xấu nhưng không may là phổ biến): một cách đơn giản là liên kết tất cả các bộ dữ liệu đầu vào cùng một lúc.
whuber

@ccn (Tiếp theo) điểm bạn đưa ra là: khi nào thì tốt hơn để raster đa giác và sử dụng các thao tác raster để hợp nhất chúng so với sử dụng các phép toán vectơ ( union) sau đó là rasterization? Các hoạt động của vectơ sẽ sa lầy khi các tính năng được số hóa với nhiều chi tiết hơn mức cần thiết, khiến chúng có quá nhiều đỉnh. Trong những trường hợp cực đoan này, cách tiếp cận raster có thể tốt hơn (mặc dù trước tiên đơn giản hóa các đa giác có thể là một lựa chọn ưu việt). Tuy nhiên, trong tất cả các tình huống khác, việc raster riêng từng đa giác là một sự lãng phí rất lớn thời gian của máy tính con người.
whuber

1
+1 cho một giải pháp dựa trên vector. Để đặt mọi thứ vào quan điểm ở đây, ghi dữ liệu chu vi không bao giờ là rất lớn. Ví dụ: toàn bộ bộ dữ liệu chu vi ghi MTBS (Hoa Kỳ bao gồm Alaska) cho năm 1984 - 2010 chứa ~ 19000 đa giác. Một cách tiếp cận dựa trên vector hoặc raster sẽ hoạt động tốt.
Aaron

@Aaron Cảm ơn bạn đã quan điểm. Để thực hiện hợp nhất Hoa Kỳ cùng một lúc ở bất kỳ độ phân giải hợp lý nào (ví dụ: 100m), bạn sẽ cần một raster gồm 50000 cột và 30000 hàng chứa 1.500.000.000.000.000 ô. Tạo ra 19.000 raster như vậy - thậm chí chiếm tỷ lệ nén tích hợp - và sau đó thực hiện 19.000 * 1500000000 = khoảng 30000 tỷ bổ sung - sẽ cần khá nhiều thời gian! Nếu thay vào đó, mỗi đa giác được sử dụng, giả sử, 100 đỉnh (rất chi tiết), liên kết bao gồm 1.900.000 đỉnh và là một hoạt động O (n log (n)); về nguyên tắc (nhưng không phải trong ArcGIS :-) chỉ mất chưa đến 1 giây.
whuber

1

Bài đăng sau đây có một câu hỏi tương tự mà bạn có thể tìm thấy một giải pháp liên quan: Tạo bề mặt raster của các lớp phủ từ các hình dạng đa giác vector? .

Đối với cách tiếp cận raster tính toán đơn giản và nhanh chóng này, bạn sẽ cần (1) tách các đa giác chồng chéo thành các lớp riêng biệt (có thể là theo năm cho đa giác lửa) bằng cách sử dụng Chọn theo thuộc tính trong ModelBuilder bằng công cụ lặp hoặc công cụ tập lệnh, (2) chuyển đổi từng lớp Đa giác cho Raster với phép gán ô MAXIMUM_COMBINED_AREA (đảm bảo cùng kích thước ô , raster snapphạm vi đó vẫn giống như toàn bộ tập hợp đa giác) - sử dụng giá trị trường không đổi (ví dụ: sử dụng trường năm hoặc hàng có tất cả 1 giây) để chuyển đổi (một lần nữa sử dụng ModelBuilder với tập lệnh iterator hoặc Python để tự động hóa) và sau đó (3) áp dụng công cụ Phân tích không gian sau đây: Thống kê di động - sử dụng VariETY stats_type nếu mỗi raster có một giá trị duy nhất như năm hoặc SUM nếu tất cả các giá trị ô raster là 1s - hãy chắc chắn kiểm tra để bỏ qua NoData.

Các raster trung gian (từ chuyển đổi trước) có thể bị xóa hoặc sẵn sàng để sử dụng trong các phân tích raster tiếp theo.


(Vui lòng xem nhận xét của tôi về câu trả lời của Aaron .)
whuber
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.