使用Map Designer制作山体阴影

关于山体阴影

在制图领域,制图者常常使用山体阴影(Shaded relief, or hill-shading)技术,通过模拟光照和阴影来可视化地形。然而想要制作一幅精美的山体阴影图需要高精度的DEM数据,以及对专业制图软件十分熟悉。

在GeoHey,我们提供免费的高精度DEM为大众使用,您只需下载Map Designer工具就可以轻松地配置符合您需求的山体阴影图。下面,就让我们打开Map Designer一起制作一个漂亮的山体阴影图吧!

地图背景

地图背景表示地图最下面一层的颜色。这里我们设置为透明:

{
  "background_opacity": 0
}

数据源

Map Designer通过如下配置可以访问在线的DEM数据源:

{
  "background_opacity": 0,
  "data_sources": {
    "rt_base": {
      "source": "rt/dem_mercator_base",
      "type": "dem_tile"
    }
  }
}

山体阴影图层

先上配置:

{
  "background_opacity": 0,
  "data_sources": {
    "rt_base": {
      "source": "rt/dem_mercator_base",
      "type": "dem_tile"
    }
  },
  "layers": {
    "hillshader": {
      "data_source": "rt_base",
      "rules": [
       {
          "symbol_type": "raster",
          "res_max":156544,
          "res_min": 151,
          "zfactor": 2,
          "azimuth": 315,
          "altitude": 45,
          "scale": 0.15
        }
      ]
    }
  }
}

上面的配置文件声明了一个hillshade图层,这个图层有一个类型(symbol_type)为raster的规则(每个规则定义一种渲染数据的符号);res_max和res_min用来设置山体阴影这个图层显示的分辨率范围;zfactor表示对实际的高程值放大的倍数;azimuth表示光线的方位角,单位为度,0度表示光线从山体的正上方投射下来,90度表示光线从东边照射......,一般azimuth取值为315度;altitude表示光线的高度角,单位为度。90度表示光线位于DEM的正上方,0度表示光线和DEM平行;scale表示垂直方向和水平方向上单位距离的比值。比值越大,形成的山体阴影越陡峭。由于我们提供的DEM是墨卡托投影,该比值一般设为0-1之间。 下面是该配置产生的效果: alt 放大一点: alt

怎么样,加了光线的效果,地形是不是生动起来了呢?接下来,我们要给不同的高程渲染上不一样的颜色,让山体阴影更加好看:

{
  "background_opacity": 0,
  "data_sources": {
    "rt_base": {
      "source": "rt/dem_mercator_base",
      "type": "dem_tile"
    }
  },
  "layers": {
    "hillshader": {
      "data_source": "rt_base",
      "rules": [
       {
          "symbol_type": "raster",
          "res_max":156544,
          "res_min": 151,
          "zfactor": 2,
          "azimuth": 315,
          "altitude": 45,
          "scale": 0.15,
          "ramp_altitude": [-999, 0, 900, 1300, 1900, 2500],
          "ramp_color": [
            [0,0,0,0],
            [110,220,110,255],
            [240,250,160,255],
            [230,220,170,255],
            [220,220,220,255],
            [250,250,250,255]]
        }
      ]
    }
  }
}

在上面的配置中,我们新加了ramp_altitude和ramp_color这两个属性。前者用来指定高程的分段,后者用来指定这些高程分段的颜色([r,g,b,alpha]形式),高程之间的颜色则通过相邻的颜色进行插值得到。下面就是添加颜色渲染后的效果: alt 放大一些: alt 觉得上面的颜色不是你喜欢的?调整ramp_color的颜色试试,比如改成下面的值:

"ramp_color": [
              [0,0,0,0],
              [105,210,231,255],
              [167,219,216,255],
              [224,228,204,255],
              [243,134,48,255],
              [250,105,0,255]
              ]

就会出现下面这幅图的效果: alt

在Map Designer中,制作山体阴影就是如此简单灵活!

Atlas

To see what can we bring to the world.