一个快速进行重投影和重采样的小工具(or 外挂)

这篇日志以及这个工具可能会使需要做以下两种工作的同学受益:
(1)需要对大量的高分辨率栅格数据进行投影转换和重采样
(2)使用MOIDS各种产品进行区域、及全球尺度的研究,也就是需要对多个条带的MODIS产品进行拼接、重投影和重采样工作
本程序对于第二种情况有奇效,如果学会使用本程序,将会极大得减少数据预处理时间,使时间成本大大降低。
咳咳,老夫再唠叨一次,如果你是要使用任何MODIS产品进行多年的区域尺度研究,那么这个工具对于你的数据预处理工作将会大有益处,除非你根本就不在意花多少时间。。。

正文:
这个小程序主要适用于以下情境:做大尺度研究,经常需要对大范围、高分辨率栅格数据进行重投影及重采样。通常,在这种情况下,时间成本很高,仅处理单个文件就可能需要较长时间。而我写的这个小程序可以有效解决这一问题,不过,需要指出的是,这个程序只适用于使用“最近邻法”进行重采样的情况,也就是说重采样之后不会改变原始数据的像元值。

程序原理: 在很多情况下,我们使用诸如MODIS,AMSR-E这类遥感产品时,一般都会使用“最近邻法”(Nearest)来进行重投影及重采样。让我们细想一下,其实,这一步的主要时间都用在了计算输出数据的像元位置,而由于使用的插值方法是最邻近法,实际上我们并没有真的插值,我们只是将原始数据按一定投影规则分配到了输出文件的对应栅格里,而理论+实际上,这种“投影规则”对于不同时间的同“批次”数据来说都是一样的,那么,挖掘机就来了,我们为什么每次都要重新计算一次呢?这岂不是在浪费时间!!!所以,这个程序是直接利用 用户提供的“投影规则” 来进行重投影及重采样。说白了,我实际上没有进行任何投影计算,我只是在“搬运”数据,i.e. 我不是在创造真理,我只是真理的搬运工-_-!。所以,我更愿意把这个程序定义为一个“外挂”,而且是加速挂。

实话说,这个程序的原理极其简单,即便是使用IDL、python、R、matlab等脚本语言,也都可以很快实现。我最初就是在课题组里的工作站上使用R语言进行了覆盖整个青藏高原的地温数据的“搬运式”重采样和重投影,效果极佳,因为完全不需要进行常规的重投影和重采样工作,这使得我原本需要一个月才能完成的重投影工作只用了不到1天就全部做完。

但是我后面还要做很多不同数据源的重投影工作,使用R或者其他脚本来做总感觉有点不尽兴,所以我就写了这样一个小工具,考虑到代码执行效率的问题,程序完全使用C编写(编译环境是VS2015RC)。

下面介绍一下这个程序:(我觉得这对我烂到渣的语言表达能力是个巨大挑战)
主界面

1 Continue Reading →

一个实用的由MODIS正弦投影反推经纬度的小工具

好久没发日志了。。。
最近在没日没夜地做我的小论文,其间遇到很多问题,其中一个就是:如何得到MODIS数据网格的经纬度,而且要准确、可靠。一开始我在谷歌上搜了很久,但是很遗憾没有找到任何一个让我满意的方案,所以我就编写了如下的一个小工具:
1

Continue Reading →