更改使用 "gdal_translate -of XYZ" 创建的 csv 中的默认分隔符

Changing the default separator in csv created with "gdal_translate -of XYZ"

我有 100 个 .tiff 文件,并使用以下命令:

gdal_translate -of XYZ MCD13A2.t201624.006.global.1km_NDVI.O0.tif MCD13A2.t201624.006.global.1km_NDVI.O0.csv

这会生成一个 .csv 文件,但它是 space 分隔的,而不是逗号分隔的。

有没有人知道为什么会这样,或者有什么解决方案可以将这个 space 分隔的文件转换为逗号分隔的 .csv?

您可以简单地使用 CSV 模块:

import csv

with open(ur_infile) as fin, open(ur_outfile, 'w') as fout:
    o=csv.writer(fout)
    for line in fin:
        o.writerow(line.split())

它会自动读取带有 space 分隔符的 CSV 并使用逗号(默认)写入。

此外,您可以像这样指定分隔符:

csv.reader(csvfile, delimiter=' ')
csv.writer(csvfile, delimiter=',')

一位google search揭示了以下方法:

完成 xyz 转换后,您可以使用命令行实用程序 sed(假设您使用 linux):

sed 's/ /,/g' in.xyz > out.csv

由于您正在创建 100 个 csv 文件,您可能在 for 循环中使用了 gdal_translate,因此您可以在 gdal_translate 之后添加该附加行,您甚至不会注意到任何东西!

不过,如果你想使用@iFlo 的方法而不用担心内存不足的问题,你可以看看this thread