gpt4 book ai didi

leaflet - 使用 Leaflet 计算海拔高度

转载 作者:行者123 更新时间:2023-12-02 16:44:54 33 4
gpt4 key购买 nike

我想计算标记的高度,但我在传单中没有找到任何解决方案。我找到了海拔插件,它允许在 map 上绘制海拔剖面图,但我不需要它。你知道如何计算高度吗?谢谢。

最佳答案

编辑:一个不错的选择

为任何可能需要它的人添加此内容:自从写了这个答案后,我编写了插件 leaflet-topography使这一切变得非常快速和容易。

原始答案:

不确定是否有人已经回答,但我为此绞尽脑汁一周并找到了一个很好的解决方案。首先,你需要获取leaflet插件leaflet-tileLayer-colorPicker:

https://github.com/frogcat/leaflet-tilelayer-colorpicker

这个插件使您能够在给定纬度和经度的情况下获取 map 上某个像素的颜色。然后,您需要一个数据集。 Mapbox Terrain-RGB 瓷砖就是为此设计的:

https://docs.mapbox.com/help/troubleshooting/access-elevation-data/

这些图 block 具有以 RGB 格式编码的高程数据。对于像我这样的初学者来说,mapbox 网站上的描述不够一步一步,所以您可以这样做:

添加 Terrain-RGB 切片图层

var colorPicker = L.tileLayer.colorPicker('https://api.mapbox.com/v4/mapbox.terrain-rgb/{z}/{x}/{y}.pngraw?access_token={accessToken}', {
attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
maxZoom: 18,
id: 'mapbox.outdoors',
accessToken: 'your mapbox accesstoken'
}).addTo(yourMap)
.setOpacity(0); // optional

创建一个函数,它接受 latlng 并将 RGB 作为数组输出

function getElevation(location){
var color = colorPicker.getColor(location)
// location is an array [lat, lng]

分离数组的 RGB 值并将其放入 Mapbox 的高程方程中

   let R = color[0];
let G = color[1];
let B = color[2];

let height = -10000 + ((R * 256 * 256 + G * 256 + B) * 0.1)
let heightRounded = Math.round( height * 10) / 10 + ' meters';
return heightRounded;
}

最后一位只是给出一个四舍五入到第一位小数的好数字,输出为“182 米”等字符串,但您可以随意编写它。

关于leaflet - 使用 Leaflet 计算海拔高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42718769/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com