该数据来源是Esri公司基于10m哨兵影像数据,使用深度学习方法制作做的全球土地利用数据。该数据的数据精度总体精度为85%,混淆矩阵如下所示:
Esri全球土地利用数据的影像数据的分布如下所示:
但该数据只能分块进行下载,没有制作按区划数据进行归纳。因此本人下载了全球的728景影像,并利用2021年的全国行政区划数据对其进行批量裁剪,最后得到了全国各省、各市、各县的土地利用数据,最后使用镶嵌工具获得每一个地区对应的一张tif影像。
使用Python制作裁剪与镶嵌脚本,对各省数据进行归纳。其中制作流程图如下所示:
按照四至范围,选择覆盖了全国的分块影像数据,并将其放入同一个文件夹中。
使用rasterio模块读取tif,使用geopandas读取矢量的各个要素,并利用rasterio的clip函数对数据进行裁剪。裁剪脚本如下所示:
#引入模块包
import os
from osgeo import gdal, gdalconst
import rasterio as rio
import rasterio.mask
import rasterio
from tqdm import tqdm
def Land_Cover(Mask_PATH,Data_path,OutPut_path):
tifPaths_folder_SHENG = os.listdir(Mask_PATH)
for mask_path in tqdm(tifPaths_folder_SHENG):
try:
#省目录
Land_Cover_SHENG_PATH = os.path.join(mask_path, Mask_PATH)
#获得文件中的名字
SHENG_PATH=Land_Cover_SHENG_PATH+"\\\\"+mask_path+"\\\\"+mask_path+".shp"
#裁剪函数
City = gpd.read_file(SHENG_PATH)
Land_Cover = gpd.read_file(Data_path)
City=City.to_crs(Land_Cover .crs)
Sheng_Land_Cover= gpd.clip(Parking_shp,City)
mkdir(OutPut_path+mask_path+"_2017年土地利用数据_10米分辨率")
#保存文件SHP
save_Land_Cover_path = OutPut_path + mask_path + "\\\\" + mask_path +"土地利用数据"+ ".tif"
Sheng_Land_Cover.to_file(save_SHP_path)
except:
pass
经过裁剪函数获得的数据可能有几个裁剪得到的数据,可以使用gdal模块包的Warp函数对每一个区域的数据进行镶嵌,获得该地区的一张完整的土地利用tif影像数据。镶嵌脚本如下所示:
#引入模块包
import os
from osgeo import gdal, gdalconst
import rasterio as rio
import rasterio.mask
import rasterio
from tqdm import tqdm
def mosaic_tif(tifPaths_folder)#tifPaths_folder是输入文件的文件夹路径
# 循环目录
for path in tqdm(tifPaths_folder):
Land_Cover_SMALL_PATH = os.path.join(tifPath, path)
for (pathname, dirs, files) in os.walk(Land_Cover__SMALL_PATH):
son_Paths_file=files
# 如果影像数量大于一
if len(son_Paths_file) >= 2:
Land_Cover_SMALL_PATH2=Land_Cover_SMALL_PATH+"\\\\"
# 循环子目录,进行镶嵌
#循环同一个文件下的tif文件
inputFiles = []
for path_small in son_Paths_file:
# 每一个栅格的路径
son_Paths_PATH = os.path.join(Land_Cover_SMALL_PATH2, path_small)
#读取影像
inputrasfile = gdal.Open(son_Paths_PATH, gdal.GA_ReadOnly) # 读取影像
inputProj = inputrasfile.GetProjection() # 获取坐标系
inputFiles.append(inputrasfile) # 推入列表
options = gdal.WarpOptions(srcSRS=inputProj, # 输入坐标系
dstSRS=inputProj, # 输出坐标系
format='GTiff', # 图像格式
resampleAlg=gdalconst.GRIORA_NearestNeighbour, # 重采样算法,这里是双线性内插
dstNodata=Nodata, # 缺省值
cutlineLayer=outline, # 输出范围,这里可以是一个外轮廓shp数据
outputType=gdalconst.GDT_Int16) # 数据类型,这里是有符号32位整型
#输出文件名
outputfilePath ="输出文件夹"+"\\\\"+path+"_Land_Cover_"+"_10m分辨率_Esri数据集"+".tif"
#写栅格
gdal.Warp(outputfilePath, inputFiles, options=options) # 图像镶嵌
主要是将根据裁剪出来的文件移动到同名文件夹、为每一个文件添加说明文档以及行政区域数据。最后形成的文件夹如下所示:
由于工作量非常巨大,制作不易,使用我的台式机从下载、裁剪与镶嵌一共花费了2天时间。我将下载链接放在下方:
相关推文: 2017年全国各省10米分辨率的土地利用数据的制作与分享
引用:Karra, Kontgis, et al. “Global land use/land cover with Sentinel-2 and deep learning.” IGARSS 2021-2021 IEEE International Geoscience and Remote Sensing Symposium. IEEE, 2021.
公司名称: 8A-8A娱乐-注册登录商务站
手 机: 13800000000
电 话: 400-123-4567
邮 箱: admin@youweb.com
地 址: 广东省广州市天河区88号