1. 为什么CLCD数据值得在ArcGIS里认真折腾一遍
CLCD,全称China Land Cover Dataset,是国内做土地利用、生态评估、城市扩张分析时绕不开的一套数据。它的空间分辨率是30米,时间跨度从1990年一直延续到2022年,覆盖了整整三十多年的地表变化。做国土空间规划、碳汇估算、耕地保护监测、城市热岛研究的同行,基本都会把它当作底图数据来用。但问题在于,很多人拿到这套数据之后,卡在了第一步——怎么把它正确地导入ArcGIS,怎么让它的坐标系、分类体系、属性表都对齐,然后才能谈后续的裁剪、合并、转移矩阵、景观格局分析。
我自己在多个项目中反复用过CLCD,从ArcGIS 10.2到10.8再到ArcGIS Pro 3.x,踩过的坑不算少。有的人导入之后发现栅格值全是1到9的整数,不知道对应什么地类;有的人裁剪完发现像元对齐出了问题,统计面积对不上;还有的人在合并多部件要素时把拓扑搞乱了,尖锐角一堆,出图难看。这些问题看起来零碎,但每一个都会直接影响最终分析结果的可靠性。
这篇文章面向的是已经装好ArcGIS、手头有CLCD数据、准备做空间分析的人。不管你是用ArcGIS 10.2中文激活版还是ArcGIS Pro 3.7,不管你是做一次简单的裁剪还是完整的土地利用转移矩阵,下面的内容都能直接抄作业。我会从数据导入讲起,一路走到空间分析的核心环节,把每一步的参数选择、操作意图、避坑经验都摊开来说。
2. CLCD数据的前期准备与导入策略
2.1 数据格式确认与分类体系对照
CLCD原始数据通常以GeoTIFF格式分发,每个年份一个文件,命名类似CLCD_v01_1990.tif。拿到数据后第一件事不是急着拖进ArcGIS,而是先确认两件事:坐标系和分类编码。
CLCD采用的是WGS84地理坐标系(EPSG:4326),这一点很关键。如果你后续要做面积统计,必须投影到合适的投影坐标系,比如Albers等面积投影,否则地理坐标系下的面积计算会严重失真。我见过有人直接在地理坐标系下算面积,结果和统计年鉴差了百分之十几,问题就出在这里。
分类体系方面,CLCD一共9个一级类,编码从1到9:
| 编码 | 地类名称 | 常见颜色建议 |
|---|---|---|
| 1 | 耕地 | 黄色系 |
| 2 | 林地 | 深绿色 |
| 3 | 灌木 | 浅绿色 |
| 4 | 草地 | 黄绿色 |
| 5 | 水体 | 蓝色 |
| 6 | 冰雪 | 白色 |
| 7 | 裸地 | 灰色 |
| 8 | 不透水面 | 红色 |
| 9 | 湿地 | 青色 |
注意:CLCD的编码是整数型栅格值,不是字符串。导入后如果发现属性表里没有这些编码,说明栅格可能被当成了连续型数据,需要检查是否误用了拉伸渲染。
我一般会在导入前先用文本编辑器打开一个附带说明文件,确认版本和年份对应关系。有些下载渠道会把年份搞混,1990和1995的文件名只差一个数字,批量处理时容易拿错。
2.2 在ArcGIS中正确加载栅格并设置符号系统
打开ArcGIS(以10.8为例),点击Add Data,选中CLCD的tif文件。加载进来之后,你看到的可能是一片灰度图,因为默认渲染方式是拉伸。这时候右键图层,进入Properties,切换到Symbology选项卡。
关键操作在这里:选择Unique Values,而不是Stretched。然后选择Colormap或者手动指定颜色。如果你有官方提供的.clr颜色映射文件,直接导入最省事。没有的话就手动给1到9分别指定颜色,建议按照上表的色系来,出图时辨识度高。
分类渲染设置好之后,建议把图层保存为.lyr文件。后面做多期对比时,直接导入这个lyr文件,所有年份的配色就统一了,不用每年重新调一遍。这个习惯能省下大量重复劳动。
还有一个细节:在Symbology的Display NoData as选项里,建议勾选一个醒目的颜色比如黑色或透明。CLCD数据边缘有时会有NoData区域,如果不处理,出图时会出现莫名其妙的色块。
2.3 坐标系转换与投影设置的操作要点
前面说了CLCD是WGS84地理坐标系。如果你只是做简单的浏览和裁剪,地理坐标系够用。但一旦涉及面积量算、距离分析、景观指数计算,就必须投影。
我通常用Albers等面积投影,中央经线选105°E,双标准纬线选25°N和47°N,这个参数组合对全国尺度的面积保真度最好。操作路径是:ArcToolbox → Data Management Tools → Projections and Transformations → Raster → Project Raster。
参数设置上,Input Coordinate System会自动识别为GCS_WGS_1984,Output Coordinate System选Projected Coordinate Systems → Continental → Asia → China → Asia_North_Albers_Equal_Area_Conic。Resampling Technique选Nearest,因为CLCD是分类栅格,用双线性插值会产生不存在的地类值,这是大忌。
提示:投影之后建议用Identify工具点几个像元,确认栅格值还是1到9的整数,没有出现小数。如果出现了小数,说明重采样方式选错了,需要回退重做。
投影完成后,栅格的像元大小会从度数变成米,通常是30米左右,但会有微小浮动。这是正常的,因为投影变换本身会带来重采样。如果你对像元对齐要求极高,可以在Environment Settings里指定Snap Raster,确保多期数据投影后像元完全对齐。
3. 裁剪、合并与矢量化的核心操作拆解
3.1 按研究区裁剪CLCD栅格的两种方案对比
裁剪是最高频的操作。ArcGIS里裁剪栅格有两条路:一是用Clip工具(Data Management → Raster → Raster Processing → Clip),二是用Extract by Mask(Spatial Analyst → Extraction → Extract by Mask)。
两者的区别在于:Clip是按矩形范围或矢量外接矩形裁剪,速度快但不够精确;Extract by Mask是按矢量边界精确裁剪,边界外的像元会被设为NoData,适合研究区形状不规则的情况。
我一般推荐Extract by Mask,虽然慢一点,但结果干净。操作时注意Input Raster选CLCD,Input Mask选你的研究区矢量面。输出栅格的像元大小会自动继承输入栅格,不用手动设。
如果你要一次裁剪多个年份的数据,可以用Batch模式。右键工具 → Batch,然后把多年的CLCD文件和同一个Mask分别填进去,一次性跑完。这个技巧在跑1990到2022年共30多期数据时特别管用,省得一年一年点。
注意:裁剪前务必确认矢量边界和栅格的坐标系一致。如果矢量是投影坐标系而栅格是地理坐标系,Extract by Mask会报错或结果错位。先用Project工具把矢量转成和栅格一样的坐标系。
3.2 多期数据合并与多部件要素处理
有时候你需要把多年的CLCD合并成一个多波段栅格,或者把多个相邻区域的CLCD拼成一张大图。合并栅格用Mosaic To New Raster(Data Management → Raster → Raster Dataset → Mosaic To New Raster)。
关键参数:Pixel Type选8_BIT_UNSIGNED,因为CLCD值最大是9,8位足够。Number of Bands设为1。Mosaic Operator选First或Last都行,因为各期数据在空间上不重叠,不存在冲突。
合并多部件要素是另一个高频需求。比如你把CLCD重分类后转成矢量,发现同一个地类被拆成了很多个不相连的部件。这时候用Dissolve(Data Management → Generalization → Dissolve),按地类字段融合,多部件就会合并成单个要素。
但Dissolve之后经常出现尖锐角,出图很难看。解决办法是用Simplify Polygon工具,容差设小一点比如10米,勾选Respect Topology。如果尖锐角特别严重,可以先用Repair Geometry修一遍,再用Eliminate合并小碎斑。
我自己的经验是:Dissolve之前先做一次Integrity Check,确保没有自相交或空几何。不然Dissolve跑到一半报错,前功尽弃。
3.3 栅格转矢量与拓扑检查的实操细节
CLCD是栅格数据,但很多分析需要矢量格式,比如做土地利用转移矩阵时需要矢量叠加。栅格转矢量用Raster to Polygon(Conversion Tools → From Raster → Raster to Polygon)。
参数上,Field选Value,Simplify Polygons勾选上,这样出来的边界更平滑。但要注意,勾选Simplify后面积会有微小变化,如果做精确面积统计,建议不勾选,后续再用Simplify Polygon单独处理。
转成矢量后,第一件事是做拓扑检查。在ArcCatalog里新建一个Personal Geodatabase或File Geodatabase,里面新建Feature Dataset,导入矢量后新建Topology。规则至少加两条:Must Not Overlap和Must Not Have Gaps。CLCD转矢量后经常出现相邻图斑之间有缝隙或重叠,这两条规则能帮你揪出来。
检查出错误后,用Topology Edit工具手动修,或者用Planarize Lines打断后重新构面。这个过程比较耗时,但做土地利用变化分析时,拓扑干净是结果可信的前提。
提示:ArcGIS Pro在拓扑检查方面比10.x版本友好很多,支持同一个图层大量面互相重叠的批量删除。如果你用Pro 3.x,可以直接在拓扑错误检查器里右键批量Mark as Exception或Delete。
4. 基于CLCD的空间分析实战与参数计算
4.1 土地利用转移矩阵的完整实现路径
转移矩阵是CLCD最核心的分析产出之一,用来回答“哪些耕地变成了不透水面”“哪些林地退化成草地”这类问题。实现路径是:两期矢量数据做Intersect,然后统计面积。
具体操作:假设你有2000年和2020年两期CLCD矢量。先用Intersect(Analysis Tools → Overlay → Intersect)把两期数据叠加,输出结果里每个图斑都带有2000年的地类字段和2020年的地类字段。然后新建一个字段Area,用Calculate Geometry算面积(投影坐标系下选平方米)。最后用Pivot Table或者Summary Statistics按两个地类字段分组统计Area之和。
如果你不想写Python,用Excel透视表也能做。把Intersect结果的属性表导出为CSV,在Excel里行放2000年地类,列放2020年地类,值放面积求和,一张转移矩阵就出来了。
但要注意一个坑:Intersect之前两期数据的拓扑必须干净,不能有重叠或缝隙。否则Intersect结果会出现大量碎小图斑,统计出来的面积偏差很大。我一般会先对两期数据分别做Dissolve和Repair Geometry,再Intersect。
4.2 景观格局指数的计算与栅格准备
景观格局指数比如斑块密度、最大斑块指数、聚集度,是生态评估的常用指标。计算这些指数通常用Fragstats软件,但前提是把CLCD栅格准备好。
Fragstats对栅格的要求很严格:必须是整数型、分类编码连续、背景值明确。CLCD原始数据满足前两条,但背景值需要手动设。在ArcGIS里用Reclassify把NoData重分类为0,或者用Set Null工具把研究区外的像元设为0。
另外,Fragstats不支持地理坐标系,必须用投影后的栅格。像元大小建议统一为30米,如果投影后是29.8或30.2,用Resample重采样到精确的30米,重采样方式选Nearest。
我自己的流程是:CLCD原始tif → Project Raster到Albers → Extract by Mask裁剪研究区 → Reclassify把NoData设为0 → Resample到30米 → 导出为GeoTIFF → 导入Fragstats。这一套走下来,基本不会报错。
4.3 面积量算中的坐标系陷阱与精度验证
面积量算是CLCD分析中最容易出错的环节。前面反复强调投影,这里展开说为什么。
在地理坐标系下,ArcGIS计算面积用的是球面公式,结果单位是平方度,没有实际意义。即使你手动换算,不同纬度带的换算系数不同,误差能到百分之几十。所以任何面积统计之前,必须确认数据框的坐标系是投影坐标系。
验证方法很简单:算一个你知道实际面积的区域,比如一个标准方里网。如果算出来和实际差在1%以内,说明投影没问题。如果差很多,检查是不是用了Web Mercator,那个投影在高纬度地区面积变形极大,不适合面积量算。
另一个精度问题是像元对齐。两期CLCD数据如果像元没有完全对齐,做变化检测时会出现大量伪变化。解决办法是在Project Raster时指定Snap Raster为其中一期数据,确保两期像元中心完全重合。
提示:ArcGIS 10.8里可以在Environment Settings → Raster Analysis里设置Cell Size和Mask,这样所有栅格分析工具都会自动对齐到统一的像元网格,省去逐个设置的麻烦。
5. 常见问题排查与独家避坑经验
5.1 导入后栅格值异常与符号系统错乱
最常见的问题是导入CLCD后,栅格值显示为0到255的连续值,而不是1到9。这通常是因为ArcGIS把栅格识别成了连续型。解决办法是右键图层 → Properties → Symbology → Unique Values,如果Unique Values是灰色的,说明栅格被当成了浮点型。用Int工具(Spatial Analyst → Math → Int)转成整数型,再重新加载。
另一个问题是符号系统错乱,比如水体显示成红色。这是因为没有加载正确的Colormap。在Symbology里选择Colormap,然后Import一个预设的.clr文件。如果没有,手动指定1到9的颜色,保存为lyr文件备用。
5.2 裁剪结果像元偏移与面积对不上的排查
裁剪后面积对不上,九成是像元对齐问题。排查步骤:先用Identify工具点几个边界像元,看两期数据的像元中心是否重合。如果不重合,用Snap Raster强制对齐。具体操作是在Extract by Mask的Environment Settings里,Snap Raster选参考栅格,Cell Size也选参考栅格。
还有一种情况是矢量边界和栅格坐标系不一致。虽然ArcGIS会自动投影矢量,但有时候会静默失败。手动用Project工具把矢量转成和栅格一样的坐标系,再裁剪。
5.3 拓扑错误与尖锐角的批量修复技巧
拓扑错误在CLCD转矢量后非常普遍。批量修复的思路是:先用Repair Geometry修几何错误,再用Integrity Check找自相交,然后用Eliminate合并小碎斑,最后用Simplify Polygon去尖锐角。
Simplify Polygon的容差设置很关键。太大,边界变形严重;太小,尖锐角去不掉。我的经验是:全国尺度用100米,省级用50米,市级用20米,县级用10米。这个参数不是绝对的,根据出图比例尺调整。
如果尖锐角特别顽固,可以用ArcGIS Pro的Generalize工具,里面有个Bend Simplify算法,比10.x的POINT_REMOVE效果好很多。
5.4 常见问题速查表
| 问题现象 | 可能原因 | 解决方法 |
|---|---|---|
| 栅格值显示为0-255连续值 | 被识别为连续型 | 用Int工具转整数型 |
| 裁剪后面积偏差大 | 像元未对齐 | 设置Snap Raster和Cell Size |
| 转移矩阵出现大量碎斑 | 拓扑不干净 | 先Dissolve和Repair Geometry |
| Fragstats报错 | 坐标系或背景值问题 | 投影到Albers,NoData设为0 |
| 尖锐角严重 | 矢量简化不足 | 用Simplify Polygon,容差按尺度调整 |
| 多期数据像元偏移 | 投影参数不一致 | 统一投影参数,指定Snap Raster |
提示:ArcGIS 10.8界面发虚的问题,通常是高DPI屏幕兼容性设置没调好。右键ArcMap快捷方式 → 属性 → 兼容性 → 更改高DPI设置 → 勾选替代高DPI缩放行为,选系统增强。这个设置能解决大部分显示模糊问题。
6. 从CLCD到专题制图的出图规范
6.1 分类配色与图例的标准化设置
CLCD出图时,配色一致性直接影响可读性。我习惯用一套固定的色板:耕地用浅黄(RGB 255,255,190),林地用深绿(RGB 0,100,0),灌木用中绿(RGB 100,180,100),草地用黄绿(RGB 180,220,100),水体用蓝色(RGB 0,100,255),冰雪用白色(RGB 255,255,255),裸地用灰色(RGB 180,180,180),不透水面用红色(RGB 220,0,0),湿地用青色(RGB 0,180,180)。
图例设置上,建议在Layout View里手动调整图例项的顺序,按编码1到9排列,不要按面积大小排。这样读者对照分类表时更直观。图例字体用宋体或黑体,字号根据出图尺寸调整,一般A4幅面用8到10磅。
6.2 出图比例尺与分辨率的选择依据
出图比例尺决定了栅格是否需要重采样。如果出图比例尺是1:100万,30米栅格直接出图没问题。如果是1:10万,30米栅格会显得很粗糙,可以考虑用Aggregate工具聚合到90米或150米,让图面更干净。
分辨率方面,屏幕展示用150dpi,打印用300dpi。导出格式选TIFF或PNG,不要选JPEG,因为JPEG是有损压缩,分类边界会出现伪影。
6.3 制图元素布局与导出参数
Layout View里至少要有五个元素:图名、图例、比例尺、指北针、数据来源说明。图名放在顶部居中,比例尺和指北针放在右下角或左下角,数据来源放在底部。
导出时在File → Export Map里设置分辨率。如果出图尺寸是A4(210×297毫米),300dpi对应的像素是2480×3508。这个尺寸打印出来清晰度足够。
提示:ArcGIS Pro 3.7的布局功能比10.x强很多,支持多布局、动态文本、自动图例换行。如果你经常出图,建议尽早迁移到Pro。
7. 我个人的几条实操体会
CLCD这套数据我用了快五年,从最开始导入都费劲,到现在能批量跑完三十年的转移矩阵,中间踩的坑基本都写在上面的内容里了。如果只让我挑三条最重要的经验,我会说:第一,投影坐标系是面积分析的生命线,任何跳过投影直接算面积的操作都是在给自己挖坑;第二,拓扑检查不是可选项而是必选项,尤其是做变化检测时,拓扑不干净的结果还不如不做;第三,像元对齐要养成习惯,每次投影和裁剪都指定Snap Raster,这个动作花不了十秒钟,但能省下后面几个小时的排查时间。
另外分享一个小技巧:如果你要处理1990到2022年全部33期CLCD数据,用ArcGIS的ModelBuilder搭一个自动化流程,把Project、Clip、Reclassify、Resample串起来,一次运行全部跑完。我搭过这个模型,33期数据从原始tif到Fragstats可用的栅格,全程不到二十分钟。比手动一期一期点快太多了,而且不会漏参数。
后续如果要做更深入的分析,比如结合夜间灯光数据做城市扩张驱动力分析,或者结合气象数据做植被覆盖度变化归因,CLCD都可以作为核心底图。关键是前期把数据导入和预处理做扎实,后面的分析才能站得住脚。