-
大小: 40KB文件类型: .cpp金币: 1下载: 1 次发布日期: 2021-06-16
- 语言: C/C++
- 标签: projection c++
资源简介
处理himawari 8的hsd数据,并进行等经纬度投影,生成反射率、亮温、太阳高度角、方位角、卫星高度角、方位角数据
代码片段和文件信息
/* 本程序为日本Himawari-8卫星hsd格式数据经投影转换为LDF格式数据,并可用swap打开
* 主要功能:能对圆盘分幅数据联合要求所有分幅文件在同一目录下,并将坐标转换为经纬度坐标
* 如果要地形矫正将地形文件china.img放在执行时的当前目录,
* 默认情况下投影区域为 经度70-150,纬度0-60范围,格点精度0.01度,默认处理通道为所提供文件的通道值,
* 默认输出文件为将hsd文件的.DAT替换为.ldf
用法:H8proj.exe [-dstwin LULON LULAT DX DY] [-size nx ny] [-bands xyz...] [-addsun] [-addsat] srcfile [dstfile]
* 例子:1. H8proj.exe -dstwin 70 60 0.01 -0.01 -size 8000 6000 -bands 123 HS_H08_20150715_0130_B03_FLDK_R05_S0210.DAT H08_20150715_0130.img
2. decodeHSD.exe HS_H08_20150715_0130_B03_FLDK_R05_S0210.DAT
* 内存要求,因为程序在处理投影时,会自动打开投影区域内涉及的所有分幅文件,当选择区域较大时系统内存要较大
* 浙江气候中心 张小伟 qq:51903418
*
*
* 2015.7.16 修正计算亮温时的错误,还未测试,亮温计算是否正确
* 2015.7.17 增加ldf格式输出,使输出结果可以在SWAP软件下打开
* 2015.7.20 使用官方swap ldf文件头修正计算亮温时,公式中的波长单位错误
* 2016.1.15 东华王新刚增加多通道处理,卫星天顶角层 ,多字节字符处理等功能
* 2016.4.29 和卫星中心陈杰讨论,增加地形校准功能
* 2016.5.3 将卫星天顶角的计算从原来的读取插值法换成直接计算法不同系统不同路径分割
* 2016.8.2 修改路径处理中的bug,增加pack选项来适应hsd数据结构的对齐问题
* 2016.10.17 增加太阳高度角计算部分,利用了hsd文件中的太阳位置,其值与普通天文计算公式位置有1-2%差异,
* 还未确切差异的原因,欢迎赐教和讨论。
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#ifdef _MSC_VER
#include “stdafx.h“
#endif
using namespace std;
#if defined(WIN32) || defined(WIN64)
#define pathsplit “\\“
#else
#define pathsplit “/“
#endif
const double omega_e=1.00273790934; //solar day over sidereal day
const double pi=3.14159265358979323846;
const double r2d=180/pi;
const double d2r=pi/180;
const double Re=6378.135;
const double AU=1.49597870691E8; /* Astronomical unit - km (IAU 76) */
const double topdx=0.008333333333333333topdy=0.008333333333333333;
const double topulat=70.0topulon=70.0;
const int topnx=8400topny=8400;
const long topnn=topnx*topny;
int topflag=0;
short topdata[topnn];
double getHeight(const char *filedouble londouble lat){
FILE *fp;
int ij;
double h=0;
if(topflag==0){
if((fp=fopen(file“rb“))==NULL){
fprintf(stderr“can‘t open %s\n“file);
topflag=-1;
return 0; }
fread(topdatasizeof(short)topnnfp);
fclose(fp);
topflag=1;
}
if(topflag==-1) return 0;
j=(lon-topulon)/topdx+0.5;
i=(topulat-lat)/topdy+0.5;
if(i>=0 && i<8400 && j>=0 && j<8400){
if(topdata[i*8400+j]>0 && topdata[i*8400+j]<10000) h=topdata[i*8400+j]/1000.0;
}
return h;
}
string getFilePath(char* fullPath);
//#define DEBUG 1
/*****************************************************
*头信息 普通版本128字节,扩展版本 128+1024 字节。
******************************************************/
typedef struct swapldf {
/*0*/short wFileID ;// 2字节。文件标识 局地文件为“LA“ 植被 NV -- NDVI 植被 DV -- DVI 植被 RV -- RVI LST -- LS SSY -- SS
/*2*/short wSatelliteID; // 2字节。 卫星标识 NOAA-14: 14 NOAA-12: 12 FY-1C:103 TERRA:1001
/*4*/short wOrbitNo; /* 2字节。 轨道号 */
/*6*/short wUporDown; /* 2字节。升降轨标记 1: 升轨 0: 降轨 */
相关资源
- C++获取计算机的CPU ID,硬盘序列号等
- C++头文件转delphi工具 + 源码
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
川公网安备 51152502000135号
评论
共有 条评论