我从350000(20kb)ascii光栅文件中提取150个不同的单元格值。我当前的代码可以处理来自100个ascii文件的150个单元格值,但是在完整的数据集上运行时非常慢。在
我还在学习python,有没有明显的效率低下?或者建议改进下面的代码。在
我尝试过在第二个函数中关闭'dat'文件;没有任何改进。在dat = None
第一:我有一个函数,它从笛卡尔网格返回行和列的位置。在
^{pr2}$
第二个:一个函数,我在for循环中向它传递150个'id'、'x'和'y'值的列表。第一个函数在内部调用,用于提取附加到新列表的单元格值。我还有一个文件列表“asc_list”和“date_list”中对应的时间。请忽略count/enumerate,因为我以后使用这个;除非它妨碍效率。在def asc2series(id, x, y):
#count = 1
ls_id = []
ls_p = []
ls_d = []
for n, (asc,date) in enumerate(zip(asc, date_list)):
dat = gdal.Open(asc_list)
gt = dat.GetGeoTransform()
pixel, line = world2Pixel(gt, east, nort)
band = dat.GetRasterBand(1)
#dat = None
value = band.ReadAsArray(pixel, line, 1, 1)[0, 0]
ls_id.append(id)
ls_p.append(value)
ls_d.append(date)
非常感谢