zoukankan      html  css  js  c++  java
  • 地形渲染之彩色地形图(Painted Relief Map)

      Relief Map(也称ShadedRelief Map或Hillshade Map,地形图),指通过制图手段在二维地图上展现出三维地表的形态,如http://www.maps-for-free.com/这里提供的地图,就是用Mashup的方式将阴影图和世界地图融合得到的。一般情况下,在GIS软件中我们想得到类似的效果,都是将由DEM得到的灰度阴影图和彩色的DEM图层叠加,通过控制透明度来实现的,但是这种方式的视觉效果往往不令人满意,整个地图的色调显得非常的灰暗,而且阴影图模拟的起伏细节也显示得不够明显,如下图所示。本文会介绍一种图像融合的方式,既不会影响DEM的色彩,又不丧失阴影图细节,实现软件为ArcGIS。

     

             这里用的的方法就是Pansharpening,维基百科里给出的解释是Pansharpening is a process of merging high-resolution panchromatic and lower resolution multispectral imagery to create a single high-resolution color image,也就是将一个高分辨率的单波段全色影像和一个低分辨率的多波段彩色影像融合,从而得到一个高分辨率的单波段彩色影像。这里我们用到的全色影像就是阴影图,而多波段是原始的DEM数据。

    (1)数据预处理

             做地形图我们手头的必备数据就是DEM,如果苦于没有DEM的同学,可以去http://srtm.csi.cgiar.org/index.asp看一下,山姆大叔还是很慷慨的,提供了90M分辨率的全球DEM下载,这么大的影像当然是分块的,咱可以根据经纬度的范围选择下载后再将其拼接起来,这些细节就不再赘述了,详见ArcGIS Desktop Help吧~,那么阴影图是如何得到的呢?这个常用的工具在ArcGIS中可以直接找到——Hillshade,这个工具是通过模拟太阳光照强度来展示地形的起伏效果,两个重要参数一个太阳入射角(默认值是315指太阳从西北方向入射,这里根据手头的数据我改为了135度),另一个是太阳方位角就取默认值,这样就得到了上图中间的阴影图,灰度值从0-255,光照值大就是高地,值小的是洼地。

             再下来要给DEM上色了,这步还是很关键的,这里用了stretch拉伸的方式渲染,选取一个合适的color ramp,但是现在单波段怎么变成RGB的多波段DEM呢?这里要先在ArcMap中DEM图层的右键菜单里选择导出,勾选下图中的use renderer和force rgb,这样准备工作就ok了。

     

    (2)影像融合

             首先打开Window菜单下的Image Analysis窗口,同时选中DEM和阴影图,然后点击下面Processing面板中的Pan-sharpening tool,这时就会生成一个新的图层,下面来一起设置一下这个图层的显示属性:

    1. 右键属性,在Functions面板中,右键打开Pansharpening Function的属性,在general里设置输出的像元类型,这里选择8 bit unsigned;然后在Pan sharpen里设置Method为Simple Mean,点击确定。
    2. 右键Pansharpening Function,选择Insert——stretch function,勾选Use Gamma,相应的把每个波段的gamma值设置为0.5.

     

    注:这里应用gamma校正,是希望调整由于显卡或者显示器的原因令实际输出的图像在亮度上有偏差,Gamma值等于1的时候,曲线为与坐标轴成45°的直线,这个时候表示输入和输出密度相同。高于1Gamma值将会造成输出亮化,低于1Gamma值将会造成输出暗化。一些研究表明Gamma值取0.40.45是最接近人类视觉系统的,这个还要自己来尝试,看看怎样得到的图像效果最好。

     ——爱地图,关注制图,交流制图问题欢迎@王又又_GeoInfo

  • 相关阅读:
    v-for给img的src动态赋值问题
    关于vue+axios上传文件的踩坑分析
    关于nth-of-type和nth-child的关系
    关于fetch
    关于移动端适配
    golang变量作用域问题-避免使用全局变量
    grpc-gateway:grpc转换为http协议对外提供服务
    google的grpc在golang中的使用
    golang中的rpc包用法
    homebrew常用命令
  • 原文地址:https://www.cnblogs.com/gisangela/p/2861361.html
Copyright © 2011-2022 走看看