#include <gdal.h>
#include <gdal_priv.h>
#include <iostream>float read_elevation(const char* tifFileName, float lon, float lat)
{   // 注册所有功能GDALAllRegister();// 打开文件GDALDatasetH hDS = GDALOpen(tifFileName, GA_ReadOnly);if (hDS == nullptr){fprintf(stderr, "Can't open %s\n", tifFileName);return 0.0;}int iBand = 1;GDALRasterBandH hBand = GDALGetRasterBand(hDS, iBand);if (hBand == nullptr){fprintf(stderr, "Can't get band\n");return 0.0;}//获取坐标变换系数double trans[6] = { 0 };if (GDALGetGeoTransform(hDS, trans) != CE_None){fprintf(stderr, "cant not get geotransform");return 0.0;}//获取图像的尺寸//int nImgSizeX = GDALGetRasterXSize(hDS);//int nImgSizeY = GDALGetRasterYSize(hDS);// 根据像素坐标计算经纬度数// double xGeo = trans[0] + xLine * trans[1] + yLine * trans[2];// double yGeo = trans[3] + xLine * trans[4] + yLine * trans[5];// 计算像素位置double dTemp = trans[2] * trans[4] - trans[1] * trans[5];行列号double dRow = (trans[4] * (lon - trans[0]) - trans[1] * (lat - trans[3])) / dTemp;double dCol = (trans[2] * (lat - trans[3]) - trans[5] * (lon - trans[0])) / dTemp;int dx = (int)dCol;int dy = (int)dRow;// 获取数据类型GDALDataType dType = GDALGetRasterDataType(hBand);int dTypeSize = GDALGetDataTypeSizeBytes(dType);// 一般高程数据类型就是float,因此不再进行判断,如果为了严谨应该判断类型float* buffer = (float*)CPLMalloc(sizeof(float) * 1);if (GDALRasterIO(hBand, GF_Read, dx, dy, 1, 1, buffer, 1, 1, GDT_Float32, 0, 0) != CE_None){return 0.0;}float dem = *buffer;CPLFree(buffer);GDALClose(hDS);return dem;
}int main()
{const char* file_path_name = "E:/data/terrain/dem.tif";float lon = 89.7081101388;float lat = 30.9426533909;float alt = read_elevation(file_path_name, lon, lat);printf("经度:%.6f, 维度%.6f, 处的高程为:%.6f\n", lon,lat,alt);return 0;
}

GDAL读取高程文件,获取经纬度点的高程相关推荐

  1. python pandas 把数据保存成csv文件,以及读取csv文件获取指定行、指定列数据

    文章目录: 1 数据说明 2 把数据集文件信息使用python pandas保存成csv文件 3 使用python pandas 读取csv的每行.每列数据 1 数据说明 1.在test_data目录 ...

  2. GDAL读取jpg文件中GPS坐标信息

    在目前很多相机都支持在拍照的时候保留GPS信息,这些信息一般都是存储在jpg图像的exif信息中.下面内容主要说明如何使用GDAL库来读取jpg图像中的GPS信息并解析经纬度坐标. 首先,还是最常用的 ...

  3. python使用gdal读取shp文件

    from __future__ import division import pandas as pd from osgeo import ogr, osr, gdal import osdef re ...

  4. gdal读取txt文件_GDAL库学习笔记(六): 把dem地形转化成vrml虚拟现实

    1. 一个从DEM生成VRML的例子 现在我们牛刀小试一下,玩一个例子吧,用gdal可以读取那么多格式,不拿出来做点东西玩玩岂不是太浪费了?想当年我玩VR的时候,有过一段痛苦的经历,当时我为我们师大建 ...

  5. java读取视频_【转载】Java 后端读取视频文件获取视频流后 前端进行播放/下载...

    /** * 获取视频流 * @param response * @param videoId 视频存放信息索引 * @return * @author xWang * @Date 2020-05-20 ...

  6. dotnet Roslyn 通过读取 suo 文件获取解决方案的启动项目

    本文来告诉大家一个黑科技,通过 .suo 文件读取 VisualStudio 的启动项目.在 sln 项目里面,都会生成对应的 suo 文件,这个文件是 OLE 格式的文件,文件的格式没有公开,本文的 ...

  7. Java gdal .mif/.mid文件读取

    上一篇研究了 Windows10 64位 Python读取.mif/.mid文件并转成txt 今天研究一下Java读取MIF. 俩种解决办法: (1)Python程序读取.mif/.mid转成txt, ...

  8. gdal处理tiff文件的小问题

    问题一 :ERROR 1: TIFFResetField:xxxxxxxx: Could not find tag 273. 使用gdal读取tiff文件时遇到的,把dataset用GDALclose ...

  9. Java读取txt文件、excel文件的方法

    Java读取txt文件.excel文件的方法 1.读取txt文件 public static String getFileContent(String filePath,String charset) ...

  10. poi读取xlsx文件

    情景 在kotlin实现的项目中,要读取bookAssets.xlsx文件中的内容. 解决方法 引入POI依赖 在libs文件中加入要用到的6个.jar包,并在gradle中导入: 要用到的包已经放在 ...

最新文章

  1. USEARCH —— 最简单易学的扩增子分析流程(中国总代理)
  2. 全能HOOK框架 JNI NATIVE JAVA ART DALVIK
  3. Qt调用dll中的功能函数
  4. Java中 a+=b和a=a+b有什么区别?
  5. C#数组原来这么简单,你学废了吗?
  6. tar+openssl加密压缩解压缩
  7. D3 datumdata
  8. 《ABAQUS 6.14超级学习手册》——1.5 ABAQUS帮助文档
  9. 技能大赛训练题:交换机虚拟化练习
  10. 如何在html中加入背景,html中如何加入背景图片
  11. 银河麒麟安装node
  12. 等保2.0基本要求与等保1.0对比解读
  13. 三重积分--------球坐标系
  14. 使用计算机时应先按,计算机应用基础试卷及答案
  15. python考证书-Python全国二级等级考试(2019)
  16. alevel计算机教材答案,alevel计算机教材电子版及内容和目录大纲
  17. 方程组的两种理解方式(线性代数及其应用【2】)
  18. 如何获得最新的太阳神三国杀 自己Qt编译
  19. 90后都会选择的购车模式“网上购车平台一成首付”
  20. react 三种通信方式(父传子、子传父、兄弟传值)

热门文章

  1. unity visual effect Graph 1
  2. 4个免费代码自动生成神器
  3. XLSTransformer 导出Excel数据
  4. 数字信号处理----数字上变频和下变频都FPGA实现
  5. 达内2013C++视频教程
  6. Windows server WSUS补丁服务器搭建
  7. 嵌入式老师傅告诉你单片机6年想转嵌入式Linux值不值得
  8. R语言:Error in file(out, “wt“) : cannot open the connection
  9. vc++中实现进度条
  10. 0618----Shell(二)