MapBox获取点位高程的三种方式

news2024/11/17 5:43:58

以下提供了三种方法和思路

1,通过mapbox全球dem数据获取高程

这里我们利用了mapbox的tilequery
官网地址在这里

https://docs.mapbox.com/api/maps/tilequery/

以下是示例代码,这个方式是简单快捷,缺点就是精度不高,大概是以10m为一个跨度,而且不带建筑、树木等的高度

        this.map.on('click',e=>{
          var lngLat = e.lngLat.toArray();
          var url = 'https://api.mapbox.com/v4/mapbox.mapbox-terrain-v2/tilequery/' + lngLat[0] + ',' + lngLat[1]+'.json?layers=contour&access_token='+mapboxgl.accessToken;
          var xhr = new XMLHttpRequest();
          xhr.open('GET', url);
          xhr.setRequestHeader('Content-Type','application/json');
          xhr.onload = function (){
          if (xhr.status === 200) {
            var data = JSON.parse(xhr.responseText);
            var elevation = data.features[0].properties.ele;
            console.log('当前位置高度为:' + elevation);
            }
          }
          xhr.send()
        })

2、加载dem模型

这里我们是加载dem。mapbox如果想要加载dem的话,需要mapbox自己特定的一种格式
在这里插入图片描述
加载成功后然后通过这个方法来获取高程

在这里插入图片描述
具体示例代码,有这个官方地址

https://docs.mapbox.com/mapbox-gl-js/example/query-terrain-elevation/

3、通过geoserver发布dem服务,使用geoserver自带的GetFeatureInfo服务获取高程

首先这里放一下4D数据是什么意思
在这里插入图片描述
可以看到我们这里其实最好是使用dsm,因为这个还会附带建筑、树木的高程,这样我们在地图上向下点的时候,如果是点击的有建筑或者树木的话,仍然可以获取比较精确的高程数据。

然后这里的dsm数据源,我们取自于倾斜摄影,mapbox现在无法从倾斜摄影上获取高程,只能采取这样的办法曲线救国,先从倾斜摄影转为dsm,别的软件不知道,大势智慧可以做这一步,然后dsm的话,用geoserver发布出去,GetFeatureInfo拿不到高程,应该是只支持dem,所以我们还需要将dsm转化为dem。
转化为dem之后,我们就用geoserver将其发布成服务。预览之后在这里可以点击地图上的要素获取高程,查看网络那里就可以拿到请求的接口,值的注意的是他这个接口的格式是html的,我们需要将其转化为json的。在这里插入图片描述
具体参数在geoserver的官网上面都有,不过直接从这里截取一下请求路径,改一下也是可以的。
然后在代码里面,就可以获取到高程啦

map.on('click',e=>{
                let point = e.lngLat; //鼠标单击点的坐标
                let offset = 0.00001;
                let minx = point.lng - offset;
                let miny = point.lat - offset;
                let maxx = point.lng + offset;
                let maxy = point.lat + offset;
                var url = geoserverUrl+'/services/wms?SERVICE=WMS&VERSION=1.1.1&REQUEST=GetFeatureInfo&FORMAT=image%2Fjpeg&TRANSPARENT=true&QUERY_LAYERS=services%3A'+layerId+'&STYLES&LAYERS=services%3A'+layerId+'&exceptions=application%2Fvnd.ogc.se_inimage&INFO_FORMAT=application%2Fjson&FEATURE_COUNT=50&X=50&Y=50&SRS=EPSG%3A4326&WIDTH=101&HEIGHT=101&BBOX=' + encodeURIComponent(minx + "," + miny + "," + maxx + "," + maxy)
                let res = await fetch(url).then(res=>res.json())
                console.log('当前位置高度为:' + res.features[0].properties.GRAY_INDEX.toFixed(2));
})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1150845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

世界前沿技术发展报告2023《世界航空技术发展报告》(五)直升机技术

(五)直升机技术 1.常规直升机技术1.1 北约六国联合启动下一代旋翼飞行器能力项目1.2 美国和法国重视发展有人/无人直升机编组能力1.3 美国“黑鹰”直升机完成不载人全自主飞行 2.新概念直升机技术2.1 美国“劫掠者”X型直升机参与陆军“未来攻击侦察机”…

【电路笔记】-交流电感和感抗

交流电感和感抗 文章目录 交流电感和感抗1、概述1.1 电感1.2 电感器 2、频率特性2.1 电抗(Reactance)2.2 相移2.3 感应现象 3、RL滤波器4、总结 在之前有 交流电阻的文章中,我们已经看到电阻器在正常频率下的直流或交流状态下的行为是相同的。 然而,其他…

吃透进程地址空间,理清OS内存管理机制

文章目录 一、前言二、细说进程地址空间1、一段测试的代码2、引入地址空间① 富豪与他的私生子👨② 38线竟是这么来的!③ 地址空间的深层理解 三、分页 & 虚拟地址空间1、页表的概念2、疑难解答:为何父子进程没有发生同步修改&#xff1f…

注意点细节

