不同CRS的Landsat8与真值栅格对应像素匹配方法咨询
解决Landsat影像与真值影像的像素匹配问题
首先明确:你用raster.transform * (x, y)计算像素对应的地表坐标这个方法是对的,问题出在你转换真值影像CRS的时候,没有和Landsat的像素网格对齐,导致两者的"像素格子"不重合,自然坐标对应会出现小数,没法直接匹配。
为什么会出现这个问题?
你转换真值影像时用的calculate_default_transform函数,是根据原影像的经纬度范围,自动计算目标CRS(EPSG:32610)下的分辨率和尺寸,但它完全没考虑要匹配Landsat的30米分辨率和现成的像素网格。所以转换后的真值影像分辨率是~32.8米,和Landsat的30米对不上,两者的像素排列就像两个错位的棋盘,每个像素的位置自然没法一一对应。
两种解决办法,按需选择:
方法1:重新投影真值影像,强制对齐到Landsat的网格
这是最直接的办法,让真值影像的像素网格和Landsat完全一致,这样两者的(x,y)像素就能直接对应同一地表区域。步骤如下:
- 直接复用Landsat影像的
transform、width、height作为目标参数,不用再调用calculate_default_transform - 重写投影代码:
import rasterio from rasterio.warp import reproject, Resampling # 打开Landsat影像和原真值影像 with rasterio.open('landsat.tif') as raster, rasterio.open('original_labels.tif') as labels: # 直接用Landsat的元数据作为目标参数,保证网格对齐 kwargs = labels.meta.copy() kwargs.update({ 'crs': raster.crs, 'transform': raster.transform, 'width': raster.width, 'height': raster.height, 'nodata': labels.nodata }) with rasterio.open('aligned_groundtruth.tif', 'w', **kwargs) as dst: reproject( source=rasterio.band(labels, 1), destination=rasterio.band(dst, 1), src_transform=labels.transform, src_crs=labels.crs, dst_transform=raster.transform, dst_crs=raster.crs, resampling=Resampling.nearest # 类别数据必须用最近邻采样,避免类别变模糊 )
方法2:不重投影,通过坐标转换查找对应像素
如果不想修改真值影像,也可以实时计算两个影像之间的像素对应关系:
已知Landsat的(x,y),找真值影像的对应像素:
- 用Landsat的
transform算出这个像素的地表坐标(UTM米制坐标) - 用真值影像的
transform的逆变换(~labels.transform)把地表坐标转成真值影像的像素坐标(会得到小数,比如(123.4, 567.8)) - 因为是类别数据,直接取最近的整数像素即可
示例代码:
# 假设landsat_x, landsat_y是Landsat的像素坐标 landsat_coord = raster.transform * (landsat_x, landsat_y) # 逆变换得到真值影像的像素坐标 label_x, label_y = ~labels.transform * landsat_coord # 取最近邻像素 label_x = round(label_x) label_y = round(label_y)- 用Landsat的
已知真值影像的(x,y),找Landsat的对应像素:
反过来操作就行,用真值影像的transform算地表坐标,再用Landsat的逆变换转成像素坐标,再取整。
补充小科普(帮你理解)
- CRS:就是坐标系统,比如EPSG:4326是经纬度(你原来的真值影像用的),EPSG:32610是UTM坐标(用米做单位,Landsat用的),转换CRS就是把一种坐标转成另一种。
- transform矩阵:简单说就是"像素坐标转地表坐标的公式",每个影像都有自己的,因为它们的像素大小、位置都不一样。
- 分辨率:每个像素代表的地面大小,Landsat是30米,就是一个像素对应地面30×30米的正方形。
内容的提问来源于stack exchange,提问作者leo
相关产品推荐
相关产品推荐

