グリッド化する必要のある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レコード)のファイルでメモリ不足エラーが発生しました。そして、これは私が処理しなければならない最大のファイルではありません。
そこで、xyzファイルをロードするためにここで見つけたJoe Kingtonによる別の(反復)アプローチを試しました。これは290MBのファイルでは機能しましたが、次に大きいファイル(533MB、〜15600000レコード)でメモリ不足エラーが発生して失敗しました。
メモリを使い果たすことなく、これらの大きなファイルを正しくグリッド化するにはどうすればよいですか(欠落しているレコードを考慮に入れて)?