- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 GDAL/OGR API (C++) 将 XY 点从给定的 Tiff 重新投影到纬度/经度坐标。
我现在能够实现它,但是,我得到的坐标与我试图得到的实际坐标不对应。
我意识到该方法不是读取输入数据集,因此没有“起点”。
事实上,从命令行使用 gdaltranslate
工具可以给出正确的坐标,因为我将 Tiff 作为参数发送。不幸的是,我负担不起使用这个命令。
下面是我的代码(到目前为止)和 gdaltranslate
的示例,作为输出:
C++ 方法:
void reproject_coords(string map_biomass) {
GDALDataset *dataset;
GDALAllRegister();
string ds = map_biomass;
dataset = (GDALDataset *) GDALOpen(ds.c_str(), GA_ReadOnly);
OGRSpatialReference source(dataset->GetMetadata()), target;
OGRCoordinateTransformation *poCT;
target.importFromEPSG(4326);
//source.AutoIdentifyEPSG();
//source.SetWellKnownGeogCS("32643");
double x = 1794, y = 6644;
//source.dumpReadable();
poCT = OGRCreateCoordinateTransformation(&source, &target);
if( poCT == NULL || !poCT->Transform( 1, &x, &y ) )
printf( "Transformation failed.\n" );
else
printf( "(%f,%f)\n",
x, y );
}
输入:x = 1794 y = 6644
输出:(70.527326,0.059926)
命令行:
gdaltransform Karnataka_biomass.tif -t_srs EPSG:4326 -s_srs EPSG:32643
输入:x = 1794 y = 6644
输出:75.7461474090405 12.4826172522718
问题是是否有任何方法可以“读取”C++ 方法中的 Tiff 以获得真正的纬度/经度坐标。我需要吗?
最佳答案
您以错误的方式创建了源 空间引用。您应该使用 GetProjectionRef() 而不是 GetMetaData() 方法:
OGRSpatialReference source(dataset->GetProjectionRef()), target;
这应该使用 GeoTIFF 中的相同 SRS 初始化源空间引用。
如果您只需要变换点,则无需使用 GeoTIFF。您可以只初始化两个 OGRSpatialReference 对象并转换一个 OGRPoint。
更新 #1
这是一个例子:
GDALAllRegister();
OGRSpatialReference source, target;
source.importFromEPSG(32643);
target.importFromEPSG(4326);
OGRPoint p;
p.setX(1794);
p.setY(6644);
p.assignSpatialReference(&source);
p.transformTo(&target);
// transformed coordinates
cout << p.getX() << " | " << p.getY();
但是,请注意您的结果是正确的,您将通过上面的代码得到相同的结果。当您查看转换后的 GeoTIFF 时看到不同值的原因是因为 gdaltransform 可能需要旋转/重新缩放它,并且由于无论如何图像始终是矩形的,它可能会选择不同的左上角来完成此操作。
更新 #2
OP 澄清说他不想投影单个点,而是要投影整个图像。此任务可以使用 GDALWarp API(教程 here)完成。
作为替代方案,仍然可以使用 gdaltransform 实用程序,通过 system() 调用来调用它。
关于c++ - 使用 GDAL/OGR C++ 将 GeoTiff 的 XY 点重新投影到 Lat/Long,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49888551/
谁能帮我提供SetGeoTransform的参数?我正在使用GDAL创建栅格图层,但是找不到SetGeoTransform的第3和第5参数的描述。它应该是单元格的x和y轴的定义。我尝试找到有关here
自从 ECW(Hexagon Geospatial/Intergraph)最近发布了具有重大更改(5.0、5.1 和 5.2)的新版本以来,大多数(全部?)在线信息已经过时。 大多数指令会导致如下错误
我有一台带有 M1 芯片的 macbook,我正在尝试建立一个 django 项目。该项目与地理空间库 gdal 一起工作。我在 3.3.1_3 版和我的虚拟环境 3.3.1 版中安装了带有 Home
我有一台带有 M1 芯片的 macbook,我正在尝试建立一个 django 项目。该项目与地理空间库 gdal 一起工作。我在 3.3.1_3 版和我的虚拟环境 3.3.1 版中安装了带有 Home
我有几个 tif 格式的文件。我想将它们翻译成 ENVI 格式。我对一个文件成功了,但我想对目录中的其余文件执行此操作。 the first file in the directory is:S
我有几个 tif 格式的文件。我想将它们翻译成 ENVI 格式。我对一个文件成功了,但我想对目录中的其余文件执行此操作。 the first file in the directory is:S
我搜索了全网都没有找到指南获取gdal-config . 我有 yum 但 yum 没有 gdal-config , 我已经安装了 gdal . 我只需要能够在 shell 上执行此操作 - gdal
我有一个很大的 GeoTIFF,我想通过 GeoServer (v.2.11) 中的 WMS 进行流式传输。图像大小约为 7GB,由非常大的高分辨率 RGB 图像组成。我已经在 JVM 中留出了足
我有一个仅存在于内存中的 GDAL 数据集 (inmem_ds): In: gdal.Info(inmem_ds) Out: ('Driver: NUMPY/Numeric Python Array\
我正在尝试在基于各种 solutions 的虚拟环境中安装 GDAL在那里。 但是下载本身已经失败了: $ pip install --no-install GDAL 这是 pip.log -----
您好,我正在尝试迭代栅格数据集 (band1) 的值。我可以使用以下代码片段在 python 中完成此操作(抱歉,我无法提供原始栅格) import numpy as np import gdal p
有人知道如何使用 GDAL 更改或设置 GeoTIFF 文件的“描述”选项/标签吗? 为了说明我的意思,这是从带有设置“描述”的 GeoTIFF 文件返回的 gdalinfo 示例: Band 1
请指出我遗漏的一点: openSUSE 11.3 xx@linux-y3pi:~/Desktop/R> sudo R CMD INSTALL rgdal_0.7-12.tar.gz root's pa
在尝试安装 sf R 包,我收到错误消息: checking GDAL version >= 2.0.0... no configure: error: sf is not compatible wi
我使用 gdal 创建不同类型的图层,例如颜色浮雕和山体阴影,并使用 Mapnik 将它们组合成单个图像,以用作从单个 .hgt 文件获得的 3D dem 模型的纹理。 假设我是 gdal 新手,我在
鉴于此文件: http://mtarchive.geol.iastate.edu/2019/02/18/mrms/ncep/GaugeCorr_QPE_01H/GaugeCorr_QPE_01H_00
您好,我是Gdal的新手,正在为我的代码苦苦挣扎。在我的代码中,一切似乎进展顺利,但最后的输出区域为空。当我指定255时,无数据值设置为256,所以我真的不知道出了什么问题。谢谢任何帮助,将不胜感激!
我正在尝试构建马赛克,我依靠 NoDataValue 功能将图像的某些部分视为透明。但是,GDAL 似乎没有按预期工作。 我还使用 vrt 数据集和 gdal_translate 创建了一个非常简单的
他们的文档简单而专业。 但他们并没有过多提及这些开源项目之间的关系。 我应该什么时候使用哪一种?哪一个适合什么场景? 如果您是熟悉这些项目的GIS开发人员,您能解释一下吗? 最佳答案 基本上,GDAL
我正在使用 GDAL java API。我有一段代码可以将 SRTM (hgt)、geotiff 和 dted 文件相互转换。 在测试代码时,我成功地将示例 hgt 文件(从互联网下载,例如从此站点:
我是一名优秀的程序员,十分优秀!