我正在尝试使用 Spyder 中的 gdal.Translate 将大量 xyz 文件转换为栅格。但是我遇到了几个问题。
我首先尝试只转换一个 xyz 文件。代码就像:
import os from osgeo import gdal,osr xyz = '1x1m_678494.xyz' xyzraster = '1x1m_678494.tif' translateoptions = gdal.TranslateOptions(projWin='EPSG:3879') gdal.Translate(xyzraster,xyz,options=translateoptions)
结果是我可以获得一个 tif 文件,但没有空间参考。并且没有错误或警告消息。然后我认为它可能与 gdal 包有关。我在这里发现了一些类似的问题https://gis.stackexchange.com/questions/142215/gdal-translate-projection-error https://github.com/conda/conda/issues/4050,我确实将 GDAL_DATA 设置为路径“C:\Program Files\Anaconda3\Library\share\gdal”。这并没有解决我的问题。检查我的 gdal 版本是 2.3.3 和 python 3.7.3。我正在尝试删除此 gdal 并使用 conda 安装最新版本的 gdal 3.0.4。但似乎有一个不兼容的问题。
同时,我发现GDAL也有独立安装,http://cartometric.com/blog/2011/10/17/install-gdal-on-windows/。本教程有一步设置 GDAL_DATA 和 GDAL_DRIVER_PATH,但路径与 conda 安装的 GDAL_DATA 不同。我很困扰。独立安装的 gdal 与 conda 安装的 gdal 的工作方式不同吗?或者我只需要其中之一?
然后我将空间参考问题抛在脑后,并尝试将多个 xyz 转换为 geotiff。但是遇到了一些其他的问题。代码就像:
import os import gdal import glob path = 'D:\\Data\\1m\\' gdal.BuildVRT(path+'out.vrt',glob.glob(path+'\\*.xyz')) gdal.Translate(path+'out.tif',path+'out.vrt')
错误是 ValueError: Received a NULL 指针。
任何人都可以帮助我吗?