首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用gdal_translate时保留源光栅投影?

如何在使用gdal_translate时保留源光栅投影?
EN

Stack Overflow用户
提问于 2019-05-02 14:16:09
回答 1查看 379关注 0票数 0

我目前正在研究一种小光栅精炼工具。我们的目标是拥有一个简单的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又相应地执行

代码语言:javascript
复制
    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。

但正如前面提到的,在这个过程中,投影会在某个地方丢失。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-06 09:46:29

所以,我已经找到了解决我的问题的办法,而没有真正理解它是如何开始成为一个问题的。

解决方案是使用投影定义文件的路径创建用户变量 GDAL_DATA。

奇怪的是,我现在有GDAL_DATA,作为系统变量用户变量,它们都指向同一个目录。

如果有人对windows系统变量的神秘方式有更多的了解,请分享您的智慧或所述智慧的来源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55954418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档