有没有小伙伴像我一样,插值出来,在arcgis里是这个鬼样子。。。
数值:范围0-255,不对!
长相:长的像个发霉盒子蛋糕,更不对!
文件大小:0 K !
问遍了各路b站、CSDN博主大佬都木有合适的解答。。。
一个偶然的瞬间,我把之前处理的,过了大约半小时后的,准备删除的数据拉到arcgis里没想过就可以正确显示!
大家有没有发现anuspline插值运行速度很快,即使是插很多个面的时候,但是生成文件是需要计算、读、写等过程的,是需要时间的,尤其是在很多面的时候。
所以你以为的cmd是👇这样就表示运行完了吗?
才不是呢!
后面才发现,它自己运行完,会自己退出的。所以,我们一定不要自己关了它!!!
为了验证我的说法,我用gdal读取各个阶段的结果文件(.grd),代码如下:
import gdal
import numpy as np
# 读遥感数据
class Grid:
# 读取图像文件
def read_img(self, filename):
data = gdal.Open(filename) # 打开文件
im_width = data.RasterXSize # 读取图像行数
im_height = data.RasterYSize # 读取图像列数
im_geotrans = data.GetGeoTransform()
# 仿射矩阵,左上角像素的大地坐标和像素分辨率。
# 共有六个参数,分表代表左上角x坐标;东西方向上图像的分辨率;如果北边朝上,地图的旋转角度,0表示图像的行与x轴平行;左上角y坐标;
# 如果北边朝上,地图的旋转角度,0表示图像的列与y轴平行;南北方向上地图的分辨率。
im_proj = data.GetProjection() # 地图投影信息
im_data = data.ReadAsArray(0, 0, im_width, im_height) # 此处读取整张图像
# ReadAsArray(<xoff>, <yoff>, <xsize>, <ysize>)
# 读出从(xoff,yoff)开始,大小为(xsize,ysize)的矩阵。
del data # 释放内存,如果不释放,在arcgis,envi中打开该图像时会显示文件被占用
return im_proj, im_geotrans, im_data
#主函数
a = Grid()
prj, geotrans, data = a.read_img(r'D:\interplotation_test\20220921\y1980.grd') # 读取数据
print(prj, geotrans, data, data.shape, sep='\n')#前三项对应im_proj, im_geotrans, im_data
①一开始生成运行结果是NONE;我就不贴图了大家自己验证哈
②再过一会儿(这个一会儿根据你插值文件的大小哈,越大“一会儿”的时间就越久)
结果就是这样:
导出csv,发现数字非常齐整的排列,我估计是还在写的过程,有大佬指导请指点~
③再再再后来(我500+个面好像20多分钟的样子),就是这样:
注:-9999是空值,导出csv可以看得出是想要是插值结果!
此时,再把图像加载到arcgis里就绝对行!
完结撒花!
彩蛋:
搞这个插值搞了很久,感谢以下三个博主,大家也可以看看
(82条消息) 气象 | 基于ANUSPLIN的气象数据插值过程_洛的地理研学的博客-CSDN博客_anusplin插值
Anuspline气象插值总结 - 知乎 (zhihu.com)
4.LAPGRD所需CMD文件编写_哔哩哔哩_bilibili