SuperAPI AI 工具集

maplibre-terrain-rendering

通用与其它

查看项目

更新于 10-16 00:05

技能介绍

用途:本技能解决 MapLibre GL JS 中 raster-dem 高程源的四种渲染方式,高程源是数据而非图片,四种方式可共用同一 raster-dem 源。

主要能力:

  1. 晕渲(hillshade):所有 hillshade-* 均为 paint 属性,默认 hillshade-exaggeration 0.5、illumination-direction 335、illumination-anchor viewport、shadow-color #000000、highlight-color #FFFFFF。对比过硬通常源于着色方法而非颜色,hillshade-method(GL JS 5.5)支持 standard、basic、combined、igor、multidirectional,multidirectional 单次多方向打光,igor 减弱对下层要素影响。不要堆叠多个不同光照方向的 hillshade 图层。
  2. 按高程着色:color-relief 图层(GL JS 5.6)直接对 raster-dem 客户端着色,无需预渲染。paint 属性为 color-relief-color、color-relief-opacity(默认 1),GL JS 5.20 起支持 resampling。色带用对 ["elevation"] 的 interpolate 表达式,该表达式仅在 color-relief-color 内有效。MapLibre 没有 raster-color、raster-value、raster-color-mix。
  3. 运行时等高线:maplibre-contour 在 Web Worker 中由同一 DEM 瓦片派生矢量等高线瓦片,通过注册协议提供,无需预生成等高线瓦片集。用 DemSource 配置 url、encoding、maxzoom、worker,调用 setupMaplibre(maplibregl),再以 contourProtocolUrl 的 thresholds(缩放级别到 [次, 主] 米区间)、elevationKey、levelKey、contourLayer 添加矢量源。encoding 必须与样式源中的 DEM 完全一致。
  4. 3D 地形与天空:map.setTerrain({source, exaggeration}),terrain 仅接受 source 与 exaggeration(默认 1),是根级样式对象,setTerrain(null) 关闭。需设置 pitch 才能看到立体效果,pitch: 0 时看似平坦,不要靠提高 exaggeration 修复。MapLibre 无 sky 图层类型,天空是根级 sky 对象或 map.setSky(),属性含 sky-color、horizon-color、fog-color、sky-horizon-blend、horizon-fog-blend、fog-ground-blend、atmosphere-blend;sky-type、sky-atmosphere-sun 等为 Mapbox 属性,在此无效。fog-color 需要 3D 地形。map.queryTerrainElevation(lngLat) 可查询某点高程。

限制:地形会解码 DEM、构建网格并重绘所有覆盖图层,开销最大,高缩放与倾斜时低端设备易卡顿,应保持地形栈精简。高程值错误、瓦片集选择与 DEM 生成不属于本技能。资料未提供收费、价格与平台信息。