Забарвлення тисяч багатокутників, щоб кожен відрізнявся від своїх сусідів?


28

Я використовую ArcGIS 10, і у мене є шари блоків перепису населення 2010 року, групи блоків та тракти. У цих шарах тисячі багатокутників.

Я хочу розфарбувати їх так, щоб кожен відрізнявся від своїх сусідів, але все, що я можу зрозуміти, - як надати кожному виразний колір. Колір кожного багатокутника насправді не має значення; Я просто хочу легко відрізнити кожного від свого сусіда за кольором, а не за межею.

Або це щось, що ви бачите лише на карті початкової школи 50 Сполучених Штатів?


9
(+1) З технічної точки зору ArcGIS робить забезпечують різні кольори, тому що він може вибрати їх в довільному порядку серед (я вважаю) палітрою 2 ^ 24 і , отже , шанси двох сусідів отримувати точно такий же колір невисокі. Це говорить про те, що ви дійсно хочете виправити невелику кількість кольорів, що легко відрізняються, і призначити їх, щоб жодні сусідні багатокутники не набули однакового кольору. Існує алгоритм зробити це для п'яти і більше кольорів, коли всі багатокутники з'єднані і просто з'єднані. (Колектор має вбудовану процедуру для п’ятиколірного будь-якого шару багатокутника :-).)
whuber

6
Також у QGIS є плагін під назвою "топокольоровий колір", який забезпечує цю можливість. Можливо, ви зможете подивитися на їх код і створити щось самостійно, якщо ви не знайдете консервовану утиліту в ArcGIS.
RyanDalton

9
Я написав вищезгаданий плагін для топокольору! Я думаю, що це може боротися з тисячами багатокутників, щоб опрацювати всі суміжності. Нещодавно я також написав версію на R на всякий випадок, якщо хтось захоче розфарбувати карти в R таким чином. Я не зачіпаю ArcGIS!
Spacedman

2
До речі, ArcGIS має ефективні внутрішні процедури для обчислення суміжностей полігонів. Я пригадую, що я робив усі блоки в державі (близько півмільйона з них) приблизно за 30 хвилин: 15 для calcs, 15 для написання файлу суміжності. З новими машинами робота піде в 5-10 разів швидше. Таким чином, ви можете змусити ваш R-код пережовувати файл суміжності, створений ArcGIS, що здається оптимальним способом використання обох платформ для цієї проблеми.
whuber

2
«Досить чотирьох кольорів» (хтось повинен був це сказати).
barrycarter

Відповіді:




0

Я зашифрував інструмент ArcPy, який присвоює полігонам атрибут із наданого списку, використовуючи сусідню таблицю, щоб жодні сусіди не мали однакового кольору. Зазвичай вдається використовувати менше шести кольорів за допомогою простого евристичного розфарбовування графіка (або, якщо потрібно, він може призначити кольори випадковим чином, все-таки поважаючи околиці).

Панель інструментів разом з деякою документацією можна завантажити з http://geocite.ic.cz/coloring.zip .


дивіться також тут: gis.stackexchange.com/questions/54029/…
radouxju

0

Виконайте заповнення потоком на полігонах в Python, додавши встановлену кількість зміни кольору до рекурсивного виклику функції заливки, змінюючи колір у міру руху.


-2

ви можете застосувати класифікацію символіки для унікального ідентифікатора / поля GWID.


9
Це не гарантуватиме неповторне забарвлення на сусідніх полігонах

Це повинно бути, оскільки значення RGB може становити від 0 до 255 для кожного, тобто існує великий масив комбінацій для значень R, B і G. Таким чином, технічно у вас не буде однакового відтінку, якщо ви не маєте понад мільярд унікальних записів.
GISdork

4
Ця методика не гарантує, що два сусідніх многокутника мають різні кольори, щоб "легко відрізнити кожен [багатокутник] від його сусіда". Хоча комбінації RGB унікальні, вони можуть виглядати дуже схоже. Отже, якщо двом сусіднім багатокутникам присвоєно подібні значення, розрізнити їх буде непросто / можливо. Будь ласка, дивіться перший коментар Валера до оригінального питання.
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.