使用GDAL下载并转换SRTM的DEM数据(一)

来源:互联网 发布:js数组去重是什么 编辑:程序博客网 时间:2024/04/29 20:18

有时候需要用到DEM数据,常用的免费的DEM数据就是SRTM的DEM数据。

    SRTM数据主要是由美国太空总署(NASA)和国防部国家测绘局(NIMA)联合测量的,SRTM的全称是Shuttle Radar Topography Mission,即航天飞机雷达地形测绘使命,2000年2月11日上午11时44分,美国“奋进”号航天飞机在佛罗里达州卡那维拉尔角的航天发射中心发射升空,“奋进”号上搭载的SRTM系统共计进行了222小时23分钟的数据采集工作,获取北纬60度至南纬56度之间,面积超过1.19亿平方公里的9.8万亿字节的雷达影像数据,覆盖全球陆地表面的80%以上,该计划共耗资3.64亿美元,获取的雷达影像数据经过两年多的处理,制成了数字地形高程模型,该测量数据覆盖中国全境。     SRTM数据每经纬度方格提供一个文件,精度有1 arc-second和3 arc-seconds两种,称作SRTM1和SRTM3,或者称作30M和90M数据,SRTM1的文件里面包含3601*3601个采样点的高度数据,SRTM3的文件里面包含1201*1201个采样点的高度数据。目前能够免费获取中国境内的RTM3文件,是90米的数据,每个90米的数据点是由9个30米的数据点算术平均得来的。    目前可以找到的SRTM的DEM数据下在地址有下面几个,第一个,最原始的是http://srtm.csi.cgiar.org/SELECTION/inputCoord.asp。将全球分为24×72的大小格网。如下图所示:    然后在网页中选择要下载的区域,下载的格式有GeoTiff和ASCII两种格式,其中海洋部分没有高程数据,所以大部分是没有的。    第二个,国际科学数据服务平台(中国的),地址为:http://datamirror.csdb.cn/admin/datademMain.jsp。里面提供了SRTM90米分辨率原始高程数据和ASTER GDEM30米分辨率数字高程数据产品两种DEM数据。先注册一个帐号,然后就可以下载了。    第三个是位于加利福尼亚圣地亚哥大学的一个ftp,地址是ftp://topex.ucsd.edu/pub/srtm30_plus/。这里面的DEM也是SRTM的,不过该数据对于海洋部分进行了填充,即在原有的高程数据中加入了海洋海深度数据,数据值大于零的为海拔高,小于零的为海深。    关于SRTM数据的介绍以及下载就到这里,下面我们下载的是第三个,从ftp下载数据后发现数据是一个以srtm为后缀的数据,研究发现该数据是一个二进制的裸数据,所以不能用ENVI,Erdas或则ArcGIS等软件直接打开使用,所以在这之前需要做一个格式转换,就是将二进制的裸数据转为常用的GeoTiff等之类的数据。感觉还是蛮麻烦的,有没有一种方式直接下载的同时就把格式转换好呢?    通过之前写过一篇博客,使用GDAL下载网络数据的博客,地址为:http://blog.csdn.net/liminlu0314/article/details/7881285。既然GDAL可以获取网络数据,而且GDAL可以打开裸数据(这部分内容之前也写过一篇博客,地址为:http://blog.csdn.net/liminlu0314/article/details/7753377)。通过这两个知识,要是结合在一起,然后再用GDAL做一个格式转换,不就可以达到我们的目的了吗?     首先从SRTM的ftp的元数据中可以知道,这个数据的大小是一个4800×6000的大小的单波段,有符号的16bit的整形数据。数据的投影就是标准的WGS84的经纬度坐标,分辨率大概是0.008333333333333度。图像左上角的坐标可以从文件名中得到,比如一个文件名为e020n40.Bathymetry.srtm,前四位e020表示东经20度,接下来的n40表示北纬40度,这样我们就可以知道这个数据的六参数就是:【20, 0.008333333333333, 0.0, 40, 0.0, -0.008333333333333】。    有了上面的分析,我们就可以根据之前的如何使用GDAL打开裸数据http://blog.csdn.net/liminlu0314/article/details/7753377,来构造一个VRT的XML文本文件来使用GDAL转换srtm数据了。根据上面的知识,写出的VRT文件的内容如下:

