zoukankan      html  css  js  c++  java
  • GDAL工具使用示例(一)

    GDAL提供的工具都是非常的实用,后续打算写一系列的博文来对GDAL提供的工具进行简单的说明,并结合实际的例子进行演示,希望对数据处理的同学有用。

    首先说明一下需要准备的数据,我这里使用的是SRTM的DEM数据,至于下载方式可以找我之前的博客。数据截图如下,下载的原始数据都是ZIP文件。也就是下图中的10个zip文件。

    今天首先对gdalinfo和gdalbuildvrt这两个工具做个说明。gdalinfo顾名思义,就是用来查看图像信息,这些图像信息基本上包括图像中的所有信息,目前除了不能查看图像的灰度值之外(查看图像的灰度值有另外一个工具,后续介绍),其他的信息都可以通过这个工具来进行查看。

    首先来查看其中一个zip文件中图像的信息(当然你也可以把zip解压后再进行处理)。这里不对zip文件进行解压是为了演示GDAL中比较牛的一个地方,可以直接访问zip压缩包中的数据。语法为:

    gdalinfo.exe /vsizip/E:/newzealand/srtm_70_21.zip/srtm_70_21.tif
    关于GDAL访问zip压缩包文件中的数据路径拼写可以参考我之前的博客[3]。上面的命令输出信息如下:



    从上图可以看出,GDAL输出了zip压缩包中图像的大小,肆角坐标,数据类型,NoData值,此外还有文件的关联文件。除此之外,gdalinfo还可以使用-mm命令来统计图像的最大最小值,-stats命令来统计图像的极值,均值、方差等统计信息,-hist来统计图像的直方图等信息。此外还有一些选项用来控制输出信息是否显示等,具体参考官方文档[1]。

    gdalinfo工具使用至此告一段落,下面我们要把上面下载的SRTM的dem数据来进行拼接,形成一个大的文件。这里我们使用一个比较“高级”的工具——gdalbuildvrt来完成这项工作。其实和我们经常用的镶嵌作用非常的类似,这里也差不多。下面说说操作方式。

    接下来需要把这些所有的zip中的tif文件根据地理坐标拼接成一个大图像,这里使用GDAL的VRT文件格式,一种虚拟的文件格式使用起来非常方便。对于生成VRT文件,可以分为两种方式,一种是将所有的zip数据解压后进行处理;另一种是不解压,直接进行处理。
    首先看解压的处理方式,其实很简单,首先将上面所有的zip解压,得到里面的tif文件存放在一个文件夹中,比如我这里就是E:\newzealand。具体做法如下:把上面所有的tif文件的路径存放在一个txt文件中,文件名叫vrt_input_tif.txt。如下所示:

    E:/newzealand/srtm_70_21.tif
    E:/newzealand/srtm_70_22.tif
    E:/newzealand/srtm_70_23.tif
    E:/newzealand/srtm_71_19.tif
    E:/newzealand/srtm_71_20.tif
    E:/newzealand/srtm_71_21.tif
    E:/newzealand/srtm_71_22.tif
    E:/newzealand/srtm_72_20.tif
    E:/newzealand/srtm_72_21.tif
    E:/newzealand/srtm_72_22.tif
    对于不解压处理,可以直接使用GDAL提供的虚拟访问机制中的zip访问方式,直接读取zip压缩包中的数据。具体作法与上面类似,把上面所有的zip文件的路径存放在一个txt文件中,文件名叫vrt_input_zip.txt。如下所示:
    /vsizip/E:/newzealand/srtm_70_21.zip/srtm_70_21.tif
    /vsizip/E:/newzealand/srtm_70_22.zip/srtm_70_22.tif
    /vsizip/E:/newzealand/srtm_70_23.zip/srtm_70_23.tif
    /vsizip/E:/newzealand/srtm_71_19.zip/srtm_71_19.tif
    /vsizip/E:/newzealand/srtm_71_20.zip/srtm_71_20.tif
    /vsizip/E:/newzealand/srtm_71_21.zip/srtm_71_21.tif
    /vsizip/E:/newzealand/srtm_71_22.zip/srtm_71_22.tif
    /vsizip/E:/newzealand/srtm_72_20.zip/srtm_72_20.tif
    /vsizip/E:/newzealand/srtm_72_21.zip/srtm_72_21.tif
    /vsizip/E:/newzealand/srtm_72_22.zip/srtm_72_22.tif
    接下来打开cmd,切换到GDAL的工具目录,然后输入下面的内容就可以得到一个NZL_zip.vrt的文件,可以用ArcMap10打开,看到图像整个拼接成一整块了。
    gdalbuildvrt.exe -input_file_list E:\newzealand\vrt_input_tif.txt E:\newzealand\NZL_tif.vrt
    gdalbuildvrt.exe -input_file_list E:\newzealand\vrt_input_zip.txt E:\newzealand\NZL_zip.vrt
    

    我们再次使用gdalinfo工具查看拼接好的vrt文件信息,可以看到图像的大小已经变大了,而且文件相关的文件也包含了所有的zip文件。直接用ArcMap10打开上面的VRT文件,发现所有的数据均已经拼接成一个大文件。VRT文件的大小仅仅6kb,基本上不占用磁盘空间即可管理大数据。有点象ArcMap10的镶嵌数据集的功能。

     
    注意:必须使用ArcMap10以上版本才能打开,10版本以下的不支持GDAL的VRT数据集。或者使用QGIS打开。

    参考资料:

    [1] http://gdal.org/gdalinfo.html

    [2] http://gdal.org/gdalbuildvrt.html

    [3] http://blog.csdn.net/liminlu0314/article/details/8589042

    [4] http://blog.csdn.net/liminlu0314/article/details/8068715

  • 相关阅读:
    【Anagrams】 cpp
    【Count and Say】cpp
    【Roman To Integer】cpp
    【Integer To Roman】cpp
    【Valid Number】cpp
    重构之 实体与引用 逻辑实体 逻辑存在的形式 可引用逻辑实体 不可引用逻辑实体 散弹式修改
    Maven项目聚合 jar包锁定 依赖传递 私服
    Oracle学习2 视图 索引 sql编程 游标 存储过程 存储函数 触发器
    mysql案例~tcpdump的使用
    tidb架构~本地化安装
  • 原文地址:https://www.cnblogs.com/xiaowangba/p/6313949.html
Copyright © 2011-2022 走看看