ARTICLE DETAIL

资讯详情

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

Esri全球10米土地覆盖数据下载与处理全流程实操指南

Esri全球10米土地覆盖数据下载与处理全流程实操指南 做GIS这行的朋友大概率都经历过被“土地覆盖数据”折磨的滋味。以前想找一个全球尺度、分辨率过得去、又能直接下载的成品分类数据要么去GlobeLand30官网一层层申请分幅要么自己下载遥感影像慢慢做分类别提多折腾。Esri在2020年发布的全球10米土地覆盖数据算是把这个局面彻底改掉了。这套由Sentinel-2卫星影像训练出来的全球分类产品配合官方出品的Land Cover Downloader下载工具框个范围、提交请求、收链接就能拿到一张现成的GeoTIFF分类图。这篇文章不会念文档而是把我从找数据、下数据、处理数据到踩坑救火整个流程的实操经验完整摊开来讲适合所有需要做土地覆盖、土地利用、生态评估、环境变化分析的GIS从业者和相关领域研究人员。1. 先把数据底细摸清楚再动手也不迟1.1 这套10米土地覆盖是怎么生产出来的做任何分析之前我都建议先搞清楚数据从哪来。Esri 2020 Land Cover的生产链路其实很清晰底图是欧空局Sentinel-2 A/B两颗卫星在2020年内拍摄的10米多光谱影像这是分辨率能达到10米的地基。Impact Observatory这家做地理智能的公司用深度学习模型对影像做逐像元分类训练样本覆盖了全球各种地表类型模型还迭代了好几个版本。微软的Planetary Computer提供了大规模并行计算和存储资源把全世界的处理结果统一组织起来。Esri做的则是把最终分类结果接入ArcGIS Living Atlas负责可视化、共享和开放下载。简单类比一下这就像一个大工厂卫星负责拍原料照片算法团队负责把照片里的每块地“填空”归类云计算负责处理全世界的数据量最后Esri把成品摆上货架。正因为是多方协作才做到了全球陆地范围统一分类、统一坐标系、统一时间节点这对跨区域对比研究来说特别重要。以前不少全球产品经常出现不同大洲采用不同辅助数据、分类口径对不上的问题用起来很头疼。官方在这套基础上还推出了年度版本序列也就是从2017年开始每年一版全球10米土地覆盖产品。当年发布之后学界和行业里用得非常频繁原因只有一个能直接拿来用不用再自己清洗半天。1.2 分类体系与像元值含义很多新手拿到GeoTIFF之后第一件事就是直接拉伸渲染看颜色。这个事我干过结果灰度图一片黑以为数据坏了。其实问题在于这套产品不是连续的遥感反射率数据而是一个“分类编码栅格”每个像元的值就是一个类别编号。下面这个表是Esri 2020 Land Cover最常见的分类体系像元值类别中文名英文名典型地物1水体Water河流、湖泊、海洋、水库水面2树木Trees乔木林、混交林、防护林等3草地Grass天然草本植被、草甸、城市草坪4被淹植被Flooded vegetation湿地、红树林、周期性淹没区域5作物Crops耕地、果园、种植园等人工植被6建成区Built Area房屋、道路、硬化地面等不透水面7裸地Bare ground荒漠、裸岩、裸土、沙地8冰雪Snow/Ice冰川、积雪、永久冻土表面不同版本的类目名称可能有细微差别部分地区还会出现0值的空值像元。经常有人问我网上看到的图例有10类、11类那是跟ESA WorldCover等产品做对比展示时的扩展方案Esri这套产品核心分类基本就是以上8类。实际做统计时直接看栅格属性表里的Value字段别凭颜色猜类别。1.3 为什么选它而不是GlobeLand30或ESA WorldCover每次聊到这个话题总有人问不是还有30米的GlobeLand30吗为什么不用我一般从三个角度回答。第一是分辨率。10米对比30米空间细节差了不止一个量级。举个例子华北农村的宅基地和周边耕地在30米产品里经常混在一起10米就能把村庄轮廓、房前屋后的小地块区分出来。对城市扩张、景观破碎化分析来说这个差异非常实际。第二是获取成本。GlobeLand30需要去官网按分幅申请下载本身流程没问题但你要做跨国研究动辄几十个分幅拼起来光处理就够喝一壶。ESA WorldCover 2020也免费开放、效果很好但下载接口更偏云环境。Esri这套产品依托ArcGIS生态网页下载器和影像服务都很顺QGIS用户也能通过标准接口访问。第三是生态兼容。如果团队本来就是ArcGIS系的这套数据的优势非常明显在Living Atlas里直接搜就能加载图层符号化、时间序列对比都是现成功能。它的分类结果跟GlobeLand30、ESA WorldCover在宏观格局上基本一致在大范围生态评估场景下可以直接替换使用。不过话说回来数据选择永远没有唯一答案。如果项目对精度要求极高、而且只做某个城市或县域我更建议拿更高分辨率的影像自己分类或者用这套全球产品做初筛再用无人机影像或国产高分影像做局部修正。2. 下载之前先想清楚三件事2.1 三条下载路线按需求选实测下来下载Esri 2020土地覆盖有3条常用路线。网页版Land Cover Downloader适合一次性拿一个小范围的数据操作门槛最低ArcGIS Pro影像服务导出适合已有桌面GIS环境、要处理大范围的研究者STAC批处理路线适合要写脚本做批量下载、做时间序列或可复现研究的用户。路线适合场景需要条件单次范围网页下载器小范围临时获取浏览器网络中小范围ArcGIS Pro导出大范围成片获取ArcGIS Pro许可较大范围STAC/Python批量下载/科研流程Python环境网络灵活可整幅拉取我的建议是第一次接触这套数据先用网页下载器拿一块小区域摸清文件结构后续正式项目尽量走STAC因为它可脚本化方便以后做定时更新和多年份对比。2.2 坐标系概念别在这里翻车这里要特别敲一下黑板。网页下载器返回的GeoTIFF坐标系通常是WGS84地理坐标系或Web Mercator投影坐标系具体看服务端怎么导出。STAC分幅数据则是按UTM分带组织的不同分幅的投影可能不同。很多朋友拿到数据就扔进ArcGIS里算面积算出来的结果莫名其妙比别人少一块十有八九就是坐标系问题。核心原则其实只有一条经纬度坐标系只用来定位不拿来量算。要统计面积必须先把数据投影到一个等积或等距投影坐标系下比如UTM分带、Albers等积圆锥投影然后再做像元统计。这一点在后面的数据处理部分我会详细演示。你想想地球是个球“摊平”成地图的方式有一百种每种摊法面积变形都不一样所以千万不能拿着经纬度直接算平方公里。2.3 准备清单和账号问题网页下载器不需要ArcGIS登录也能跑不过我实测下来挂个ArcGIS Online账号会更稳有些大范围请求会要求登录。浏览器推荐Chrome、EdgeIE确实已经不行了。桌面端路线需要ArcGIS Pro 2.8以上QGIS 3.10以上也能连服务。Python路线只需要把pystac-client、rasterio装好再有一个能访问公开地理数据云服务的网络环境就行。对纯新手我的额外提醒只有一条在整个下载和处理流程里把“原始下载文件”和“处理产物”分开存两个文件夹。原始GeoTIFF只读不写所有裁剪、投影、切片操作都生成新文件。这样后面某个处理步骤出了问题随时能回到原始数据重新来不用重新排队下载。3. 实操全流程三个方法把数据拿到手3.1 网页版Land Cover Downloader一步步操作第一步打开Esri的Living Atlas页面在搜索框输入“Esri 2020 Land Cover”找到对应图层条目点进去后会跳到自带的可视化地图页面。地图打开后能看到全球分类图的配色和覆盖范围。部分版本会直接在工具栏里提供“Download”或“Land Cover Downloader”入口找不到也不用慌新版本入口位置经常微调认功能图标比记文字靠谱。第二步定位目标区域。我习惯在底图图层面板里打开影像底图先把透明度调到50%左右这样既能看清真实地貌又能确认分类产品的边界是否对齐。然后对目标区域的轮廓和范围做到心里有数。第三步框选范围。下载器用的是矩形框选工具按住鼠标左键在地图上拖拽即可。这个步骤看起来简单但我建议你把范围粒度控制得精细一点只框真正需要的区域不要贪大。原因有两个一是下载器对单次请求的覆盖面积有上限框太大系统直接拒绝二是同样大小的数据范围越大队列等待时间越长。实测下来几百到两三千平方公里级别的请求基本能在合理时间内返回再大就不好说了。第四步提交请求。确认矩形范围无误后点击提交按钮。部分界面会要求填邮箱填对了就等收邮件不填邮箱的版本会在页面上直接给下载链接。整个过程有点像自助打印机后台任务排队处理完链接就生成。第五步拿到链接后下载zip压缩包。解压后里面是GeoTIFF主文件旁边可能还有.aux.xml之类的辅助文件。这些辅助文件记录了坐标信息和像元统计别手欠删掉。这里有一个关键细节下载链接一般有时效性有的版本只保留24小时过期只能重新提交。我的习惯是链接一拿到就立即下载下载完确认压缩包大小正常再关页面。数据量大的时候别在公司公用电脑上下到一半就关机尽量用稳定网络一次下完。提示网页下载器适合临时取数据它只支持矩形框选不支持按多边形自定义范围。如果你的研究区是狭长河流谷地或者行政区边界奇形怪状还是老实走影像服务导出或者下载后自己裁剪。3.2 用ArcGIS Pro影像服务导出更大范围如果手里已经装了ArcGIS Pro另一条路更顺直接在Pro里加载Esri 2020 Land Cover的影像服务图层。在功能区选择“添加数据”从Living Atlas里搜索“Esri 2020 Land Cover”双击添加。图层加载后会显示为全球分类栅格。接下来有两个常用操作。第一个是“导出栅格”右键图层选择“数据-导出栅格”设置输出格式为TIFF、像元大小10米、压缩方式选LZW输出位置选本地。第二个是“按掩膜提取”先把AOI做成一个面要素图层用“按掩膜提取”工具把影像裁到研究区范围。这两个操作都能保留原始分类编码处理完再做投影转换。我更推荐“按掩膜提取”因为如果一个项目包含多个维度的数据这一步能顺便把研究区的分析基准统一起来。导出之前记得把地图的空间参考设置成最终需要的投影坐标系比如研究区在华北直接设成UTM 50N。这样导出结果已经是投影坐标系省去后面重投影的麻烦。3.3 进阶PythonSTAC批量下载全球分幅数据如果要做完整行政区甚至多省范围的数据网页下载器和Pro都会嫌烦。这时候直接上STAC接口拉数据体验完全不一样。微软Planetary Computer上有一个公开集合名字叫io-lulc对应的就是Esri和Impact Observatory这套10米土地覆盖产品。它的数据组织方式是全世界按100公里见方的网格分幅每个分幅是一个云优化GeoTIFF存在对象存储里。用STAC按bbox和时间范围搜索就能拿到对应分幅的下载地址。下面这个Python片段是我常用的搜索逻辑import pystac_client import planetary_computer as pc catalog pystac_client.Client.open( https://planetarycomputer.microsoft.com/api/stac/v1 ) search catalog.search( collections[io-lulc], bbox[116.0, 39.5, 117.5, 41.0], datetime2020-01-01/2020-12-31, ) items search.item_collection() print(命中分幅数:, len(items)) for item in items: asset item.assets[data] href pc.sign(asset.href) print(item.id, href)拿到签名后的URL用GDAL或者rasterio下载、裁剪都可以。比如用GDAL一条命令裁到目标范围gdal_translate -projwin 116.2 40.8 117.0 40.0 \ -of GTiff signed_url 2020_landcover_local.tif这里解释一下为什么需要签名Planetary Computer的对象存储要求临时访问凭证pc.sign方法就是帮你自动把凭证附加到URL上。代码跑通之后全世界的分幅数据都能按需拉取。我拿2017到2022年多个年份的全国对比数据就是走这套流程一次跑完不用人盯。注意STAC搜索按时间过滤查询2020年数据时要把datetime参数设置在2020年份内。io-lulc集合里不同年份对应不同生产日期换年份时记得改时间范围。4. 数据到手之后先检查再分析4.1 第一件事永远是检查我从不会下载完就直接丢进分析流程。拿到GeoTIFF先用rasterio打开看一眼元数据import rasterio with rasterio.open(2020_landcover_local.tif) as src: print(src.profile) print(坐标系:, src.crs) print(波段数:, src.count) print(像元大小:, src.res) print(范围:, src.bounds)这一步能确认三件事坐标系对不对、像元大小是不是10米、范围是否和框选一致。然后再读一次像元值看类别编码是否在合理区间。因为分类编码是整数直方图应该是一堆离散峰值不会出现连续过渡值。如果发现某些值异常比如大范围出现0或255以外的极端值先看是不是nodata处理的问题。这种问题多半出现在跨分幅拼接的边缘处理方式是把它统一设成有效类别范围外的掩膜值。还有一个新手特别容易踩的坑在ArcGIS或QGIS里打开栅格默认用连续色带渲染分类影像看起来像一张模糊的“卫星图”蓝色的树、绿色的水跟实际对不上。解决办法是切换到唯一值渲染Unique Values字段选Value再配上官方配色。别嫌麻烦这一步能直接避免后续读数据时的认知混乱。4.2 重投影、裁剪与重采样的坑分类栅格最忌讳用双线性或三次卷积做重采样因为它们会在类别边界上生成中间值比如3和5之间冒出个4直接污染统计结果。所有对分类数据做重投影或裁剪的操作一律使用最近邻法Nearest或众数法Mode像元值才不会被“插值”成不存在的类别。ArcGIS Pro的Project Raster工具里重采样方法选NEARESTQGIS的Warp对话框里重采样方法也选Nearest Neighbour。如果用GDAL命令行记得写-r neargdalwarp -t_srs EPSG:32650 -r near -tr 10 10 -te 116.2 40.0 117.0 40.8 -of GTiff input.tif output_utm.tif命令里-t_srs指定目标投影-tr指定输出像元大小-te指定输出范围。这样既能换投影又能顺手裁剪。如果一个区域跨越两个UTM分带比如华北到内蒙古交界直接用单个分带会导致边缘面积误差变大这种情况建议改用Albers等积投影或者分带处理后再合并统计结果。另外有个小习惯我很推荐每次重投影后把输出文件命名为“项目名_2020_lc_投影.tif”不要随手用“新建栅格.tif”这种名字。等你一周后回来写报告文件命名里的信息量能救命。4.3 面积统计与误差控制分类数据最常用的下游分析就是统计各类别面积占比。很多人直接拿Web Mercator投影去算面积结果高纬度地区误差大得离谱。标准做法是先投影到等积投影再做像元计数。用rasterio统计每个类的像元数并换算面积可以参考下面的代码import numpy as np import rasterio with rasterio.open(2020_lc_utm.tif) as src: data src.read(1) nodata src.nodata px_w, px_h src.res pixel_area px_w * px_h codes, counts np.unique(data[data ! nodata], return_countsTrue) for code, count in zip(codes, counts): area_m2 count * pixel_area print(f类别 {code}: {count} 个像元, 面积 {area_m2 / 1e6:.2f} 平方公里)一个像元在10米分辨率源数据里就是100平方米。目标投影后像元大小可能略有变化所以代码里用src.res动态获取而不是写死100这样最稳。统计结果的误差控制主要在两个方面。一是数据本身的分类误差这套全球产品公开文档给出的总体精度大约在85%上下不同区域表现差异很大正式报告里建议注明数据来源与精度范围。二是分析处理的误差比如重采样方法选错、投影方式不当、裁剪边界留缝等这些属于能通过规范操作避免的工程误差。我的习惯是任何结论出来之前在AOI内随机布30到50个验证点对照高分影像逐个检查类别命中的比例再下结论。这个方法土但非常好用。5. 常见问题与排查技巧实录5.1 下载链接失效任务一直转圈第一时间看邮箱垃圾箱很多版本的处理邮件会被误判。如果没有邮件回到网页刷新任务状态部分版本要求你在同一浏览器里等结果。如果任务一直pending多半是服务器队列繁忙直接把范围缩小三分之一重新提交等待时间会明显缩短。还有一次我遇到本地网络把下载域名限制住的情况换个网络环境比如手机热点秒下。5.2 系统提示范围过大这是网页下载器的硬上限。解决办法有三种第一缩小框选面积分多个小块下载第二改用ArcGIS Pro的影像服务导出第三用STAC按分幅下载然后本地镶嵌。第三种方式对全国尺度的分析几乎是标配。镶嵌时注意先统一坐标系再用gdal_merge.py或rasterio.merge拼接重叠区选择“first”或“mode”策略避免边缘错位出现条纹。5.3 分类结果有明显错分最常见两种。一是建成区和裸地在干燥地区混分比如干旱区的城市建成区色调跟周围裸土特别接近模型容易把城市边缘漏掉。二是水域周边像大河入海口、滩涂地带受潮汐和悬浮泥沙影响水体边缘经常混入植被或裸地。对策简单说宏观尺度用它没问题到了乡镇、县级的精细尺度必须叠加高分影像做人工判读修正。网上也有人分享各个区域的经验验证结果参考前记得查一下发布年份和数据版本。5.4 常见问题速查表现象可能原因处理建议下载链接24小时后失效链接有效期限制及时下载失效后重新提交打开的栅格一片黑连续色带渲染了分类编码切换到唯一值渲染面积统计明显偏大用了地理坐标或Web Mercator投影到等积或UTM后再统计类别出现小数或中间值用了双线性重采样改用最近邻或众数重采样半小时后还在排队请求范围偏大或服务器繁忙缩小范围或换下载路线跨分幅出现接缝原分幅处理差异掩膜nodata或用镶嵌策略覆盖分类图和底图错位坐标系不一致检查源数据投影重新投影对齐5.5 一点额外的避坑心得最后补三条我自己总结的操作纪律。第一所有下载都走正规接口别在来路不明的第三方网站找所谓“整合包”那些往往带着过期数据甚至更糟的东西。第二正式项目里建立“数据版本下载日期坐标系”三个字段的元数据记录表随手记一下后面写方法学部分能省很多时间。第三条特别想强调不要迷信10米分辨率就一定比30米强。分辨率只决定几何细节分类精度受训练样本和地物复杂性限制。在破碎的耕地、云多的山区10米产品的分类噪声可能反而比30米产品大。这类场景多套数据交叉验证才是正确姿势。6. 踩过几次坑之后留下的私人建议我踩过几次坑之后最想跟大家说的是工具这种东西十分钟就能学会真正拉开差距的还是流程纪律。我自己现在拿到任何全球尺度栅格数据第一反应永远是查坐标系、查重采样方式、查有效像元范围这习惯就是被Esri这套数据硬生生练出来的。去年做华南某省份的森林变化分析靠网页下载器快速取小样、STAC批量拉全境数据最后再用高分影像验证分类精度整个流程两三天就走完了。如果你正准备接触这套数据建议把“检查-投影-验证-记录”这四个环节固化到流程里而不是每次临时抱佛脚。这样下来任何类似的大规模栅格数据你都能快速上手不用把时间耗在无谓的排错上。
返回列表