Cesium-地球材质-高程

1. 创建viewer

创建viewer并添加地形

const viewer = new Cesium.Viewer("cesiumContainer", {
  terrain: Cesium.Terrain.fromWorldTerrain({
    requestVertexNormals: true, //Needed to visualize slope
  }),
});

2. 创建canvas色条

添加getColorRamp方法,创建canvas,按比例添加颜色值

const elevationRamp = [0.0, 0.045, 0.1, 0.15, 0.37, 0.54, 1.0];
const slopeRamp = [0.0, 0.29, 0.5, Math.sqrt(2) / 2, 0.87, 0.91, 1.0];
const aspectRamp = [0.0, 0.2, 0.4, 0.6, 0.8, 0.9, 1.0];
function getColorRamp(selectedShading) {
  const ramp = document.createElement("canvas");
  ramp.width = 100;
  ramp.height = 1;
  const ctx = ramp.getContext("2d");

  let values;
  if (selectedShading === "elevation") {
    values = elevationRamp;
  } else if (selectedShading === "slope") {
    values = slopeRamp;
  } else if (selectedShading === "aspect") {
    values = aspectRamp;
  }

  const grd = ctx.createLinearGradient(0, 0, 100, 0);
  grd.addColorStop(values[0], "#000000"); //black
  grd.addColorStop(values[1], "#2747E0"); //blue
  grd.addColorStop(values[2], "#D33B7D"); //pink
  grd.addColorStop(values[3], "#D33038"); //red
  grd.addColorStop(values[4], "#FF9742"); //orange
  grd.addColorStop(values[5], "#ffd700"); //yellow
  grd.addColorStop(values[6], "#ffffff"); //white

  ctx.fillStyle = grd;
  ctx.fillRect(0, 0, 100, 1);

  return ramp;
}

3. 创建材质

使用Cesium.Material.fromType方法创建材质

const minHeight = -414.0; // approximate dead sea elevation
const maxHeight = 8777.0; // approximate everest elevation

const material = Cesium.Material.fromType("ElevationRamp",{
  image:getColorRamp('elevation'),
  minimumHeight:minHeight,
  maximumHeight:maxHeight
});

把材质附加到地球上

viewer.scene.globe.material = material;

链接地址

https://sandcastle.cesium.com/#c=jVVZbxs3EP4rhPoQGVCovQ/JNoo6TvuQA4iD9CHKA707kohwlxuSK9kt9N8zJFdHXEGoHqjlcL6Pwzkr2WpDNhy2oMgNaWFL7kDzvqFfnGy8GFVufydbw3gLajGakH8XLSEGlELJbA/47Pd0qWTzt1SiHgRjp02Igh89aPMFlIGnD1I1TOgZMaqHCZlOPwDUUBMj0RjdM8H/AaKF7MCCd1eTRbu7mi/aRVs5ixve/gV8tTZo9OskTGgwRxLCuk7JJ94wA6QGVhMNjICADTNcHsHs6QAu8jw/A4YNKDT2FLtHH0SfWNMhw9eABhOCS5Lav9At7jPO7ZomExLS4Nt8T+Ce9QIclU51Qt4zs6b6hzLj6IpMSWTFheMpwxc8THdQmZdEdknskjmoQx6Ay76trOlkBeZOCqkseqzxSZWB+mHNat6urnx8/SXK09ey6htoDa0UoH/uBdidzQ7WbphejGxwiNOmW16bNWLCIDgK13uHh/MjeWWeUOLOnUEtZoYljWpPaDUFYH4yganjgHxJXtpLbm5uyGJ0DNVoeAEZgHjHL0FzRDuUabjA57PvDNchfv+Px4fpHNExgJ7JP9i7ZqVq1EAHDR5/h7XH1J8Kma3jbawn1sP4712PAMrq2kX1wchu7K/5GnyboBG/Be5n3Yqp/ihY9f0SKPSgKE/y+yOoh0uYyGPexPEf+ZsB0/H24j3xARPExYBRUF+CJB7y9m2ZJ9EAkYq1q4vGpR61XNb5wQvPIITcXkJle5T9DajtmhsYIoXRWXIhHsyzAIwW0sxP5Z8wuqeRCvc5rcD0qnWJj5LdSVvDSCvOBJINXfX9IHFt9fNzB1ge96fJjP3Y5RX2rRXMfqnrV4esf2UbKLFdkzd945vf7NBD/Rl7Oj3bt8hD3/UzguoKWqArIR+Bnli7/zxVrVgDilENxs4SPwZqbKq8dTbNTqfNHcOpoDlr47EvkqiIwjSnWZkFRVEGZTbx8jSLcR/RJEvTMsmDeJBHZV7kcUbDIkvyOA293D9bKlszw6VDEa7B1eiMJBSTPMrwoixOMKfygbDjplrPyGtsqVGQlWVRpEVaZmEZDQpKCjEjGY2KIE6CNE3SIi/T1J3u/LwaTUbX2ibHrYcQ8jtvOqkM6ZUYUzo10HQCXaenj331HbC9au3LmZDr6Sn0uuYbwuubM/OYVIJpjSfLHnMRB+didHs9Rf3/QIV0j/6Iw02wZ6u2Dm/feSGl9HqK2/NII6V4ZOoF808

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值