modis数据处理的坑(MOD02,mod03,mod04,MCD19A2)
一直以来处理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)的更多相关文章
- MODIS系列之NDVI(MOD13Q1)二:modis数据相关信息
1.MODIS数据的特点 (1)全球免费:NASA对MODIS数据实行全球免费接收的政策(TERRA卫星除MODIS外的其他传感器获取的数据均采取公开有偿接收和有偿使用的政策),这样的数据接收和使用政 ...
- MODIS系列之NDVI(MOD13Q1)一:数据下载(一)基于插件
引言: 写MODIS数据处理这个系列文章的初衷,主要是为了分享本人处理MODIS数据方面的一些经验.鉴于网上对这方面系统性的总结还比较少,我搜集资料时也是走了许多的弯路,因此希望通过此文让初学者能够更 ...
- MTCNN试用
检测工作想借用MTCNN里的48-net,源码来自CongWeilin Git 下下来就能跑,真是良心 进入pepare_data准备好数据以后进入48-net,目录下有一个pythonLayer.p ...
- MODIS产品分析和数据处理
ENVI+IDL 17种MODIS产品的功能解释 https://wenku.baidu.com/view/6fd329dcf524ccbff0218440.html ENVI读取MODIS数据大致步 ...
- python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
简介 有些 post 的请求参数是 json 格式的,这个前面发送post 请求里面提到过,需要导入 json模块处理.现在企业公司一般常见的接口因为json数据容易处理,所以绝大多数返回数据也是 j ...
- Spark踩坑记——数据库(Hbase+Mysql)
[TOC] 前言 在使用Spark Streaming的过程中对于计算产生结果的进行持久化时,我们往往需要操作数据库,去统计或者改变一些值.最近一个实时消费者处理任务,在使用spark streami ...
- geotrellis使用(二十四)将Geotrellis移植到CDH中必须要填的若干个坑
目录 前言 若干坑 总结 一.前言 近期干了一件事情,将geotrellis程序移植到CDH中(关于CDH,可以参考安装ClouderaManager以及使用ClouderaManage ...
- JavaScript 跳坑指南
JavaScript 跳坑指南 坑0-String replace string的replace方法我们经常用,替换string中的某些字符,语法像这样子 string.replace(subStr/ ...
- 翻译-In-Stream Big Data Processing 流式大数据处理
相当长一段时间以来,大数据社区已经普遍认识到了批量数据处理的不足.很多应用都对实时查询和流式处理产生了迫切需求.最近几年,在这个理念的推动下,催生出了一系列解决方案,Twitter Storm,Yah ...
随机推荐
- 2019 花椒直播java面试笔试题 (含面试题解析)
本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.花椒直播等公司offer,岗位是Java后端开发,因为发展原因最终选择去了花椒直播,入职一年时间了,也成为了面 ...
- Nginx中的break和last
rewrite中的break和last 两个指令用法相同,但含义不同,需要放到rewrite规则的末尾,用来控制重写后的链接是否继续被nginx配置执行(主要是rewrite.return指令). 示 ...
- Java 数组(一)定义与访问
一.数组 1.容器概述 容器:是将多个数据存储到一起,每个数据称为该容器的元素. 2.数组概述 数组:数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致. 数组特点: (1)数组是一 ...
- 面试题:android的安全机制有哪些
1 uid . gid . gids Android 的权限分离的基础是建立在 Linux 已有的 uid . gid . gids 基础上的 . UID: Android 在 安装一个应用程序,就会 ...
- 解决vue多次提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <template> <button @click="subm ...
- Request和Response。
复习点:1.重定向问题 2.输出字符串到浏览器.3.文件下载需求:1. 页面显示超链接2. 点击超链接后弹出下载提示框3. 完成图片文件下载 Request和Response Request: 1. ...
- Linux系统禁止root账号远程登录
修改配置文件/etc/ssh/sshd_config,去掉PermitRootLogin前的注释,修改值为no,然后重启sshd服务即可 #LoginGraceTime 2m PermitRootLo ...
- z = z*z + c的分型图如何画
使用python的图形库. 环境:conda+jupyter notebook 代码如下: import numpy as np from PIL import Image from numba im ...
- Redis的内存分配
内存分配 Redis进程的内存消耗主要包括:自身内存 + 对象内存 + 缓冲内存 + 内存碎片.1 自身内存 Redis自身内存消耗非常少,通常used_memory在800KB左右,used_mem ...
- Linux学习之组管理和权限管理
Linux组的基本介绍 在Linux中的每个用户必须属于一个组,不能独立于组外.在Linux中每个文件有所有者,所在组,其他组的概念. 1)所有者 2)所在组 3)其他组 4)改变用户所在的组 文件/ ...