-
大小: 40KB文件类型: .cpp金币: 2下载: 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: 降轨 */
相关资源
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
- c++ 虚拟摄像头
- hook,捕获所有案件,查找所有窗口,
- C语言课设计算器
- c++ 简易贪吃蛇源码
- 高精度加法(c++代码)
- C++调用百度地图案例
- 北京化工大学计算方法(C/C++)讲义
- 基于VC++的SolidWorks二次开发SolidWorks
- c++ 模拟鼠标按键
- OFD编辑器
- Beginning C++17 From Novice to Professional
- C++ STL实现
- opencv手部轮廓识别以及轨迹识别
- 百度C++编码规范
- C++ sql2008 WebServer通讯.docx
- c++ 定时关机程序源码
- 基于VSCode和CMake实现C++开发
- c++语法查询工具
- c++ 账务系统源码
- GBT 28169-2011 嵌入式软件 C语言编码规范
- c++ 猜拳小游戏
- XUnZip Zip解压缩.rar
评论
共有 条评论