情景:在gee上下载的物候数据中,EOS波段比SOS波段多了两个像素,这应该就属于系统误差之类的问题了。因此,本文将识别出额外的这两个像素的位置,而后将SOS波段对应位置的数值去除,保证数据的一致性。
上代码:
#step1 读取两幅相似影像为二维数组,并分别读取非nan位置
EOS_tuple = np.where(~np.isnan(EOS)) #表示位置的二维元组
SOS_tuple = np.where(~np.isnan(SOS))
#转array
EOS = np.array(EOS_tuple)#形状为(2, EOS中像素个数)
SOS = np.array(SOS_tuple)#形状为(2, SOS中像素个数)
#step2
a = EOS(像素数多的影像)
b = SOS(像素数少的影像)
#zip(*a)和zip(*b)将坐标的两个部分(x和y)打包成配对
a_str = ["{}_{}".format(x, y) for x, y in zip(*a)]
b_str = ["{}_{}".format(x, y) for x, y in zip(*b)]
# 将数据格式转换为字符串,而后找出两个数组的差异
diff = set(b_str) - set(a_str)
# 输出相差像素的位置
print("Coordinates in b that are not in a:")
for coord_str in diff:
x, y = map(int, coord_str.split('_'))
print("({},{})".format(x, y))
撒花!