首页 / 资讯中心 / 文章详情

图斑颜色代表什么:从地类编码到GIS配色与图例反查

图斑颜色代表什么:从地类编码到GIS配色与图例反查 ★ FEATURED ARTICLE
事情起因很简单搜索框里同时躺着两半截字一半是“国土图斑颜色代表什么”另一半是“我浴室墙上的这些棕褐色斑点是什么”。前者是工作上的正经疑问后者是洗澡时抬头看见的糟心事。乍看毫不相干但把它们摆在一起看其实指向同一个动作——你眼前有一块颜色你不知道它代表什么你需要一张“颜色—含义”的对照表把它翻译回来。浴室墙面上的棕褐色斑点翻译表在材料学和微生物学里地图上那些花花绿绿的图斑翻译表在地类分类编码和制图规范里。前者一瓶漂白水、一杯白醋就能验证个八九不离十后者如果查错一张表轻则专题图返工重画重则整片区域的面积统计对不上报告里几个数字互相打架。这篇我把重点放在图斑颜色到底代表什么、怎么反查、怎么自己做一套能交付的配色上开头顺手把墙面斑点那半截标题了结掉毕竟它也是真实存在的困惑。1. 两种“斑点”其实是同一道题颜色是索引图例是字典先把这个类比说透后面很多坑就好理解了。墙面上的棕褐色斑点和地图上的彩色图斑共同点是颜色本身不携带信息信息藏在“颜色—类别”的映射关系里。一块地涂成浅绿不是因为它“看起来比较生态”而是因为配色方案里浅绿这个色值被分配给了“林地”这个编码。同理墙面上一片棕褐色不是因为墙“喜欢这个颜色”而是某种物质在特定温湿度条件下长出来或者沉积下来的结果。两者都需要你先识别颜色特征再去查对应的成因表。区别在于墙面斑点的“图例”是自然规律比较稳定你查一次就记住了图斑的“图例”是人定的不同项目、不同年份、不同制图软件里可以完全不同。这正是图斑颜色最容易让人踩空的地方——同一个色值在甲项目里是耕地在乙项目里可能什么都不是甚至压根没被使用。1.1 浴室墙面棕褐色斑点的四类成因与家用验证法既然标题里问了就先给个能直接用的判断表。墙面出现棕褐色斑点绝大多数落在四类里按出现频率从高到低排现象特征最可能成因家用验证方法处理方向斑点边缘模糊、呈放射状扩散多出现在墙角、瓷砖缝、淋浴区背面霉斑真菌定植棉签蘸稀释漂白水点涂几分钟内明显变浅除霉剂彻底干燥改善通风斑点偏黄褐、质地硬、可用指甲刮下粉末多见于水龙头下方、接缝处铁锈渍或水中铁锰沉积白醋或柠檬酸敷10分钟能被溶解变淡酸性清洗检查管件斑点呈不规则片状、边缘有白色结晶多见于外墙内侧、窗框周边返碱/渗水导致的盐析与污渍干布擦拭后复发遇水扩散先解决渗漏再处理表面斑点集中在打胶处、呈黏腻状、有轻微异味密封胶老化霉变或胶体析出用手触摸有黏感擦拭后仍留印铲除旧胶重打防霉胶这张表的价值不在于“列全了”而在于给你一条排查顺序先判断软硬再判断能不能被酸溶解最后看位置。软且能被漂白水淡化的是生物性的硬且能被酸溶解的是金属盐沉积擦完还反复的是渗水问题光处理表面没用。提示如果斑点面积在几周内明显扩大或者伴随墙皮起鼓、踢脚线发黑别急着买除霉剂先查是不是管道渗漏。表面处理只能解决已经渗出来的部分源头不堵住一个月后原样复发。1.2 为什么地图上的地类必须靠颜色编码回到正题。一张地类图斑图上可能同时存在几十种地类从耕地、园地、林地、草地到水域、建设用地、未利用地一级类就有七八个展开到二级类能到几十个。人眼对空间位置的敏感度远高于对文字的敏感度如果每个图斑都标注文字图面会糊成一团。着色是唯一能在不增加图形复杂度的前提下把类别信息一次性铺满全图的手段。但这里有个硬约束被很多人忽略人眼在无参照条件下能稳定区分的色相数量经验值大约在7到12个之间超过这个数量相邻色相的辨识度会急剧下降。所以成熟的制图规范通常遵循两条路一是一级类用色相区分控制在7个左右二级类在同一色相内用明度和饱和度做梯度二是色相不够用时叠加图案填充比如同一色系下用斜线、点阵、网格区分细类。我见过不少图一个图层里塞了二十多种颜色打印出来一看绿地之间几乎分不出差别最后还要靠属性表核对。这种情况下颜色已经失去编码功能退化成装饰了。1.3 没有图例的彩色图斑信息量等于零这句话我在评审场合说过很多次得罪过人但它是真的。一张没有图例的彩色图斑图你能看出的只有“这里有几种不同的东西”和“它们大致怎么分布”具体是什么全靠猜。而猜测在图斑这类工作里是危险的——猜错一个色块可能把一个地块的地类判读整体带偏。所以后面几节要解决的核心问题就是拿到一张彩色图斑图或者要交出一张彩色图斑图怎么保证颜色和图例之间的对应关系不会错、不会丢、不会在某个环节被悄悄改掉。这比记住某套具体色值重要得多。2. 图斑颜色的上游地类编码才是主键颜色只是它的显示属性很多人第一次接触图斑数据会以为颜色是数据本身的一部分。不是。在一套规范的空间数据里图斑的几何图形加地类编码属性才构成实体颜色是渲染阶段临时贴上去的一层“皮肤”。同一份数据换一个样式文件出来的图可以完全不同但数据一点没变。理解这一点后面所有的排查都会变得顺理成章颜色对不上八成不是数据错了而是样式文件和数据的编码体系没对上。2.1 从编码到色块的映射链条一条完整的映射链大致是这样走的分类标准给出地类名称和编码比如“耕地”对应某个两位或三位编码二级类再往下细分。制图规范或项目约定给出一张配色表规定每个编码用什么颜色、什么填充图案。样式文件在常见GIS软件里可能是样式库、QML、SLD、LYR等格式把配色表翻译成软件能读的渲染规则。渲染引擎按图斑的属性值去样式文件里查查到就上色查不到就走默认样式。出图导出时颜色还要经过色彩空间转换RGB转CMYK或者被打印机的色彩管理再改一遍。这条链上任何一环断开结果就是“颜色不对”。最常见的断点是第4步图斑的属性值里写的是“0101”样式文件的匹配字段里写的是“耕地”两者永远对不上于是全部图斑变成了默认的灰色或者随机色。这种图交上去审的人一眼就能看出来但排查起来要翻好几层。提示接手别人做的图斑项目第一件事不是看颜色好不好看而是打开属性表确认地类字段的实际值长什么样——是编码、是名称、还是名称加编码的拼接字符串。这一步花五分钟能省掉后面两小时的抓瞎。2.2 三套常见配色思路的对比不同来源的图斑数据配色逻辑差别很大。下面这张表是我在实际工作中总结的三类常见情况注意具体色值会因项目而异表里给的是思路而非标准答案配色思路着色依据优点典型问题按一级类分色系只区分耕地、林地、水域、建设用地等大类图面干净色数少远看层次清楚二级类无法区分细看信息不足一级类定色相、二级类调明度色相管大类明度管小类兼顾层次和细节图例可分层展示明度梯度超过4级后难分辨打印更糟按专题意义自定义不严格对应分类层级按分析目的突出关注对象表达力强重点地块一眼可见换个项目就失效复用性差容易误导他人我的经验是面向公众展示或汇报封面用第一种面向专业审阅和数据分析用第二种第三种只在明确的专题分析场景用且必须在图例里写清楚“本图着色不代表地类仅表示XX”。第三类图流出到不懂背景的人手里是误读的高发区。2.3 色值选择不是审美问题是可分辨性问题具体到RGB数值有几个坑值得单独拎出来说。第一屏幕好看不等于打印好看。屏幕上饱和度拉满的翠绿比如RGB 0,200,0转到CMYK印刷时根本印不出来会被压成一种发闷的墨绿和旁边的黄绿挤在一起。做要打印的图建议把饱和度压到60%以下、明度提到75%以上宁可屏幕上看着“淡”印出来才分得开。第二红色和绿色不要直接对比。红绿色觉差异在人群中的比例不算低用纯红和纯绿区分两类图斑对一部分读者等于没区分。稳妥的替代是蓝—橙对比或者在任何色相对比之外再加一层图案差异斜线、点阵。第三色块面积越小颜色要越亮越饱和。图斑图上经常有零星的小地块用和大面积地块一样的低饱和色远看就是一片糊。实操中我会给小面积图斑单独提一档明度但这会破坏“同色同义”的原则所以只在图例里明确标注“小面积图斑加亮显示”才用。第四十六进制值和RGB值必须成对记录。只记“浅绿色”这种描述换个同事接手绝对还原不出来。配色表至少要落成“地类名称 / 编码 / 十六进制 / RGB / 是否带填充图案”五列存成独立文件跟着数据走。3. 拿到一张彩色图斑图按这个顺序反查颜色含义现在换个视角不是你要做图而是你拿到了一张别人做的图或者一张历史存档图需要搞清楚每个颜色到底代表什么。这时候最忌讳的做法是“凭经验猜”——看到深绿就说是林地看到浅蓝就说是水域。地类配色没有全国统一到色值级别的强制标准猜错的概率不低。3.1 正确的查阅顺序图例 → 属性 → 元数据我一般按这个顺序走能查到的就停不用往下走第一步找图例。图例可能在图面右下角也可能在单独的图例页、附件文档、甚至是数据包里一个独立的样式文件。先确认图例里的色块和图上色块是不是同一套——有时候图例是从旧版本复制过来的颜色已经改过了这种情况我遇到过不止一次图例上写“林地深绿”图上一看深绿压根没出现。第二步查属性表。如果能拿到矢量数据直接打开属性表看地类字段的取值分布再把某个具体图斑的颜色和它的属性值对上就能反推出整个映射关系。这一步最可靠因为它绕过了所有中间环节直接看数据和渲染结果的对应。第三步翻元数据或交付说明。数据包里常有一个说明文档写着“本数据采用XX分类标准配色参照XX规范”。这段话看着像废话实际上是判断配色体系来源的唯一线索。知道来源就能找到对应的配色表。3.2 图例缺失时的反推思路现实中经常拿不到图例只有一张图片。这种情况下只能反推我给几条相对可靠的线索按可信度排序面积占比。一级类里耕地、林地、草地的面积占比通常远大于其他类别图面上面积最大的那几个色块大概率是这几种。空间位置与邻接关系。水系通常呈线状或树枝状贯穿建设用地多呈团块状且内部有路网纹理耕地在平原区连片、在山地区沿等高线呈带状。这些形态特征比颜色本身更能说明问题。色相的顺序规律。很多配色方案是按分类表的顺序给色相的比如从黄到绿到蓝到红依次对应耕地、林地、水域、建设用地。如果发现图上的色相分布有这个趋势可以顺着推。颜色数量。图上出现几种颜色往往对应几个一级类数量本身也是线索。注意反推只能用于快速判断不能用于正式成果。凡是要写进报告、作为数据依据的必须有明确的图例或属性支撑否则宁可标注“地类未明确”。3.3 一套可以照着走的自查流程把上面的东西串成可执行的步骤遇到“这图颜色看不懂”的时候按顺序做数一下图上有多少种明显不同的色块记下来。找图例逐条比对色块是否一致不一致的记录差异。有矢量数据的打开属性表统计地类字段取值和图上颜色数量对一遍数量对不上说明有类别被合并或者有默认色混进来了。挑三个面积最大的图斑分别核对颜色和属性确认映射方向没错这一步能发现“图例和实际调换了”的低级错误。挑一个面积最小、最孤立的图斑核对确认小面积图斑没有被渲染成默认色。如果有历史版本拿同一区域两个版本叠一下看颜色变化是数据变了还是样式变了——这两者性质完全不同一个是业务变化一个是制图失误。第6步最容易被跳过但它恰恰是最有价值的。我见过一个案例两期图斑对比时发现某片区域“地类变了”实际查下来是两期用了不同的样式文件同一块地从浅绿变成了深绿数据一个字没改。这种乌龙如果写进分析报告后果比返工严重得多。4. 自己做一套图斑配色从分类表到出图的可复现路径前面讲的是“读”现在讲“写”。自己给图斑配色的场景很常见新项目没有现成样式、旧样式太丑要重做、交付要求统一图面风格。这一节给一条能落地的路径重点在可复现——三个月后你或者别人要重画这张图能一模一样地还原出来。4.1 三条硬约束可分辨、可打印、可复现可分辨是第一位。判断标准很朴素把图缩小到A4纸大小让没看过这张图的人指认“这两块地一样吗”如果对方犹豫超过两秒说明颜色区分度不够。测试时一定要缩到实际使用尺寸屏幕上放大看都分得开缩小后全糊。可打印是第二位。如果你的图要进纸质报告先在打印机上打一张灰度稿。灰度稿上分不开的颜色组合说明它们只靠明度差异在撑实际打印或者黑白复印时会全部糊在一起。修法是把明度差拉开或者加填充图案。可复现是第三位但最容易被忽视。配色方案必须落成文件不能只存在某个人的电脑里或者记忆里。我的做法是维护一张CSV配色表字段包括地类编码、地类名称、层级、十六进制色值、RGB、填充图案类型、备注。这张表跟着项目走谁接手都能直接用。4.2 一份示例配色表与批量应用脚本下面这张表是我惯用的一个起点覆盖常见一级类。注意这是示例具体项目必须以采用的分类标准和制图规范为准色值可以调但结构建议保留地类示例十六进制RGB建议填充耕地#F2E29B242,226,155无园地#C9DFA0201,223,160细点阵林地#5C9A5C92,154,92无草地#A8CE8E168,206,142斜线水域#A6C8E0166,200,224横线建设用地#D9A0A0217,160,160网格未利用地#C4C4C4196,196,196无配好表之后用脚本批量挂到图层上比在软件里一个个点要可靠得多也不会出现“手抖点错一行”的问题。以常见的开源GIS环境为例核心逻辑就是读表、建符号、建分类渲染器from qgis.core import ( QgsProject, QgsFillSymbol, QgsCategorizedSymbolRenderer, QgsRendererCategory, QgsStyle ) # 从配色表读取code - (hex, field_name) palette { 01: #F2E29B, 02: #C9DFA0, 03: #5C9A5C, 04: #A8CE8E, 05: #A6C8E0, 06: #D9A0A0, 07: #C4C4C4, } layer QgsProject.instance().mapLayersByName(tudi_tuban)[0] field dlbm # 地类编码字段按实际情况改 categories [] for code, hexcolor in palette.items(): sym QgsFillSymbol.createSimple({ color: hexcolor, outline_color: 80,80,80,255, outline_width: 0.1, }) categories.append(QgsRendererCategory(code, sym, code)) renderer QgsCategorizedSymbolRenderer(field, categories) layer.setRenderer(renderer) layer.triggerRepaint()这段脚本的真正价值不在代码本身而在于它把“颜色分配”这件事从手工操作变成了数据驱动的过程。配色表改了重跑一遍全图同步更新不会出现“这块地改了那块忘改”的情况。要输出成样式文件长期保存用软件自带的样式导出功能把当前渲染器存成QML或者SLD跟数据放在一起。4.3 出图后的自检清单图做完了别急着交按这几条过一遍能拦掉大部分返工图例里的色块数量和图上实际出现的颜色数量是否一致图例顺序和分类表顺序是否一致顺序乱了读者会很困惑。有没有图斑是默认灰色默认色意味着属性值没匹配上是数据问题不是样式问题。缩到A4大小相邻同类地物是否还能分辨打一张灰度稿主要类别是否还能区分图例文字有没有被色块压住或者超出边框有没有标注“本图配色依据XX规范/本项目自定义”最后一条经常被省略但它是别人理解你图面的唯一入口。特别是自定义配色不写这句话看图的人只能猜。5. 颜色对不上的排查链路从数据源到出图端逐层剥这一节讲踩坑。图斑颜色出问题症状看着都一样——“颜色不对”但成因分布在整个流程的不同层瞎试很浪费时间。我一般按下面的顺序从下往上排查多数情况在前两层就能定位。5.1 分层排查先看数据再看样式最后看导出第一层数据层。打开属性表确认地类字段有值、值的类型对是字符串还是数字、值的前后有没有空格、有没有全角半角混用。这几个问题听起来低级但真实项目中出现的频率极高特别是从不同来源汇总的数据编码“01”和“1”在渲染器眼里是两个完全不同的值后者匹配不上就变默认色。第二层样式层。确认样式文件的匹配字段名和数据里的字段名完全一致。字段名大小写、中文与拼音、有没有下划线任何一处不同都会导致匹配失败。还要确认样式的匹配方式是“精确匹配”还是“包含匹配”后者容易误伤。第三层渲染层。有些渲染设置会覆盖样式颜色比如图层整体透明度、图层混合模式、按比例尺显示的条件规则。检查一下是不是有个旧的比例尺规则在图缩小的时候把颜色替换掉了。第四层导出层。导出图片时的色彩配置、是否勾选了“使用图层样式”、是否导出的是“符号化结果”而不是“原始数据”。这一步出的问题最隐蔽因为软件里看着是对的导出来才变。5.2 几个真实的翻车场景场景一样式文件版本错配。某项目组接手一个区域的地类图斑更新直接沿用了上一期的样式文件。出图后发现大片区域颜色异常查了半天以为是数据错误最后发现是分类标准在新一期做过调整新增了两个二级类样式文件里没有对应条目这两个类全变成了默认色。教训是换期数据必换样式或者至少逐条核对一遍分类表。场景二图例手工绘制。有位开发者图省事图例是在图片编辑软件里手工画的色块没有从渲染器导出。后来配色微调过一次图例忘了同步交出去的成果图面上“林地”是深绿图例上标的却是浅绿。这种错误在评审时非常扎眼因为评审人往往第一眼看图例、第二眼看图面。场景三多人协作字段不一致。两个人分别处理相邻区域一个用编码字段着色一个用名称字段着色拼接后整体看颜色是对的但属性结构乱了。后续做统计分析时按编码汇总一半数据汇总不进去。多人协作前先把字段结构、编码版本、配色表统一这三样定不下来就别开工。场景四打印色彩偏移。屏幕上看颜色层次分明的一张图打印出来绿成一片。原因是配色时只考虑了RGB没做CMYK预览。补救办法是在出图前切换到印刷色彩预览模式再看一遍把明度梯度拉开。5.3 交付前的最后一道关我现在的习惯是任何图斑成果交付前做一次“陌生人测试”找一个完全没参与这个项目的人给他图和图例让他回答三个问题——图上有几类地物、最大的一片是什么、图例里有没有和图上对不上的颜色。三个问题都答对这张图才算过关。这个方法听起来有点小题大做但它能捞出很多制图者自己看不见的问题。因为做图的人对配色太熟悉了熟悉到会自动脑补而看图的人没有这个能力。提示图斑数据如果还要继续流转给别人用交付包里最好附三样东西——矢量数据、样式文件、配色表CSV。只给数据不给样式接手的人就得从零配一遍配出来的颜色和你原来那套对不上后续对比分析就没有意义了。最后说个我自己的体会。早年做图斑图我总想着把颜色调得好看一点饱和度拉高对比拉强屏幕上看着确实漂亮。后来图印出来、投到会议室大屏上问题全暴露了投影仪一压深色系全糊成黑块打印一印高饱和色全变闷。折腾过几轮之后我才明白图斑配色这件事好看是最后一位的可分辨、可还原、可解释才是前三位。墙面上的棕褐色斑点也一样看着碍眼但真正该做的不是拿涂料盖住它而是先弄清它是霉、是锈、还是渗水——搞清楚了成因处理起来才是一步到位而不是反复返工。两件事的道理其实是一条。
阅读完成 · 觉得有帮助?
咨询建站