我目前正在使用小型栅格优化工具。我们的目标是拥有一个简单的CLI工具,从地理参考的源栅格计算图块并创建相应的index.shp。为此,我正在使用python 3.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来安装带有gdal的python 2.7,它的工作原理很吸引人,当然已经调整了python部件。瓦片将被计算并停留在源的投影中。没有任何指定投影的外部文件,实际上使用的是完全相同的数据,这确实让我感到困惑。
据我了解,没有标志或选项会迫使gdal保持投影。如果忽略或误解了文档,我很乐意为您提供建议。
在任何人问之前,我都知道使用osgeo4w安装程序显然是这里简单易行的解决方案。但是请记住,Python 2.7即将停产,并以此为契机学习新知识,我想构建一个在机器上安装了gdal的基于3.7的工具
相应的代码如下所示:
1。)命令字符串已构建
2。)字符串传递给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。
但是正如已经提到的,投影在过程中的某个位置丢失了。
答案 0 :(得分:0)
因此,我找到了解决我的问题的方法,却没有真正理解它是如何成为一个问题的。
解决方案是创建一个用户变量 GDAL_DATA,其中包含投影定义文件的路径。
奇怪的是,我现在拥有GDAL_DATA,作为系统变量和用户变量,它们都指向同一目录。
如果有人对Windows系统变量的神秘方式有更多了解,请分享您的智慧,或所说智慧的来源。