为数千个多边形着色,以便每个多边形都与相邻多边形不同?


28

我正在使用ArcGIS 10,并且具有2010年人口普查区块,区块组和区域的图层。这些图层中有数千个多边形。

我想给它们上色,以使它们与邻居不同,但是我能弄清楚的是如何给每种颜色赋予独特的颜色。每个多边形的颜色并不重要。我只想通过颜色轻松地将每个对象与相邻对象区别开,而不是使用边框。

还是只在美国50所小学的地图上看到的东西?


9
(+1)从技术上讲,ArcGIS 确实提供了不同的颜色,因为它可以在2 ^ 24的调色板中随机选择它们,因此两个邻居获得完全相同的颜色的可能性很小。这表明您确实要修复少量易于区分的颜色并进行分配,以使相邻的多边形不会获得相同的颜色。当所有多边形都已连接且仅已连接时,有一种算法可以对五种或更多颜色执行此操作。(Manifold有一个内置程序可对任何多边形图层进行五种颜色着色:
whuber

6
QGIS中还有一个名为“ topocolour”的插件可以提供此功能。如果您无法在ArcGIS中找到固定的实用程序,则可以查看他们的代码并自行构建内容。
RyanDalton 2012年

9
我写了前面提到的topocolour插件!我认为,要解决所有邻接关系,可能要与成千上万的多边形作斗争。我最近还用R编写了一个版本,以防万一有人想用R用这种方式为地图着色。不过我不会碰ArcGIS!
Spacedman 2012年

2
顺便说一句,ArcGIS现在具有用于计算多边形邻接关系的高效内部程序。我记得在大约30分钟内完成一个状态中的所有块(其中约有一半):计算15次,写邻接文件15次。使用更新的机器,工作速度将提高5-10倍。因此,您可以将R代码放在由ArcGIS生成的邻接文件上,这听起来像是同时使用两个平台来解决此问题的最佳方法。
ub

2
“四种颜色就足够了”(不得不说)。
barrycarter

Answers:




0

我已经编写了ArcPy工具,使用邻域表将提供的列表中的属性分配给多边形,这样就不会有邻居共享相同的颜色。它通常使用简单的图形着色试探法来设法使用少于六种颜色(或者,如果需要,它可以随机分配颜色,同时仍然尊重邻域)。

可以从http://geocite.ic.cz/coloring.zip下载该工具箱以及一些文档。



0

在Python中的多边形上执行Flood填充,以将一定数量的颜色更改添加到对Flood Fill函数的递归调用中,从而随需更改颜色。


-2

您可以将符号系统分类应用于唯一的标识符/ GWID字段。


9
这不能保证相邻多边形之间具有唯一的颜色

应该是因为每个RGB值的范围都可以在0到255之间,这意味着R,B和G值存在各种各样的组合。因此从技术上讲,除非您拥有超过十亿条独特的记录,否则您将不会拥有相同的色调。
GISdork

4
此技术不能保证两个相邻的多边形具有不同的颜色,以便“轻松地将每个[多边形]与相邻的多边形区分开”。即使RGB组合是唯一的,它们也可能看起来非常相似。因此,如果为两个相邻的多边形分配了相似的值,则很难/不可能将它们区分开。请参阅Whuber对原始问题的第一条评论。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.