Mapbox发布标高数据,使用RGB栅格块("Mapbox地形-RGB“),可在这里获得:https://docs.mapbox.com/help/troubleshooting/access-elevation-data/#mapbox-terrain-rgb
我很难弄清楚如何使用Mapbox来使用这些数据;我想不出一种在样式编辑器工作室或客户机上进行RGB解码的方法。
在寻找示例时,我只能找到在leaflet.js中使用这些数据的Mapbox示例,而不是Mapbox:https://blog.mapbox.com/global-elevation-data-6689f1d0ba65
我试图复制的相应的openlayers代码如下:
function flood(pixels, data) {
var pixel = pixels[0];
if (pixel[3]) {
var height = -10000 + ((pixel[0] * 256 * 256 + pixel[1] * 256 + pixel[2]) * 0.1);
if (height <= 100 && height > 0) {
pixel[0] = 255;
pixel[1] = 15;
pixel[2] = 15;
pixel[3] = (255 - height * 2.5);
} else {
pixel[3] = 0;
}
}
return pixel;
}
const elevation = new XYZ({
url: 'https://api.mapbox.com/v4/mapbox.terrain-rgb/{z}/{x}/{y}.pngraw?access_token=' + key,
crossOrigin: 'anonymous',
transition: 0
});
var raster = new RasterSource({
sources: [elevation],
operation: flood
});
但是我想不出用Mapbox在客户机上做这件事的任何方法。
理想情况下,我应该避免直接的API调用;我试图在Mapbox客户机中工作,以避免直接API访问带来高昂的成本。但我会从任何方法开始。
(我对此相当陌生,所以如果有更深层次的误解,我很抱歉)
发布于 2019-07-10 02:19:49
不能对光栅像素(如光栅着色 )执行任意操作。你可以做两件事中的任何一件:
raster
源类型和raster
层类型)。raster-dem
源类型和hillshade
层类型)。有关后者的示例,请参见https://docs.mapbox.com/studio-manual/examples/hillshade/
https://stackoverflow.com/questions/56962315
复制相似问题