部署esxi: VLAN 装esxi的时候如果没有设置trunk就不要设置VLAN, 否则无法访问 。 设置了trunk接口才设置VLAN,否则无法访问 部署esxi: DNS dns服务器配置: esxi 上的配置 部署ESXI :RAID 生成环境中需要先设置RAID 作为系统…

协同网络入侵检测CIDS

协同网络入侵检测CIDS 1、概念2、CIDS的分类3、解决办法4、CIDS模型5、挑战与不足 ⚠申明: 未经许可,禁止以任何形式转载,若要引用,请标注链接地址。 全文共计2598字,阅读大概需要3分钟 🌈更多学习内容&…

Spring Security授权架构介绍

授权架构重点在于从 Authentication 中获得该认证所具有的权限 GrantedAuthority,以及对请求或路径设置访问所需权限。 GrantedAuthority 在之前的Spring Security:认证架构中,我们已经介绍了在 Authentication 中存储 GrantedAuthority 的…

21. 合并两个有序链表、Leetcode的Python实现

博客主页:🏆看看是李XX还是李歘歘 🏆 🌺每天不定期分享一些包括但不限于计算机基础、算法、后端开发相关的知识点,以及职场小菜鸡的生活。🌺 💗点关注不迷路,总有一些📖知…

自相矛盾的LLM幻觉:评估、检测、缓解10.30

自相矛盾的LLM幻觉:评估、检测、缓解 摘要引言相关工作定义和激励自我矛盾4 触发、检测和减轻自相矛盾的行为5 实例化到开放文本生成6 实验 摘要 大型语言模型(Large LMs)容易产生包含虚构内容的文本。其中一个重要问题是自相矛盾&#xff0…

windows server 2016-IIS静态服务器-设置详细过程

文章目录 1.打开仪表盘新建角色2.iis功能模块3.启动服务器4.优点 1.打开仪表盘新建角色 2.iis功能模块 能选上的尽量选上,除非知道自己用不上。 然后确认,下一步,安装。 3.启动服务器 搜索IIS,启动IIS管理器。 启动网站。 右…

【杂记】Filter过滤器和Interceptor拦截器的区别

过滤器Filter与拦截器Interception区别? 包的位置不同。 filter位于tomcat里面,interception位于Spring-webmvc filter位置: interceptor位置: 实现方式不同。在自定义的时候,filter我们可以实现Filter接口&#xf…

精品Python产品销售数据可视化大屏系统-仓库出入库进销存储

《[含文档PPT源码等]精品基于Python的产品销售数据可视化系统的设计与实现》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功! 软件开发环境及开发工具: 开发语言:python 使用框架:Django …

组学数据上传(六)|GEO数据库数据上传实操

最近有些老师反馈文章发表时要求提供GEO登录号,如:GSEXXXX,问要怎么获取这种登录号?这时就需要把数据上传至GEO数据库了。还在等什么,跟着小编了解下GEO数据库,手把手教您上传数据至GEO数据库。 GEO数据库全称GENE EXPRESSION OMNIBUS&…

北京新一代信息技术产教联合体成立,360以ISC安全课助力建设工作

10月29日,北京新一代信息技术产教联合体(简称联合体)成立大会在北京360大厦A座报告厅成功举行。本次大会在中关村科技园区朝阳园管理委员会、北京市教委职业教育与成人教育处的指导下,由360数字安全集团、北京电子城高科技集团股份…

产品经理如何写好互联网产品说明书

互联网产品说明书是产品经理在产品开发过程中必不可少的文档之一。它起到了明确产品的功能和特性的作用,帮助团队成员更好地理解和掌握产品的核心功能。因此,作为产品经理,应该重视互联网产品说明书。那么产品经理该如何写好互联网产品说明书…

Mac电脑VS Code配置Flutter开发环境(图文超详细)

一、安装Android Studio 官网地址: https://developer.android.google.cn/ 历史版本下载地址: https://developer.android.com/studio/archive?hlzh-cn 二、安装Xcode 到App Store下载安装最新版本,如果MacOS更新不到13.0以上就无法安装…

【多线程面试题十四】、说一说synchronized的底层实现原理

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说一说synchronized的底…

三分钟带你了解JS、原型、原型链

1.什么是JS? JavaScript是一种基于对象的脚本语言,它不仅可以创建对象,也能使用现有的对象; 它是基于原型编程、多范式的动态脚本语言,并且支持面向对象、命令式、声明式、函数式编程范式; 白话一点说就是…

算法的时间复杂度及空间复杂度

目录 一、前言 二、时间复杂度 1.时间复杂度定义 2.时间复杂度描述方法 三、实例代码 实例1(取影响最大的项) 实例2(舍去系数) 实例3(不确定大小关系的用max函数取最大) 实例4(常数次的…

【IDEA】每个方法之间如何设置分隔线

修改后效果: 各个方法之间出现了分隔线

大模型LLMs 部分常见面试题答案-基础面

题库来源:GitHub - km1994/LLMs_interview_notes: 该仓库主要记录 大模型(LLMs) 算法工程师相关的面试题 目录 1. Prefix Decoder、Causal Decoder和Encoder-Decoder的区别 1.1 Prefix Decoder 1.2 Causal Decoder 1.3 Encoder-Decoder …