简介:本资源为2017年广东省10米精度土地利用/覆盖专题数据集,面向地理信息、遥感、城乡规划及生态研究领域的科研人员与高校师生,支撑区域土地利用变化分析、城市扩张监测、生态环境评估等空间分析任务。数据基于Sentinel-2影像,采用深度学习方法生成,涵盖耕地、林地、草地、湿地、水体、不透水面、裸地、雪/冰等10类地表覆盖类型,并已完成WGS84地理坐标系重投影及广东省下辖各地级市行政边界裁剪,每个城市均提供独立TIF栅格文件及配套属性支持文件。压缩包共147个文件,含21组完整数据单元(每组含tif主数据、xml元数据、tfw地理配准、cpg/dbf属性编码、xlsx统计表及png预览图),总大小58.09MB,结构规范、开箱即用。目前已有340人学习下载,用户可直接加载至ArcGIS/QGIS开展分类统计、面积计算、叠加分析及制图输出,无需额外解译或格式转换。
1. 这不是一张普通遥感图:10米精度广东省土地利用数据包,直接支撑城市更新、生态评估与国土空间规划落地
你手头这个.rar文件里装的,不是某张静态地图截图,而是一套可直接加载进 ArcGIS/QGIS 的栅格数据集——2017年广东省21个地级市(含佛山、深圳、广州等)的10米分辨率土地利用/覆盖分类结果。它基于Sentinel-2影像+深度学习模型生成,共10类语义标签(耕地、林地、水体、不透水面、裸地等),且已完成WGS84地理坐标系统一与市级行政边界裁剪。这意味着:你打开QGIS加载任意一个*.tif文件,就能立刻看到佛山市某条街道周边是耕地还是建成区;用Zonal Statistics统计东莞某镇的林地占比,5分钟内出结果;叠加2023年卫星影像做变化检测,起点数据已就位。它不适用于宏观省域趋势分析(分辨率太高反而拖慢),但对城市更新项目选址、生态红线校核、自然资源资产清查这类需“见地块、辨地类”的实操场景,是少有的开箱即用型基础底图。
2. 数据结构解析与坐标系验证:为什么必须先确认.vat.cpg和 WGS84 投影参数
2.1 理解.tif.vat.cpg文件的真实作用:属性表编码与分类映射枢纽
文件列表中每个.tif后缀都跟着.vat.cpg,这不是冗余文件,而是关键元数据载体。.vat是 ESRI 栅格属性表(Value Attribute Table)的二进制存储格式,.cpg则明确定义其字符编码(通常为UTF-8)。该属性表将每个像元值(如1,2,3…)映射到具体地类名称(如1=耕地,2=林地,3=草地),并包含面积统计、颜色渲染方案等信息。若缺失.vat.cpg,QGIS/ArcGIS 加载时会显示为纯数值栅格,无法自动识别地类含义,后续重分类或制图将失去语义基础。
提示:
.cpg文件内容仅为单行文本(如UTF-8),可用记事本打开验证;若为ISO-8859-1编码,中文地类名将乱码,需用文本编辑器另存为 UTF-8 格式并替换原文件。
2.2 验证 WGS84 坐标系是否真实生效:用gdalinfo检查 GEOGCS 参数
官方说明称已重投影至 WGS84,但实际数据常存在“声明坐标系”与“真实几何”不一致的问题。必须用 GDAL 工具链验证:
gdalinfo "2017年ESRI土地覆盖_广东省_广州市.tif"重点关注输出中的Coordinate System区块:
Coordinate System is: GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]] Origin = (112.500000000000000,23.999999999999996) Pixel Size = (0.000083333333333,-0.000083333333333)- ✅ 正确标志:
AUTHORITY["EPSG","4326"]明确存在,且Pixel Size为经纬度单位(约 0.0000833° ≈ 10 米,符合声明) - ❌ 风险信号:若显示
PROJCS["WGS 84 / Pseudo-Mercator"或EPSG:3857,说明仍为 Web Mercator,需强制重投影 - ⚠️ 注意:
Origin值应落在广东范围内(东经109°–117°,北纬20°–25°),若出现180或负值,表明地理范围错位
2.3 为什么不用gdalsrsinfo?——直接读取.prj文件更可靠
虽然gdalsrsinfo可解析坐标系,但.prj文件可能被误写或未更新。更稳妥做法是直接检查同目录下是否存在.prj文件,并用文本编辑器打开:
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]]- 若内容含
GEOGCS+WGS_1984+Degree,则确认为地理坐标系 - 若含
PROJCS+Mercator+Meter,则为投影坐标系,需用gdalwarp转换
2.3.1 强制重投影为 WGS84 的标准命令(当验证失败时)
gdalwarp -s_srs EPSG:3857 -t_srs EPSG:4326 \ -r near \ -co "COMPRESS=LZW" \ "2017年ESRI土地覆盖_广东省_广州市.tif" \ "广州市_WGS84.tif"-s_srs EPSG:3857:显式声明源坐标系为 Web Mercator(常见错误源)-t_srs EPSG:4326:目标为 WGS84 地理坐标系-r near:使用最近邻重采样,避免分类值被插值污染(土地利用数据严禁双线性/立方卷积)-co "COMPRESS=LZW":启用无损压缩,减小文件体积(原始 TIFF 通常未压缩)
注意:重投影后务必再次运行
gdalinfo验证AUTHORITY["EPSG","4326"]是否出现,且Pixel Size单位变为度(°)而非米(m)。
3. QGIS 中加载与可视化:从栅格渲染到地类统计的完整工作流
3.1 加载.tif并自动关联.vat属性表:确保地类名称正确显示
在 QGIS 3.22+ 中,直接拖入.tif文件通常能自动识别.vat表。若未生效,手动操作如下:
- 右键图层 →Properties→Symbology
- 渲染类型选择Paletted/Unique values
- 点击Classify按钮 → 观察 Value 列是否显示
1,2,3…,Label 列是否对应耕地,林地,草地等中文名 - 若 Label 为空或为数字,点击Load classes from raster attribute table(需确保
.vat文件与.tif同名同目录)
提示:若
.vat未被识别,可手动创建分类:点击Add values manually,按官方分类表逐条输入 Value(1–10)与 Label(如1:耕地),并设置颜色(建议采用 NDVI 色阶:耕地绿、林地深绿、水体蓝、不透水面灰)。
3.2 按市级行政边界裁剪:用Extract by Mask获取精确辖区范围
原始数据虽已按市级裁剪,但边界可能为粗略矩形框。为获取严格依照行政边界的矢量范围,需执行掩膜提取:
- 下载最新版《广东省行政区划矢量数据》(推荐国家地理信息公共服务平台
www.tianditu.gov.cn的 2017 年版 Shapefile) - 将
guangdong_city.shp加载进 QGIS,确保其坐标系也为 EPSG:4326(右键图层 →Set Layer CRS→EPSG:4326) - 打开Processing Toolbox→ 搜索
Extract by mask - 参数设置:
- Input layer:
2017年ESRI土地覆盖_广东省_广州市.tif - Mask layer:
guangdong_city.shp(选中广州市多边形) - Output:
广州市_精确裁剪.tif
- Input layer:
3.2.1 关键参数说明与避坑点
| 参数 | 推荐值 | 说明 |
|---|---|---|
No data value | 0或255 | 若原始数据用0表示无效区,此处填0;否则留空 |
Match extent | ✅ 勾选 | 确保输出范围严格匹配矢量边界,而非栅格原始范围 |
Data type | Byte | 输入为整型分类值(1–10),无需 Float32,节省空间 |
注意:若裁剪后出现黑色锯齿边缘,说明矢量边界与栅格像元未对齐。此时在
Extract by mask高级参数中勾选Use input extent as output extent,再手动用Raster → Alignment → Align Rasters将裁剪结果与原始栅格像元中心对齐。
3.3 统计各市地类面积:用Zonal Statistics生成市级汇总表
国土空间规划最常问:“某市林地占总面积多少?”——这需要栅格与矢量的交集统计:
- 确保
guangdong_city.shp图层已加载,且属性表含唯一标识字段(如CITY_NAME) - Processing Toolbox→
Zonal statistics - 参数设置:
- Raster layer:
广州市_精确裁剪.tif - Vector layer:
guangdown_city.shp - Column prefix:
LU_(生成字段前缀,如LU_mean,LU_count) - Statistics to calculate: ✅
Count, ✅Sum(Count统计像元总数,Sum统计各类像元数)
- Raster layer:
3.3.1 输出字段解读与面积换算公式
运行后,guangdong_city.shp属性表新增字段:
LU_count: 该市总像元数LU_sum: 所有像元值之和(无意义,因分类值非连续数值)- 实际需用
Raster layer statistics单独计算:右键广州市_精确裁剪.tif→Properties→Information→ 查看STATISTICS_MINIMUM至STATISTICS_MAXIMUM,确认值域为1–10
真正有效的统计需用Raster analysis → Polygonize (raster to vector)+Join attributes by location:
# 先将栅格转为面矢量(保留分类值) gdal_polygonize.py "广州市_精确裁剪.tif" -f "ESRI Shapefile" "广州市_地类面.shp" -8 # 再与市级边界叠加统计(QGIS 中用 `Join attributes by location (summary)`) # 输出表含:CITY_NAME, DN(地类代码), count(该类像元数)最终面积 =count × 10 × 10(平方米),因分辨率为 10 米,单像元面积为 100 m²。
4. 深度应用:基于土地利用数据的三个高价值实战场景
4.1 城市建成区扩张分析:对比 2017 与 2023 年 Sentinel-2 影像
不透水面(代码8)是建成区核心指标。通过时间序列对比,可量化城市蔓延强度:
- 下载 2023 年 Sentinel-2 L2A 级影像(
sentinelsat库或 ESA Copernicus Open Access Hub) - 用
sen2cor处理得到 BOA 反射率,计算 NDVI 与 NDBI:# Python + Rasterio 示例 import rasterio with rasterio.open('S2_2023_B08.tif') as b8, \ rasterio.open('S2_2023_B04.tif') as b4, \ rasterio.open('S2_2023_B11.tif') as b11: nir = b8.read(1).astype('float32') red = b4.read(1).astype('float32') swir = b11.read(1).astype('float32') ndvi = (nir - red) / (nir + red + 1e-8) # 防止除零 ndbi = (swir - nir) / (swir + nir + 1e-8) - 设定阈值提取不透水面:
ndbi > 0.1且ndvi < 0.2→ 二值掩膜 - 与 2017 年
LU_8(不透水面)栅格做布尔运算:# gdal_calc.py 计算新增建成区 gdal_calc.py -A "2023_ndbi_mask.tif" -B "2017_LU8.tif" \ --outfile="新增建成区.tif" \ --calc="A*(1-B)" \ --NoDataValue=0
提示:2017 年数据中
不透水面已是深度学习识别结果,比 NDVI/NDBI 阈值法更准确;但 2023 年无同类产品,故用光谱指数辅助。二者结合,既利用历史高精度标签,又延伸时间维度。
4.2 生态廊道连通性评估:林地与湿地斑块网络分析
林地(2)与湿地(5)是生态廊道关键组分。需识别斑块并计算连通性指数:
- 用
Raster calculator提取林地+湿地:("广州市_精确裁剪@1" = 2) OR ("广州市_精确裁剪@1" = 5)→生态用地.tif - 转为矢量面:
Raster → Conversion → Polygonize - 在
Processing Toolbox中运行GRASS GIS → v.clean:- Tool:
rmarea(删除小于 1 公顷的碎斑) - Threshold:
10000(平方米)
- Tool:
- 计算斑块连接度:
Network → Network analysis → Shortest path (point to point),以各斑块质心为节点,欧式距离为权重,构建最小生成树
4.2.1 关键输出指标与规划意义
| 指标 | 计算方式 | 规划用途 |
|---|---|---|
| 斑块数量 | v.db.univar map=生态斑块 column=count | 反映生境破碎化程度 |
| 平均斑块面积 | v.db.univar map=生态斑块 column=area | 评估核心栖息地规模 |
| 最短路径总长 | GRASS 输出的 MST 边长和 | 衡量廊道建设优先级(总长越短,连通效率越高) |
4.3 国土变更调查外业核查:将土地利用图斑导出为 KML 供手机实地验证
外业人员需在手机端查看待核查图斑。QGIS 导出 KML 需注意坐标系转换:
- 将
生态用地.shp加载 → 右键 →Export → Save Features As… - Format:
KML - CRS:
EPSG:4326(KML 强制要求 WGS84) - Geometry:
Polygon(勿选Point) - Name field: 选择
DN(地类代码)或自定义字段LANDUSE_TYPE
注意:QGIS 默认导出 KML 不含属性表。若需在手机端显示地类名称,须在导出前用
Field Calculator创建新字段:CASE WHEN "DN" = 2 THEN '林地' WHEN "DN" = 5 THEN '湿地' ELSE '其他' END
并将该字段设为 KML 的Name字段(导出对话框中Layer options→NameField选此字段)。
5. 常见问题排查与性能优化技巧:让 10 米数据在普通笔记本上流畅运行
5.1 QGIS 加载卡顿?用Build Pyramids和Overviews预生成缩略图
10 米分辨率全广东省数据单文件超 2GB,QGIS 缩放时实时重采样极易卡死。解决方案是预生成金字塔:
- 右键图层 →
Properties→Pyramids - 勾选
Generate pyramids - Resampling method:
Average(分类数据禁用Bilinear) - Overview levels:
2,4,8,16(自动生成 4 级缩略图) - 点击
Build pyramids
提示:此操作本质是调用
gdaladdo命令,等效于:gdaladdo -r average "广州市_精确裁剪.tif" 2 4 8 16生成的
.ovr文件与.tif同目录,QGIS 自动识别。首次加载稍慢(因生成),后续缩放速度提升 5 倍以上。
5.2 分类值显示异常?检查 NoData 值与渲染范围
若图中大片区域显示为灰色(NoData),但gdalinfo显示NoData Value=none,说明数据本身含无效值未声明:
- 用
Raster → Analysis → Information查看STATISTICS_MINIMUM/STATISTICS_MAXIMUM - 若
MIN=0,而0不在 1–10 分类中,则0为 NoData - 在
Symbology中设置No data value: 0,并勾选Render nodata as transparent
5.2.1 快速批量修复所有.tif的 NoData 值
# Linux/macOS 批处理(Windows 用 forfiles) for f in *.tif; do gdal_edit.py -a_nodata 0 "$f" done5.3 如何快速验证地类分布合理性?用Raster layer statistics对比全省均值
不同地市地类占比应符合地理常识。例如:
- 汕头、湛江沿海市:水体(
6)占比应 >15% - 肇庆、清远山区市:林地(
2)占比应 >50% - 东莞、深圳:不透水面(
8)占比应 >40%
在 QGIS 中:
- 加载任一市
.tif→Properties→Information→Statistics - 展开
Band 1→ 查看STATISTICS_HISTOMAX(直方图最大频次)对应的Value - 对比
STATISTICS_HISTOMAX数值:若Value=8且STATISTICS_HISTOMAX > 500000,则不透水面占优,符合深圳特征
技巧:用
gdalinfo -stats批量导出所有市统计值,再用 Excel 排序,一眼识别异常值(如某市林地频次为 0,说明数据裁剪错误)。
本文还有配套的精品资源,点击获取