一直以来处理modis产品都是用的 modis conversion toolkit(MCTK),用 IDL 来跑感觉好像也没什么问题,好像并没有去验证结果到底对不对,因为用的气溶胶数据 MOD04_L2,没法验证到底对不对,不像反射率数据可以对照地图影像。

流程也都是重投影--重采样--拼接--裁剪,其实应该也没有问题,因为最主要的步骤重投影是通过 MCTK 做的,错不了。

那么问题来了,为什么重投影是最重要的呢?

MODIS产品都是正弦投影 sinusoidal 投影坐标系,而我们一般要用的都是 WGS84 地理坐标系,不转换根本没法用,中国地区形变巨大,而且别的数据一般都不会有这种投影的。

MOD04处理完,要处理MOD02和03了,还是用 MCTK,就有坑出现了。

坑1:拼接结果偏离行政边界

  因为官方说数据都是1km的,所以为了图省事就把重采样这一步给去掉了,步骤是重投影--波段合成(02+03)--拼接。拼完的结果和行政边界一对比,咋偏了这么多。后来发现重投影到 WGS84 每景影像是不同分辨率的(度为单位都在0.01左右)。

解决方法:

  重投影后把每个影像重采样到0.01度,再拼接就不会偏离了。不过现在感觉这个解决方法也有点问题,可能是拼接的时候参数没设置好导致的。(看了一遍 ENVI_DOIT, 'MOSAIC_DOIT',好像没有参数控制这个,应该还是重采样的问题 )

OK,上面都弄完现在要搞 MCD19A2 的 MAIAC 数据了,我的天,MCTK 不支持这玩意,那这重投影可咋做(MCTK就是用来转投影的)。行吧,硬撸 IDL 代码,不就是搞个重投影。

坑2:自定义 geotiff 坐标信息

  MODIS 产品自身不带投影信息,在每个 hdf 文件的全局属性里才有,光读数据导出 tif 是没有坐标系的。找不到好的智能解决方法,只能用蠢方法。导出一个 tif 无非就是数组加坐标信息,坐标信息 modis 的 ENVI 似乎没有(我没找到啊!),只能自己来定义。自己定义又不知道每个参数都是干啥的咋设置,没在官方帮助文档里找到,只看到列了一排看不懂的参数。

解决方法:

  先根据这个 http://blog.sina.com.cn/s/blog_764b1e9d01010v69.html#cmt_5691CA7B-7F000001-13E754CBE-868-8A0 给一个hdf加上头文件,导出一个有坐标属性的tif,然后用 read_tiff 函数读取,得到 geotiff 属性,就可以复制过来自定义了。

坑3:自定义的 geotiff 起始坐标小数不见了

解决方法:

  以为是哪个属性没设置对,找了好久终于找到了每个参数的含义,参考这个 http://blog.sina.com.cn/s/blog_764b1e9d01010v69.html#cmt_5691CA7B-7F000001-13E754CBE-868-8A0。发现都没问题,应该是处理过程 envi 精度丢失了。原来 envi 在处理的时候会先把小数转到 float 型,再处理,在数字后面加上D就保证用double了,成功保留了小数

到这里感觉取得了突破性的胜利,剩下只要转投影就OK了,这还不简单,有 ENVI_CONVERT_FILE_MAP_PROJECTION 工具。

坑4:转完投影又套不上行政边界了

解决方法:

  原来是函数里的一个参数 warp_method (解决形变利用的方法)没设置好,默认是  0: Rotation, scaling, and translation (RST),改成 2: Triangulation 就没问题了。

坑5:每个转完的拼起来好像中间有缺失条带

解决方法:

  先拼接后转投影,完美解决条带问题,不用再去插值了

