使用阿富汗和巴基斯坦地区的SRTM数据生成山体阴影和彩色地形图

114 篇文章 239 订阅
40 篇文章 9 订阅
使用阿富汗和巴基斯坦地区的SRTM数据生成山体阴影和彩色地形图

数据来自GIST,工具来自GDAL

原文地址:http://developmentseed.org/blog/2009/jul/30/using-open-source-tools-make-elevation-maps-afghanistan-and-pakistan/

在阿富汗和巴基斯坦这样多山的地方,高程数据是非常重要的。GIST项目是使用航天飞机雷达地形测绘任务(STRM)获取各个国家的高程数据,并存储为GeoTIFF格式。

但是使用栅格数据处理和使用矢量数据(比如shp文件)处理是两种完全不同的处理流程。幸运的是,开源的GDAL项目提供了非常好的工具来处理这些文件。

一个叫gdaldem新工具,可以使用高程数据生成山体阴影数据以及彩色地形图。山体阴影使用原始的高程数据生成高山或者丘陵在某一侧的影子;而彩色地形图是把高程数据中不同的高度用不同的颜色来进行渲染。这两个工具结合起来产生的图像效果非常惊人。(点击下面的图可以查看大图)

图1 山体阴影图

图2 彩色地形图

图3 上面两个图像组合的图像

  下面的步骤就是讲怎么生成上面的图像的一个教程。来自DM Solutions Group。

1、安装GDAL。在写这篇文章的时候,这个gdaldem还在开发库中,所以你可以从svn获取或者使用一个nightly snapshot的版本来使用。(译者注:这篇文章写于2009年7月30日,当时gdaldem还没更新到稳定版本)。

2、我的原始dem数据一共有9个GeoTiff文件(阿富汗有4个,巴基斯坦有5个)。首先我使用gdal_merge.py把这9个文件合并为一个1.4G的文件(译者注:现在也可以gdalbuildvrt工具来完成这个功能了,如果你觉得python脚本不方便的话)。

gdal_merge.py的命令行为:

$ gdal_merge.py-O afpak_merged.tif .. / afghanistan_srtm_ /afghanistan_srtm_.tif .. / pakistan_srtm_ / pakistan_srtm_.tif 

gdalbuildvr.exe的命令行为(译者注:这点是我自己加的,这个tif.txt就是把要合并的9个tif的路径写进去,一行一个路径):

$ gdalbuildvr -input_file_list DEM\tif.txt afpak_merged.vrt 

3、生成山体阴影数据(译者注:-s 111120就是图像分辨率和高程之间的换算关系,因为SRTM的数据分辨率一般是90米的,而且是按照WGS84经纬度的坐标系下,所以需要用这个转换系数进行转换一下)

$ gdaldem hillshade afpak_merged.tif hillshade_afpak.tif -z 5 -s 111120

4、创建彩色地形图。在这里之前你先要创建一个配置文件,就是说明用什么颜色来表示高程多少,下面是我使用的一个颜色列表:

3500255 255 255
2500235 220 175
1500190 185 135
700240 250 150
050 180 50
-32768200 230 255

下面是命令行:

$gdaldem color-relief afpak_merged.tif ramp.txt color_relief_afpak.tif

最后,我们希望图像的投影是Google投影。我试图使用合并后的图像进行投影转换,但是结果是错的,所以只好先把每个数据先进行投影转换,然后在合并。投影转换的命令行如下:

$gdalwarp -s_srs EPSG:4326 -t_srs EPSG:900913 color_relief_afpak.tifcolor_relief_afpak_goog.tif
$gdalwarp -s_srs EPSG:4326 -t_srs EPSG:900913 color_relief_afpak.tifcolor_relief_afpak_goog.tif

最后输出的结果是两个比较大的tif文件。把这两个文件用QGIS打开,然后把山体阴影数据放到上面,将其透明度设置为70%,然后效果看起来非常好。

对于这一点,我们使用的tile rendering infrastructure(译者注:这个tile renderinginfrastructure可以参考这里http://developmentseed.org/blog/2009/jul/01/generating-custom-map-tiles-rapidly-cloud/)软件不支持栅格数据。因为我们中心使用的是PostgreSQL数据库作为唯一的数据源,而PostgreSQL数据库只能存储矢量数据,所以我们现在使用S3来存储栅格数据。当需要的时候,这些数据自动下载到计算节点进行渲染。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值