ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

全球17种土地类型Tif数据集:ArcGIS裁剪、统计与专题图制作指南

全球17种土地类型Tif数据集:ArcGIS裁剪、统计与专题图制作指南 做土地利用分析、生态评估或者城市扩张研究的人对“土地类型数据”这几个字应该都不陌生。不管是算一个县的耕地占比还是分析某片流域的森林覆盖变化第一步几乎都是找一套能用的地表分类栅格。我经常被朋友问到同一个问题“到底有没有一份现成的、直接能用的全球土地类型数据最好中国各省各市都切好了拿过来就能上图”有就是我们今天要聊的全球17种土地类型数据集全球、中国、分省、分市几个尺度都覆盖Tif格式ArcGIS直接打开就能用省去了自己下载原始数据、拼接、裁剪、重分类的一堆麻烦。这套数据对谁最有用我觉得可以分三类一是高校和科研院所里做土地利用/覆被变化、生态系统服务评估的学生和老师二是自然资源、生态环境、农业农村这些部门的业务人员平时需要出图、出统计报表三是做规划咨询、环境评价的从业者经常要在项目里叠加地表覆盖底图。无论你是刚接触GIS的新手还是已经跑过无数栅格的老手这套数据都能帮你省下半天到一天的预处理时间。下面我把自己用这套数据的完整思路、操作要点和踩坑记录都梳理出来希望对你有实际帮助。1. 数据和格式基础17种土地类型到底说了什么1.1 17类分类体系溯源先说“17种土地类型”这个数字怎么来的。严格来说目前全球产品里最经典、最通用的17分类体系来源于MODIS土地覆盖产品MCD12Q1采用的IGBP分类方案。这套体系把地表分成17个可辨识的类别覆盖了植被、水体、人工表面等主要地物类型分类粒度对中宏观研究来说非常合适。它不是最细的——GlobeLand30有10类ESA的CCI-LC有22类——但在“全球统一分类口径”这个前提下17类是一个历史使用极久、对比研究极多的标准体系。我经常遇到有人问为什么不用30米分辨率的数据答案是分辨率和使用场景要匹配。17类数据多数来自MODIS500米分辨率做全球或全国尺度的宏观分析非常合适而且分类精度经过多年验证。如果你做的是村一级、小流域级的精细评估17类确实不够细建议换GlobeLand30或者自己解译高分辨率影像。中宏观选17类微观选30米或更高这是最基础的一条选型原则。1.2 17类分类代码和含义为了方便后面做统计和重分类我先把17类的代码和含义列出来这套代码是整个数据集的核心后面所有裁剪、统计、制图都依赖它代码类别名称说明1常绿针叶林以松、杉等常绿针叶树种为主的森林2常绿阔叶林以樟、栎等常绿阔叶树种为主的森林3落叶针叶林落叶松等秋季落叶的针叶林4落叶阔叶林杨、桦等秋季落叶的阔叶林5混交林针叶阔叶混交的林地6郁闭灌丛覆盖度较高的灌木林地7开放灌丛覆盖度较低的灌木林地8木本稀树草原稀树草原中木本植物占比较高9稀树草原以草本为主、散生少量树木10草原草本植物为主的天然植被11永久湿地常年积水或季节性湿生的区域12农田耕种农作物为主的土地13城市和建成区房屋、道路等不透水面为主14农田/自然植被镶嵌农田与自然植被混合交错区15雪和冰常年积雪或冰川覆盖区16贫瘠或稀疏植被裸地、沙地、戈壁、稀疏草灌17水体河流、湖泊、水库等另外绝大多数tif文件里还有两个特殊值0表示“未分类”255或者65535表示“填充值/无数据”做统计和显示的时候一定要处理好否则最后统计出来的面积全是错的。这17类在实际应用中经常需要合并。比如做生态质量评价时我会把1-5类合并成“森林”6-8合并成“灌丛”10归为“草地”11归为“湿地”12和14归为“农业用地”15归为“冰雪”16归为“裸地”这样最后出图图例非常干净。不要直接拿17类硬出图图面太碎图例也冗长。1.3 Tif格式到底好在哪这套数据集用Tif格式发布我个人非常认可。Tif这里指的不是普通图像格式而是GeoTIFF一种内嵌地理参考信息的栅格格式。它最大的优势是一个文件里同时保存了像元亮度值和地理配准参数包括投影坐标系、像元大小、左上角坐标、仿射变换参数ArcGIS、QGIS、Python的rasterio直接打开就自动对齐位置不需要额外加载外置的世界文件也不会因为图像和坐标分离而出错。我经常给刚入门的人打一个比方普通JPG是“一张纸上的画”需要凭感觉去找它在世界里的位置GeoTIFF是“一张自带定位信息的电子地图”它知道自己长在哪个经纬度每个像素对应地面多大面积。这也是为什么土地类型数据几乎全用Tif分发而不使用JPG、PNG的原因。另外Tif还支持无损压缩、支持内嵌金字塔、支持多波段存储在专业遥感处理链条里是无可替代的。2. 全球、全国、分省、分市不同尺度下的数据处理逻辑2.1 全球尺度用途和常见分析套路全球尺度的Tif通常是一个覆盖经度-180到180、纬度-90到90的大文件坐标参考多为WGS84地理坐标系像元单位是度17类数据一景大小大概在两三百兆到一两个G之间视压缩情况而定。全球数据适合做什么我的经验是三个方向一是全球或洲际尺度的植被覆盖格局分析比如北半球森林线变迁二是跨国的“一带一路”或跨境流域生态评估三是气候变化研究中不同纬度带的土地覆盖时空对比。用这套数据跑全球尺度的栅格统计时我习惯先在ArcGIS里用“汇总统计”工具或Python里用numpy跑一遍各类型的全球像元数量再换算成面积结果和权威发布的数据基本对得上可以作为论文基础数据。2.2 中国区域裁剪投影选择是关键一步中国全境的数据一般在做分析前要先做投影转换。原因很简单WGS84经纬度坐标下一个像元在不同纬度代表的实际面积不同越往北一个像元对应面积越小直接算面积有偏差。用于中国全国尺度的分析我强烈建议把栅格投影到Albers等积圆锥投影Krasovsky_1940_Albers或CGCS2000_Albers等积投影保证面积不畸形统计出来的公里数才是可信的。投影转换操作很简单ArcMap里用“投影栅格”工具选好输出坐标系重采样方法选“最近邻”就行。这里特别提醒一句——土地类型是类别数据重采样千万不能用双线性或三次卷积那会生成介于两类之间的“假值”比如把农田和水体插值成第7.5类这种值是废的。类别数据一律用最近邻重采样这是很多新人踩得最狠的坑。2.3 分省、分市数据怎么切出来很多网上下载的数据已经帮我们切好了省和市的tif直接拿来用就行。但如果你拿到的是全国或全球tif需要自己按行政区切那就必须掌握“按掩膜提取”的用法。操作思路是这样准备一份省级或市级行政区划矢量面shp在ArcMap里用“Spatial Analyst工具 - 提取分析 - 按掩膜提取”输入栅格选17类tif输入掩膜数据选你要的那个省的shp输出就是一个正好覆盖该省范围的新tif。注意掩膜数据的范围、坐标系和栅格最好一致否则可能出现边缘错位或范围不贴合。分市的话可以用相同方法逐个处理也可以写个循环脚本一次跑完。我后面会专门讲批量裁剪。2.4 分省分市数据下载后的质检清单拿到分省或分市tif后不要急着做分析先做三件事一是在内容列表里右键图层属性查看范围Extent确认边界范围和你所在的省/市范围基本吻合二是用“识别”工具点几个像元确认分类值在0-17之间三是打开属性表看有没有异常大的像元数量集中在0或255上如果集中在0上说明大面积区域“未分类”这数据可能有问题。我记得有一次下载了某个市的数据全市总像元数一算只有实际面积的一半排查了一圈才发现是裁剪时掩膜矢量本身有空隙中间大块区域被当作“无数据”裁掉了。从那以后我每次拿到数据都会先做一次完整性统计宁可多花几分钟也不要等结果出错了才回头查。3. 实操从原始Tif到一张能用的分类成果图3.1 在ArcMap中打开和初步浏览拿到tif后第一步是在ArcMap里打开。如果你用的是ArcMap 10.2这类老版本双击tif可能第一次打开会卡一下因为软件在后台构建金字塔或统计。打开之后如果图面全黑或全灰别慌很可能是显示拉伸的问题右键图层属性在“符号系统”里把“拉伸类型”改成“唯一值”或“分类”然后设置一个合适的色带17类就能正常显示出来了。我的习惯是为17类设置一套固定色带这样不同时期、不同地区的数据放一起视觉对比不违和。比如水体用蓝色、森林用深绿、草地用浅绿、农田用黄色、城市用红色、裸地用棕色、冰雪用白色。这套颜色可以在图层属性里手动改也可以用样式文件。3.2 按行政区裁剪的完整步骤我们以“从中国17类tif里切出浙江省数据”为例走一遍完整流程第一步准备数据省级行政边界shp至少要包含浙江省的面要素全国17类tif假设叫 China_LandCover_2020.tif。第二步打开ArcMap加载China_LandCover_2020.tif和省级边界shp。第三步打开ArcToolbox找到“Spatial Analyst工具 - 提取分析 - 按掩膜提取”。第四步输入栅格选China_LandCover_2020.tif输入栅格数据或要素掩膜数据选省级边界shp如果有“要素掩膜数据”参数选择省界图层。第五步如果想一次只切浙江可以在环境设置里把“处理范围”设为浙江那个面要素的范围或者在输入掩膜时先用“选择”工具选中浙江面然后在环境里勾选“所选要素”作为处理范围。第六步设置输出路径例如D:\LandCover\Zhejiang.tif点击确定等待计算完成。完成后打开Zhejiang.tif查看确认范围正确、分类值正常。这个流程对分市同样适用只是把掩膜换成市级边界而已。3.3 批量裁剪分省分市数据的脚本方案如果你要切全国300多个市用鼠标一个个点“按掩膜提取”会点到怀疑人生。我一般直接用ArcGIS的Python窗口或者PyCharm跑ArcPy批处理脚本核心代码如下import arcpy from arcpy.sa import ExtractByMask arcpy.CheckOutExtension(Spatial) arcpy.env.workspace rD:\LandCover arcpy.env.overwriteOutput True # 输入栅格和市级边界 raster rD:\LandCover\China_LandCover_2020.tif city_fc rD:\Admin\City_Boundary.shp out_folder rD:\LandCover\City # 可选为每个市建立唯一名称的字段 fields [省, 市名称, 市代码] with arcpy.da.SearchCursor(city_fc, fields) as cursor: for row in cursor: province, city, code row city_name f{province}_{city} out_tif out_folder \\ city_name .tif # 用SQL表达式筛选当前城市 where_clause f省 {province} AND 市名称 {city} arcpy.management.MakeFeatureLayer(city_fc, city_lyr, where_clause) # 执行按掩膜提取 out_extract ExtractByMask(raster, city_lyr) out_extract.save(out_tif) print(city_name 完成) print(全部完成)有几点你要特别注意一是字段名要和你的shp属性表完全一致不一致会报错二是每个城市都要先MakeFeatureLayer再提取避免查询条件影响下一条记录三是输出路径里别用中文路径我有一次就是因为输出文件夹带了中文ArcPy直接罢工四是建议输出格式写全.tif后缀并保持环境设置里的压缩方式为LZW这样省空间。3.4 面积统计和类型占比计算数据切好之后大家最常问的是“某类土地面积到底占多大”。计算方法分两步第一步用“属性表”查看分类栅格的每个类别像元数。右键栅格图层打开属性表VALUE字段是分类代码COUNT字段是像元数量每个像元面积乘以像元数就是该类总面积。如果投影后像元是1000米×1000米那么一个像元就是1平方公里COUNT直接等于平方公里数很方便。第二步如果你有矢量行政区可以用“区域制表”工具Tabulate Area直接算每个行政区内部各土地类型的面积。工具在“Spatial Analyst - 区域分析 - 区域制表”输入区数据选行政区shp输入栅格选分类tif输出表就是每个区对应各类型像元数的矩阵。这个表导成Excel后可以做占比分析、柱状图、饼图。我实际跑过中国分省的土地类型面积统计和统计年鉴里公布的林地、耕地面积对比误差基本控制在百分之几以内这对宏观分析来说完全够用了。但有一点必须强调分类数据的精度取决于原始产品的分类精度不要拿一个全球500米产品去逐村逐镇对账那样误差会被过度放大。3.5 把Tif做出漂亮的专题图数据统计完了出图也是刚需。出图前我建议做一步预处理用“重分类”工具把17类合并成大类比如1-5合并为森林、12和14合并为农业用地这样图面更有层次感。然后进入布局视图插入图例、比例尺、指北针和图名导出分辨率设成300dpi以上图片基本可以直接放进报告或者PPT里。导出时我习惯把底图背景色改成浅色而不是纯白这样陆地区域和海洋/无数据区域区分明显。纯白底图会让冰川和裸地在图面上“融”进背景里观感很差。4. 常见问题与排查技巧实录4.1 Arcmap10.2构建Tif金字塔非常慢怎么办这是网上问得最多的问题也是我在老版本ArcGIS上被折磨很久的一件事。第一次打开一个两三个G的tifArcMap会提示是否构建金字塔如果点了“是”然后就是漫长的等待一个大的全球tif构建金字塔甚至可能要等十几分钟到半小时。首先要理解金字塔是什么它是栅格数据的一组降采样副本从原始分辨率一层层往下减显示的时候只调用对应分辨率的层所以打开大图时才能流畅缩放。ArcMap 10.2自带的金字塔构建器速度确实一般尤其当数据是LZW压缩的GeoTIFF时还需要反复解压、重采样自然慢。我的解决办法有三条路第一如果数据只是偶尔用可以不建金字塔。浏览时用“固定比例”或“数据框属性-常规-显示”里降低显示分辨率虽然缩放会卡一点但省了漫长的等待。第二如果用得频繁建议用外部工具构建金字塔。在ArcGIS的“系统工具箱-数据管理工具-栅格-栅格属性-构建金字塔”里把金字塔压缩类型设为LZ77采样方式选“最近邻”可以明显减少构建时间。很多教程里默认的压缩类型是“默认”实测改LZ77后速度能提升一半以上。第三升级到ArcGIS Pro或QGIS。Pro的金字塔构建算法比10.2快很多QGIS里构建金字塔也非常迅速。如果所在单位还用10.2想省时间的同学可以考虑双开QGIS做预处理最后成果拿回ArcMap出图。还有一个隐藏坑构建金字塔时磁盘空间不足也会导致卡死。一个20G的tif构建金字塔可能需要额外5-8G的临时空间在“环境-工作空间”里把临时工作空间指到剩余空间大的盘符是个容易忽略但很关键的操作。4.2 GIS里怎么对Tif文件进行“编辑”很多从矢量数据转过来的人会习惯性问能不能像编辑shp一样把某个区域的像元值直接改掉答案是不行栅格数据没有矢量那种直观的“要素编辑器”。但“编辑”的目的通常可以通过几个工具变相实现一是如果你想把某一类改成另一类用“重分类Reclassify”工具比如把代码13城市建成区改成12农田重分类映射表里把13映射为12即可。二是如果你想按某种条件把像元值改掉用“栅格计算器Raster Calculator”比如想把水体17的面积改成无数据表达式写“SetNull(波段17, 波段)”即可。三是如果你想手动修正某个小范围的错误分类最靠谱的思路是在矢量图层上画一个面栅格化这个面得到一个掩膜然后用“栅格计算器”把掩膜范围内的值替换成正确值。表达式类似“Con(IsNull(掩膜), 原栅格, 正确值)”这套操作看着繁琐但确实是栅格“局部修正”的标准做法做研究时不建议直接改原始数据最好复制一份再改保留原始数据留底。还有一个高频操作把分类tif转成矢量多边形这样就能像shp一样选择、删除、合并。用“转换工具-从栅格转出-栅格转面”前提是栅格的值域不大17类转出来面数不少但还能接受。转面之后就能在ArcMap里直接编辑属性了编辑完再转回栅格逻辑上完全可行。4.3 Tif导出Jpg发灰颜色不对这个坑我认为是“非遥感专业”用户最容易碰到的。原因一句话就能解释分类tif里像元值只有0到17而JPG是8位RGB图像需要0到255的拉伸映射。直接导出时ArcMap把当前拉伸范围或默认范围应用到导出图像0到17这个窄范围被拉伸到0到255后大量像元落在很暗或很灰的区间看起来就是一片灰蒙蒙的图。解决办法有两条一是在图层属性-符号系统里把“拉伸类型”设成“唯一值”或“分类”给每类指定明确的颜色导出时JPG就会忠实记录显示颜色这个办法适用于分类数据也是最推荐的。二是如果你确实想保留连续拉伸的影像感在“拉伸”类型里选“百分比截断”把截断值设成1%-2%即忽略两端极端值再拉伸颜色层次会正常很多。然后在“导出地图”窗口里把“分辨率”设为200-300并确认勾选“写入世界文件”和“颜色”为“真彩色”这样导出的JPG颜色和屏幕显示基本一致。我见过不少人导出的分类图里水体发灰、森林发黑基本都是“唯一值显示”没做或导出时RGB配置不对。记住一个规律分类数据显示用唯一值连续数据显示用拉伸两者不要混淆。4.4 数据使用中的其他典型坑点最后一个部分整理几个我实际踩过、或者帮人排查过的坑不一定触发频率高但一旦触发就很折腾。第一栅格坐标系和矢量边界不一致。最常见的是数据一个是WGS84一个是CGCS2000或西安80两者边界在范围内看似一样但裁剪后边缘会有一两个像元的错位仔细看会有一条“白边”。解决办法是在裁剪前用“投影”工具把矢量边界投影到与栅格一致的坐标系而不是盲目直接提取。第二NoData值处理不当。分类tif的边缘通常有NoData区域你在做栅格计算器时如果用“等于”运算NoData会传染结果里一片黑。一般先做“IsNull”判定再赋一个背景值或者直接用“提取”类工具自动保留NoData。第三像素深度的问题。17类数据的位深可能是8位或16位有时你拿到的tif是16位无符号整型在ArcGIS里属性表显示正常但导出到某些软件里会提示不支持。处理方式是提前用“复制栅格”工具把像素深度改成8_BIT_UNSIGNED这样通用性最好文件体积也小。第四属性表打不开。分类tif有时属性表是空的需要先运行“构建栅格属性表”工具如果没有属性表说明栅格可能被识别为连续影像而不是专题分类数据检查一下第一波段是否存在。用这套17类土地类型数据做了这么多年分析我最大的心得是数据本身是成熟的但真正决定成果质量的往往是预处理阶段那些不起眼的小操作——投影选对了吗、NoData处理了吗、重采样方法对吗、显示拉伸设置了吗。这些细节看似琐碎却能直接决定你后面所有统计和制图是否可靠。尤其是做跨期对比研究时前后两期数据的坐标系、分类体系、处理流程必须完全一致否则你算出来的“变化”可能是假的。希望这篇梳理能帮你把这套数据集用得更顺、更稳少走一些我当年走过的弯路。
返回列表