[html] view plaincopyprint?

GEOGCS[“WGS 84”,DATUM[“WGS_1984”,SPHEROID[“WGS 84”,6378137,298.257223563,AUTHORITY[“EPSG”,”7030”]],AUTHORITY[“EPSG”,”6326”]],PRIMEM[“Greenwich”,0,AUTHORITY[“EPSG”,”8901”]],UNIT[“degree”,0.0174532925199433,AUTHORITY[“EPSG”,”9122”]],AUTHORITY[“EPSG”,”4326”]]
20, 0.008333333333333, 0.0, 40, 0.0, -0.008333333333333

D:/SRTM/e020n40.Bathymetry.srtm
0
2
9600
MSB


将上面的内容保存为一个后缀名为vrt的文本文件,然后用GDALOpen,之后使用CreateCopy函数就可以轻松的转为GeoTiff或者Img格式了。至此我们就解决了一半的问题,即转换文件格式的问题。还有一个问题就是在转换格式的同时自动从网络下载,(当然你也可以使用下载软件直接下载完再转格式)。

    通过之前的博客,我们知道GDAL已经继承了下载和访问网络数据的接口,那么我们直接把上面VRT文件中的srtm的路径换成网络路径试试,看看行不行。将【D:/SRTM/e020n40.Bathymetry.srtm】换成网络路径【ftp://topex.ucsd.edu/pub/srtm30_plus/srtm30/data/e020n40.Bathymetry.srtm】,测试发现直接换成网络路径会有问题,之后在GDAL的Maillist里面找到了答案,对于VRT文件,远程路径前面需要加一个前缀/vsicurl/,所以最终的路径就是【/vsicurl/ftp://topex.ucsd.edu/pub/srtm30_plus/srtm30/data/e020n40.Bathymetry.srtm】,这样最后的VRT文件内容就是:

[html] view plaincopyprint?

GEOGCS[“WGS 84”,DATUM[“WGS_1984”,SPHEROID[“WGS 84”,6378137,298.257223563,AUTHORITY[“EPSG”,”7030”]],AUTHORITY[“EPSG”,”6326”]],PRIMEM[“Greenwich”,0,AUTHORITY[“EPSG”,”8901”]],UNIT[“degree”,0.0174532925199433,AUTHORITY[“EPSG”,”9122”]],AUTHORITY[“EPSG”,”4326”]]
20, 0.008333333333333, 0.0, 40, 0.0, -0.008333333333333

/vsicurl/ftp://topex.ucsd.edu/pub/srtm30_plus/srtm30/data/e020n40.Bathymetry.srtm
0
2
9600
MSB


好了,到这里我们将这两个文件都解决了,一次性的下载网络SRTM数据并使用GDAL读取转换。这样的话还是挺麻烦的,毕竟一次只能处理一个,要是有个批处理工具就好了,这样的话,就可以自动批量下载数据了。要实现上面的功能就需要自己写点程序啥的来搞定了,明天有时间写个代码来实现上面的功能,最后贴个图给大家看看下载的数据到底长啥样。

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 男生头发少适合什么发型 大圆脸适合什么发型男 男生脸大适合什么发型 头发硬适合什么发型 头大的人适合什么发型 脸圆的女生适合什么发型 男生头大适合什么发型 自来卷男生适合发型 脸大男生适合什么发型 头发多适合什么发型 男士两边剃掉的发型图 大圆脸适合什么发型 脸长的女生适合什么发型 男士方脸适合什么发型 脸宽的男生适合的发型 头大的男生适合什么发型 脸大的男生适合的发型 测试自己适合的发型 圆脸男生适合什么发型 脸圆的男生适合什么发型 圆脸女生适合什么发型 小眼睛适合什么发型 脸胖的人适合什么发型 板寸头男生短发发型 男士圆脸适合什么发型 发质硬适合什么发型 男胖子适合什么发型 什么脸型适合什么发型 男生头发软适合发型 方形脸适合什么发型男 流行的短发女生发型图片 脸大的女生适合什么发型 测一测你适合什么发型 男生大脸适合什么发型 头大脸大适合什么发型 头发少的女生适合什么发型 戴眼镜的男生适合什么发型 男生头大脸大适合什么发型 头发多的女生适合什么发型 脸小的女生适合什么样的发型 脸比较大的男生适合什么发型