Tô màu hàng ngàn đa giác để mỗi khác biệt với hàng xóm của nó?


28

Tôi đang sử dụng ArcGIS 10 và tôi có các lớp của khối Điều tra dân số năm 2010, các nhóm khối và vùng. Có hàng ngàn đa giác trong các lớp này.

Tôi muốn tô màu chúng sao cho mỗi màu khác biệt với hàng xóm của nó, nhưng tất cả những gì tôi có thể tìm ra là làm thế nào để tạo cho mỗi màu một màu riêng biệt. Màu sắc của mỗi đa giác không thực sự quan trọng; Tôi chỉ muốn dễ dàng phân biệt từng người với hàng xóm của mình bằng màu sắc, hơn là với một đường viền.

Hay đó là thứ bạn chỉ thấy trong bản đồ trường tiểu học của 50 Hoa Kỳ?


9
(+1) Về mặt kỹ thuật, ArcGIS không cung cấp màu sắc riêng biệt, bởi vì nó có thể chọn chúng ngẫu nhiên trong số (tôi tin) một bảng màu 2 ^ 24 và do đó, khả năng hai người hàng xóm có cùng màu chính xác là thấp. Điều này cho thấy bạn thực sự muốn sửa một số lượng nhỏ các màu dễ phân biệt và gán chúng để không có đa giác lân cận nào có cùng màu. Có một thuật toán để thực hiện điều này cho năm màu trở lên khi tất cả các đa giác được kết nối và kết nối đơn giản. (Manifold có quy trình tích hợp để tô màu bất kỳ lớp đa giác nào :-).)
whuber

6
Ngoài ra còn có một plugin trong QGIS gọi là "topatioour" cung cấp khả năng này. Bạn có thể xem mã của họ và tự xây dựng một cái gì đó nếu bạn không thể tìm thấy tiện ích đóng hộp trong ArcGIS.
RyanDalton

9
Tôi đã viết các plugin topatioour đã nói ở trên! Tôi nghĩ rằng nó có thể đấu tranh với hàng ngàn đa giác, để tìm ra tất cả các phần phụ. Gần đây tôi cũng đã viết một phiên bản bằng R trong trường hợp bất kỳ ai cũng muốn tô màu bản đồ theo R theo cách đó. Tôi sẽ không chạm vào ArcGIS!
Spainedman

2
BTW, ArcGIS hiện có các quy trình nội bộ hiệu quả để tính toán các điều chỉnh đa giác. Tôi nhớ lại việc thực hiện tất cả các khối trong một trạng thái (khoảng nửa triệu trong số chúng) trong khoảng 30 phút: 15 cho calcs, 15 để viết tệp kề. Với các máy mới hơn, công việc sẽ nhanh hơn 5-10 lần. Vì vậy, bạn có thể yêu cầu mã R của mình nhai một tệp kề, do ArcGIS tạo ra, nghe có vẻ là một cách tối ưu để sử dụng cả hai nền tảng cho vấn đề này.
whuber

2
"Bốn màu đủ" (ai đó phải nói).
barrycarter

Câu trả lời:


1

Bạn đang tìm kiếm một công cụ có thể đạt được định lý 4 màu

Tôi sử dụng FME cho mục đích đó, nhưng tập lệnh như vậy cũng tồn tại trong arcPy.



0

Tôi đã mã hóa một công cụ ArcPy gán một thuộc tính từ danh sách được cung cấp cho các đa giác bằng cách sử dụng bảng lân cận để không có hàng xóm chia sẻ cùng màu. Nó thường quản lý để sử dụng ít hơn sáu màu bằng cách sử dụng biểu đồ tô màu đơn giản (hoặc, nếu cần, nó có thể gán màu ngẫu nhiên, vẫn tôn trọng vùng lân cận).

Hộp công cụ cùng với một số tài liệu có thể được tải xuống từ http://geocite.ic.cz/coloring.zip .



0

Thực hiện Lấp đầy trên các đa giác trong Python thêm một lượng thay đổi màu đã đặt vào lệnh gọi đệ quy cho hàm lấp đầy lũ, thay đổi màu khi bạn đi.


-2

bạn có thể áp dụng phân loại mã vạch trên trường định danh / GWID duy nhất.


9
Điều này sẽ không đảm bảo màu sắc độc đáo trên các đa giác lân cận

Nên vì giá trị RGB có thể nằm trong khoảng từ 0 đến 255 cho mỗi giá trị, có nghĩa là có rất nhiều kết hợp cho các giá trị R, B và G. về mặt kỹ thuật, bạn sẽ không có cùng một màu sắc, trừ khi bạn có hơn một tỷ hồ sơ duy nhất.
GISdork

4
Kỹ thuật này sẽ không đảm bảo rằng hai đa giác liền kề có màu sắc không giống nhau để "dễ dàng phân biệt từng [đa giác] với hàng xóm của nó". Mặc dù các kết hợp RGB là duy nhất nhưng chúng có thể trông rất giống nhau. Vì vậy, nếu hai đa giác lân cận được gán các giá trị tương tự nhau, sẽ không dễ dàng / có thể phân biệt chúng. Xin vui lòng xem bình luận đầu tiên của whuber về câu hỏi ban đầu.
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.