modis数据处理的坑(MOD02,mod03,mod04,MCD19A2)的更多相关文章

  1. MODIS系列之NDVI(MOD13Q1)二:modis数据相关信息

    1.MODIS数据的特点 (1)全球免费:NASA对MODIS数据实行全球免费接收的政策(TERRA卫星除MODIS外的其他传感器获取的数据均采取公开有偿接收和有偿使用的政策),这样的数据接收和使用政 ...

  2. MODIS系列之NDVI(MOD13Q1)一:数据下载(一)基于插件

    引言: 写MODIS数据处理这个系列文章的初衷,主要是为了分享本人处理MODIS数据方面的一些经验.鉴于网上对这方面系统性的总结还比较少,我搜集资料时也是走了许多的弯路,因此希望通过此文让初学者能够更 ...

  3. MTCNN试用

    检测工作想借用MTCNN里的48-net,源码来自CongWeilin Git 下下来就能跑,真是良心 进入pepare_data准备好数据以后进入48-net,目录下有一个pythonLayer.p ...

  4. MODIS产品分析和数据处理

    ENVI+IDL 17种MODIS产品的功能解释 https://wenku.baidu.com/view/6fd329dcf524ccbff0218440.html ENVI读取MODIS数据大致步 ...

  5. python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)

    简介 有些 post 的请求参数是 json 格式的,这个前面发送post 请求里面提到过,需要导入 json模块处理.现在企业公司一般常见的接口因为json数据容易处理,所以绝大多数返回数据也是 j ...

  6. Spark踩坑记——数据库(Hbase+Mysql)

    [TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...

  7. geotrellis使用(二十四)将Geotrellis移植到CDH中必须要填的若干个坑

    目录 前言 若干坑 总结 一.前言        近期干了一件事情,将geotrellis程序移植到CDH中(关于CDH,可以参考安装ClouderaManager以及使用ClouderaManage ...

  8. JavaScript 跳坑指南

    JavaScript 跳坑指南 坑0-String replace string的replace方法我们经常用,替换string中的某些字符,语法像这样子 string.replace(subStr/ ...

  9. 翻译-In-Stream Big Data Processing 流式大数据处理

    相当长一段时间以来,大数据社区已经普遍认识到了批量数据处理的不足.很多应用都对实时查询和流式处理产生了迫切需求.最近几年,在这个理念的推动下,催生出了一系列解决方案,Twitter Storm,Yah ...

随机推荐

  1. jQuery中cookie的简单操作

    jQuery 可以通过 jquery.cookie.js 插件来操作 Cookie. 用NuGet安装:PM>Install-Package js-cookie -Version 官网:http ...

  2. C#表达式参数解析算法,N级属性调用,函数值,变量值,常量值

    public static object GetValue(Expression expression) { var names = new Stack<string>(); var ex ...

  3. 基于C#实现的单点登录

    了解或想探索单点登录的朋友应该对单点登录有一个大致的了解,在这里我不在过多的阐述单点登录的概念. 单点登录说的通俗一点,就是一处登录(统一认证中心--Server),处处通行(Client). 一.第 ...

  4. .NET中的异步编程——动机和单元测试

    背景 自.NET 4.5发布以来已经有很长一段时间了.留在了我们的记忆里,其发布在2012年8月15日.是的,六年前.感觉老了吗?好吧,我不打算让你做出改变,而是提醒你一些.NET发布的亮点.此版本带 ...

  5. python --- Socketserver N部曲(1)

    曲一 socketserver 是为了简化服务器端开发而产生的,是一个高级的标准库.(背景介绍完毕,开始干) 一些概念 来自源码的一张图片,简洁又FengSao +------------+ | Ba ...

  6. Nginx配置多域名代理

    目的 当我们有多个站点需要对外网开放,每个站点的域名都不一样,然而我们只有一个外网ip.这种情况下,我们就可以使用一个Nginx来配置多域名代理.这种代理方式可以解决,在同一个端口上针对不同域名代理不 ...

  7. struts2启动报错:ERROR com.opensymphony.xwork2.conversion.impl.DefaultConversionPropertiesProcessor - Conversion registration error

    [framework] 2019-12-05 11:34:05,441 - org.springframework.web.context.ContextLoader -5352 [RMI TCP C ...

  8. MyCat教程四:实现读写分离

    本文我们来给大家介绍下通过MyCat来实现MySQL的读写分离操作 MyCat读写分离 一.读写分离配置   前面我们已经介绍过了mysql的主从同步和mycat的安装及相关配置文件的介绍,现在我们来 ...

  9. OSPF 多区域配置

    通过配置OSPF协议使网络互通. 实验拓扑 如图所示连接,地址规划如下: 名称 接口 IP地址 R1 f1/0 192.168.10.1/24 R1 f0/0 192.168.20.1/24 R1 f ...

  10. ELK快速入门(三)logstash收集日志写入redis

    ELK快速入门三-logstash收集日志写入redis 用一台服务器部署redis服务,专门用于日志缓存使用,一般用于web服务器产生大量日志的场景. 这里是使用一台专门用于部署redis ,一台专 ...