我有需要网格化的xyz文本文件.对于每个xyz文件,我都有有关原点坐标的信息,这些信息包括单元格大小和行数/列数.但是,xyz文件中缺少z值的记录丢失了,因此由于缺少这些值,仅从当前记录创建网格会失败.所以我尝试了这个:...

我有需要网格化的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的另一种(迭代)方法,发现here用于加载xyz文件.这适用于290MB的文件,但由于下一个较大的文件(533MB,约15600000条记录)而出现内存不足错误,因此失败.
如何在不耗尽内存的情况下正确地对这些较大的文件进行网格处理(考虑丢失的记录)?
解决方法:
根据评论,我将代码更改为
ncols = 4781
nrows = 4405
xllcorner = 682373.533843
yllcorner = 205266.898604
cellsize = 1.25
grid = np.zeros((nrows,ncols))
with open(file) as f:
for line in f:
item = line.split() # fill with whatever is separating the values
idx = (item[0]-xllcorner)/cellsize
idy = (item[1]-yllcorner)/cellsize
#...
本文标题为:python-如何在缺少内存的情况下将缺少记录的大型xyz文件网格化


基础教程推荐
- 各种相似度计算的python实现 2023-09-04
- Python数据提取-lxml模块 2023-08-11
- Python 制作子弹图 2023-08-08
- Ubuntu在当前用户目录下安装python 包 2023-09-03
- Python 多进程multiprocessing 2023-09-04
- Python requirements.txt安装用法介绍 2023-10-08
- 如果列表后没有足够的连续内存,CPython处理列表的方式如何扩展? 2023-11-11
- CentOS7.4 安装Python3.5 2023-09-03
- python-没有空闲子进程连接 2023-11-10
- python分析inkscape路径数据方案简单介绍 2022-10-20