我目前正在研究一种小光栅精炼工具。我们的目标是拥有一个简单的CLI工具,从地理引用的源栅格中计算tiles,并创建相应的index.shp。为此,我使用python3.7和gdal。该工具运行平稳,并生成预期的瓷砖和shapefile,但它摆脱了投影,该投影存储在源光栅中。Qgis默认新计算的瓷砖为EPSG 4326,同时通知我一个未知的投影。最初的光栅是在EPSG 25832。
我的设置:
Windows 10 64位
Python 3.7.2
Gdal我无法访问特定的版本,因为gdal-config没有安装,我无法使它工作,但是它是64位的,我通过在gisinternals.com上提供的二进制文件安装它。Windows软件列表显示GDAL 204 MSVC 2017。
在运行脚本时,我会收到错误消息,告诉我丢失文件的情况,例如pcs.csv、datum.csv ellipsoid.csv等。这表明拥有这些文件将解决我的问题。但奇怪的是,我已经使用Osgeo4W安装了python2.7和gdal,它的工作就像一个魅力,当然已经调整了python的部分。瓷砖得到计算,并停留在源的投影。没有指定投影的任何外部文件,实际上使用的是完全相同的数据,这让我感到非常困惑。
据我所知,没有任何标志或选项可以迫使gdal保留投影。如果被忽视或被忽视了,医生们会很高兴得到建议的。
在有人问之前,我知道在这里使用osgeo4w安装程序显然是一种简单可行的解决方案。但请记住python2.7将很快停止使用,并以此作为学习新事物的机会,我想构建一个基于3.7的工具,在我的机器上安装了gdal。
相应的代码如下所示,并执行以下操作:
1.)命令字符串已生成。
2.)字符串被传递给os.system,而os.system又相应地执行
for i in range(0, width, tilelenght):
y = 0
for j in range(0, height, tilelenght):
gdaltranString = f'gdal_translate -of GTIFF -srcwin {i}, {j}, {tilelenght}, {tilelenght} {input_filepath} {output_filepath}{x}_{y}.tif'
subprocess.run(gdaltranString)
y = y+1
x = x+1预期的结果将是一个函数.tif文件的集合,这些文件具有源文件的EPSG代码,在本例中是25832。
但正如前面提到的,在这个过程中,投影会在某个地方丢失。
发布于 2019-05-06 09:46:29
所以,我已经找到了解决我的问题的办法,而没有真正理解它是如何开始成为一个问题的。
解决方案是使用投影定义文件的路径创建用户变量 GDAL_DATA。
奇怪的是,我现在有GDAL_DATA,作为系统变量和用户变量,它们都指向同一个目录。
如果有人对windows系统变量的神秘方式有更多的了解,请分享您的智慧或所述智慧的来源。
https://stackoverflow.com/questions/55954418
复制相似问题