已知点的经纬度坐标计算/读取DEM高程信息/海拔高度

已知点的经纬度坐标计算/读取DEM高程信息/海拔高度

思路

  • 实现条件
    1.GDAL库
    2.DEM数据

  • 开发语言
    python3

  • 开发环境
    Linux

  • 难度等级

环境

  • Ubuntu18.04 LTS
  • python 3.6.9

依赖

安装GDAL

  • 方法1:
    inux下python3的GDAL链接如下:
    https://sourceforge.net/projects/gdal-wheels-for-linux/files/
    下载对应python版本的GDAL
    再pip安装:

    pip install GDAL-3.4.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl
    
  • 方法2:

    # 安装的版本需要和python版本一致
    python3 -m pip install https://sourceforge.net/projects/gdal-wheels-for-linux/files/GDAL-3.4.1-cp36-cp36m-manylinux_2_5_x86_64.manylinux1_x86_64.whl/download
    

    szZack的博客

  • 方法3:
    【推荐方法】机器需要可以连外网

    apt-get update
    apt-get install -y python3-gdal
    

安装依赖包

  • 方法1:

    pip install GDAL
    
  • 方法2:
    先下载 GDAL-3.4.1.tar.gz
    然后解压后执行下面的指令:

    python setup.py build
    python setup.py install
    

测试GDAL

~# python3
Python 3.6.9 (default, Jan 26 2021, 15:33:00)
[GCC 8.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import gdal

不报错即说明安装成功!

数据依赖

下载高程 tif 格式数据,自行百度一下

python代码

from osgeo import gdal

def get_elevation(tif_path, latitude, longitude):
    
    gdal.UseExceptions()
    ds = gdal.Open(tif_path)
    
    band = ds.GetRasterBand(1)
    elevation = band.ReadAsArray()
    nrows, ncols = elevation.shape
    
    x0, dx, dxdy, y0, dydx, dy = ds.GetGeoTransform()
    
    new_ncols, new_nrows = int((y0-latitude)/dx), int((longitude-x0)/dx)
    
    return elevation[new_ncols][new_nrows]


#经纬度点坐标
latitude, longitude = 31.15, 111.24
h = get_elevation('./xxx.tif', latitude, longitude)

szZack的博客

参考

  • 1
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

szZack

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值