(Python)根据经纬度从数字高程模型(DEM)文件获取高度
基本介绍
在地理信息系统(GIS)和遥感中,数字高程模型(Digital Elevation Model,简称DEM)是一种表示
地表或地形高程信息的重要数据。DEM数据通常以栅格(raster)形式存在,其中每个像素的值表示相
应地理位置的高程。
之前介绍了如何进行6S大气校正,其中有一段代码是自动获取DEM的高度。
原理及过程是,输入参数分别是经纬度、DEM文件。输入参数是高度。
先把DEM文件读取为栅格,再把经纬度转换为行列号,根据行列号定位到DEM栅格,读取该栅格的数值,返回数据。

代码
以下是我们的Python函数:
def fromDemFileGetHeight(dem, lon, lat):try:DEMIDataSet = gdal.Open(dem)except Exception as e:print('Missing DEM file')passDEMBand = DEMIDataSet.GetRasterBand(1)geotransform = DEMIDataSet.GetGeoTransform()# DEM分辨率pixelWidth = geotransform[1]pixelHight = geotransform[5]# DEM起始点:左上角,X:经度,Y:纬度originX = geotransform[0]originY = geotransform[3]# 研究区左上角在DEM矩阵中的位置yoffset1 = int((originY - lat) / pixelWidth)xoffset1 = int((lon - originX) / (-pixelHight))DEMRasterData = DEMBand.ReadAsArray(xoffset1, yoffset1, 1, 1)DEMRasterData = np.mean(DEMRasterData)return DEMRasterData
代码解析
这个函数接受三个参数:DEM文件路径、经度和纬度。它返回指定经纬度位置的高度值。
首先,函数尝试打开DEM文件。如果文件不存在或无法打开,它将打印一条错误消息并退出。
然后,函数获取DEM数据的第一波段(在大多数DEM数据中,高程数据都存储在第一波段)。它还获取DEM数据的地理转换参数,这些参数描述了像素大小和左上角像素的地理位置。
接下来,函数计算指定的经纬度位置在DEM数据矩阵中的像素坐标。这是通过将经纬度位置与DEM数据的起始点进行比较并除以像素大小来实现的。
最后,函数读取DEM数据中相应像素的值,并返回这个值作为高度。
小结
这个函数提供了一种快速方便的方法,可以从DEM文件中获取指定经纬度位置的高度信息。
这对于遥感研究、应用来说非常有用,例如几何校正、大气校正、水体提取等。
相关文章:
(Python)根据经纬度从数字高程模型(DEM)文件获取高度
基本介绍 在地理信息系统(GIS)和遥感中,数字高程模型(Digital Elevation Model,简称DEM)是一种表示 地表或地形高程信息的重要数据。DEM数据通常以栅格(raster)形式存在࿰…...
【WPF应用41】WPF中的Expander控件详解
Windows Presentation Foundation(WPF)中的Expander控件是一个用于显示详细信息的交互式UI元素。它允许用户通过点击标题来展开或折叠内容区域。Expander控件通常用于在界面上组织内容,提供一种可见/隐藏的功能,以帮助用户专注于当…...
golang变量初始化顺序
顺序: 1.引用的包 2.全局变量 3.init()函数 4.main()函数 package pkgimport "fmt"func init() {fmt.Println("pkg init") }package mainimport ("fmt"_ "gg/pkg" )var v val()func val() int {fmt.Println("func()…...
魔众 文库配置异步转换
同步转换 系统默认使用同步转换,即用户上传文档提交接口瞬间,系统会立即进行转换。 同步转换容易造成页面卡顿,转换时间超长的情况下,系统接口会超时。 异步转换 系统支持异步转换,即用户上传文档提交接口瞬间&…...
创建型模式--2.简单工厂模式【人造恶魔果实工厂1】
1. 工厂模式的特点 在海贼王中,作为原王下七武海之一的多弗朗明哥,可以说是新世界最大的流氓头子,拥有无上的权利和无尽的财富。他既是德雷斯罗萨国王又是地下世界的中介,控制着世界各地的诸多产业,人造恶魔果实工厂就…...
一些考研经验
前言 考研结束已有半个月,之前一直想写经验贴,奈何感觉自己本身就比较菜,考了两年才堪堪上岸,所以有些犹豫,拖拖沓沓到现在,思虑再三最终决定把自己对于考研的一些拙见记录一下,供各位参考。 …...
StockTrading AI小模型股票自动交易系统 转载
Stock-Trading StockTrading AI小模型股票自动交易系统 项目文档 Stock-Trading 语雀 项目展示 功能介绍 对接证券平台,实现股票自动化交易使用QuartZ定时任务调度,每日自动更新数据使用DL4J框架实现LSTM模型指导股票买入,采用T1短线交易策…...
01背包问题合集 蓝桥OJ
一、蓝桥OJ 1174小明的背包1 模板题 思路: 用二维数组dp判断最大价值,i表示物品数量,j表示物品体积,如果 j > V 则无需继续, j > w 物品还能再增加,同样价值也增加,否则继承之前的价值&am…...
Nuxt3 实战 (三):使用 release-it 自动管理版本号和生成 CHANGELOG
release-it 能做什么? 增加版本号并提交 Git生成变更日志(Changelog)并提交到 Git创建 Git 标签并推送到远程仓库发布到 npm 等软件仓库在 GitHub、GitLab 等平台创建发行版 前置知识 在看这篇文章之前,我们有必要了解一下 Sem…...
鸿蒙OS开发实战:【自动化测试框架】使用指南
概述 为支撑HarmonyOS操作系统的自动化测试活动开展,我们提供了支持JS/TS语言的单元及UI测试框架,支持开发者针对应用接口进行单元测试,并且可基于UI操作进行UI自动化脚本的编写。 本指南重点介绍自动化测试框架的主要功能,同时…...
算法(二分查找)
1.给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1…...
运筹学基础(六)列生成算法(Column generation)
文章目录 前言从Cutting stock problem说起常规建模Column generation reformulation 列生成法核心思想相关概念Master Problem (MP)Linear Master Problem (LMP)Restricted Linear Master Problem (RLMP)subproblem(核能预警,非常重要) 算法…...
[阅读笔记] 电除尘器类细分市场2023年报
0.原始链接: 2023年除尘行业评述及2024年发展展望-北极星大气网 中国环保产业协会 供稿 1.重要信息摘录 市场占有率最大的是电除尘和袋式除尘行业装备产品名录: 国家鼓励发展的重大环保技术装备目录(2023年版)权威评审机构:…...
Kubernetes学习笔记11
k8s集群核心概念:pod: 在K8s集群中是不能直接运行容器的,K8s的最小调度单元是Pod,我们要使用Pod来运行应用程序。 学习目标: 了解pod概念: 了解查看pod方法 了解创建pod方法 了解pod访问方法 了解删除…...
✌2024/4/3—力扣—无重复字符的最长子串
代码实现: 解法一:暴力法 int lengthOfLongestSubstring(char *s) {int hash[256] {0};int num 0;for (int i 0; i < strlen(s); i) {int count 0;for (int j i; j < strlen(s); j) {if (hash[s[j]] 0) {hash[s[j]];count;num num > cou…...
Tauri 进阶使用与实践指南
Tauri 进阶使用与实践指南 调试技术 在 Tauri 应用开发中,调试分为两大部分:Web 端与 Rust 控制台。 Web 端调试 在 Web 端界面,可以直接采用浏览器内置的开发者工具进行调试。在 Windows 上,可以通过快捷键 Ctrl Shift i 打…...
2024年最新社交相亲系统源码下载
最新相亲系统源码功能介绍 参考:相亲系统源码及功能详细介绍 相亲系统主要功能 (已完成) 相亲系统登录注册 相亲系统会员列表 相亲系统会员搜索 相亲系统会员详情 相亲系统会员身份认证 - 对接阿里云 相亲系统资源存储 - 对接七…...
git知识
如何将develop分支合并到master分支 #简单版 git checkout master git pull origin master git merge origin/develop # 解决可能的冲突并提交 git push origin master#复杂版 git checkout master # 拉取远程 master 分支的最新代码并合并到本地 git pull origin master # 拉…...
代码随想录算法训练营第三十五天|860.柠檬水找零、406.根据身高重建队列、452.用最少数量的箭引爆气球
代码随想录算法训练营第三十五天|860.柠檬水找零、406.根据身高重建队列、452.用最少数量的箭引爆气球 860.柠檬水找零 在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯…...
golang defer实现
derfer : 延迟调用,函数结束返回时执行,多个defer按照先进后出的顺序调用 原理:底层通过链表实现,每次新增的defer调用,通过头插法插入链表;defer执行时,从链表头开始遍历,相当于实…...
ollama部署本地大模型|embeddinggemma-300m嵌入质量评估方法论
ollama部署本地大模型|embeddinggemma-300m嵌入质量评估方法论 1. 引言:为什么需要本地嵌入模型? 想象一下,你正在开发一个智能搜索系统,需要快速理解用户查询的语义含义,并在海量文档中找到最相关的内容…...
ComfyUI效果实测:多插件加持下的高清AI绘画生成对比
ComfyUI效果实测:多插件加持下的高清AI绘画生成对比 1. 引言:为什么选择ComfyUI 在AI绘画领域,ComfyUI以其独特的工作流设计方式脱颖而出。与传统的AI绘画工具不同,ComfyUI采用节点式工作流设计,让用户可以像搭积木一…...
嵌入式系统数据校验算法详解与实践
1. 单片机校验算法的重要性在嵌入式系统开发中,数据校验是确保通信可靠性和数据完整性的基础保障。我从事嵌入式开发十多年来,见过太多因为忽略校验而导致系统故障的案例。比如2018年参与的一个工业控制项目,由于CAN总线通信没有采用CRC校验&…...
【Python】安装 Python 环境
需要安装的环境主要是两个部分: 运行环境:Python开发环境:PyCharm 一、安装 Python 1、找到官方网站 Welcome to Python.org 2、找到下载页面 选择 "Download for Windows": 现在主流使用的 Python 版本是 Python…...
5个步骤搞定苹果设备Windows连接:从无法识别到无缝协作
5个步骤搞定苹果设备Windows连接:从无法识别到无缝协作 【免费下载链接】Apple-Mobile-Drivers-Installer Powershell script to easily install Apple USB and Mobile Device Ethernet (USB Tethering) drivers on Windows! 项目地址: https://gitcode.com/gh_mi…...
RWKV7-1.5B-G1A快速上手:5分钟部署你的轻量级文本生成助手
RWKV7-1.5B-G1A快速上手:5分钟部署你的轻量级文本生成助手 1. 为什么选择RWKV7-1.5B-G1A 如果你正在寻找一个轻量级但功能强大的文本生成模型,RWKV7-1.5B-G1A绝对值得考虑。这个基于RWKV-7架构的模型在1.5B参数规模下展现了出色的性能,特别…...
YOLO-v5实战:用预训练模型快速检测图片中的物体
YOLO-v5实战:用预训练模型快速检测图片中的物体 1. 引言:为什么选择YOLO-v5 在计算机视觉领域,物体检测是一项基础而重要的任务。YOLO(You Only Look Once)系列模型因其速度快、精度高的特点,成为工业界和…...
Qt跨平台即时通讯实战:从界面设计到TCP通信的完整实现
1. Qt跨平台即时通讯开发概述 用Qt框架开发即时通讯软件最大的优势就是"一次编写,到处运行"。我去年接手过一个项目,需要在Windows和Linux双平台上部署聊天工具,当时尝试过多种技术方案,最终Qt以绝对优势胜出。想象一下…...
Nuxt3 + PM2 + Nginx:打造高可用前端部署方案(附常见问题排查指南)
Nuxt3 PM2 Nginx:打造高可用前端部署方案(附常见问题排查指南) 在当今快速迭代的Web开发领域,Nuxt3凭借其出色的服务端渲染能力和现代化的开发体验,正成为越来越多技术团队的首选框架。然而,将Nuxt3应用部…...
SiameseUIE多任务统一Schema设计:一套定义覆盖NER/关系/事件/情感
SiameseUIE多任务统一Schema设计:一套定义覆盖NER/关系/事件/情感 1. 引言:信息抽取的“瑞士军刀” 想象一下,你手头有一堆杂乱无章的中文文档——可能是新闻稿、用户评论、技术报告或者客服对话。老板让你快速从中找出所有提到的人名、公司…...
