我有需要网格化的 xyz 文本文件。对于每个 xyz 文件,我都有关于原点坐标单元大小和行/列数的信息。但是,xyz 文件中缺少没有 z 值的记录,因此仅从当前记录创建网格会因为缺少值而失败。所以我尝试了这个:
nxyz = np.loadtxt(infile,delimiter=",",skiprows=1)
ncols = 4781
nrows = 4405
xllcorner = 682373.533843
yllcorner = 205266.898604
cellsize = 1.25
grid = np.zeros((nrows,ncols))
for item in nxyz:
idx = (item[0]-xllcorner)/cellsize
idy = (item[1]-yllcorner)/cellsize
grid[idy,idx] = item[2]
outfile = open(r"e:\test\myrasout.txt","w")
np.savetxt(outfile,grid[::-1], fmt="%.2f",delimiter= " ")
outfile.close()
这让我得到了 xyz 文件中没有记录的零网格。它适用于较小的文件,但对于 290Mb 大小的文件(约 8900000 条记录)出现内存不足错误。这不是我必须处理的最大文件。
因此,我尝试了 Joe Kington 的另一种(迭代)方法,我在这里找到了加载 xyz 文件的方法。这适用于 290MB 文件,但在下一个更大的文件(533MB,~15600000 条记录)上出现内存不足错误而失败。
如何在不耗尽内存的情况下正确网格化这些较大的文件(考虑丢失的记录)?