BSQ格式数据转换为RSD缺省的BIP格式数据

news2024/11/27 8:33:26

李国春

RSD内部统一以BIP格式排列数据,并且文件格式(非TFS)数据倒放(North Down)。早期是为了和设备无关位图(DIB)一致节省一点处理时间。现在设备处理能力增强了这点时间已经无关紧要,但是这种数据排列方式还是延续了下来。通常这些内部结构不需要用户关心,RSD自动处理成习惯的数据和图像。

高分卫星遥感数据运营部门分发的1级或者2级TIFF格式数据内部多保存为BSQ格式。RSD在读取时自动转换成BIP格式。但是也有一些部门(软件)开始就将其保存为BIP,RSD读取时再进行转换反而成了BSQ,读出来正射后结果如图1(左),4个波段的数据变成了16个小块。

下面介绍一个函数将其纠正为正常显示方式,图1(右)。

图1

下面的函数是一个读TIFF数据到缓存的函数。

int TifReadData(STRING name,WORD* buffer,int interleave);

这个函数将name 指定的TIFF数据以BIP格式读入到数据缓存buffer中。第三个参数int interleave是文件中的数据排列格式。如果你知道TIFF文件是BSQ格式排列的,将这个参数指定为BSQ,则读出数据如图1(右)。

下面是转换一个TIFF格式数据的完整代码。如果你正射校正一个数据集后发现结果如图一(左),将这个正射结果保存为一个TIFF格式文件,再用下述代码处理。代码如下:

/
//	99脚本语言示例代码  —— TifReadData(name,buffer,BSQ),将用BIP(INTERLEAVE==PIX)格式数据按 BSQ格式读出  
//
//	李国春 2022年 11月 6日
/
main()
{
	STRING name = OpenFileDialog(TRUE,"*.tif;*.tiff");//打开一个tif文件

	Print("开始打开 %s 文件,读BSQ格式的数据",name);
	DWORD tc = GetTickCount();

	STRING projstr;
	double box[4];		//投影后的四角坐标,次序为:minN,minE,maxN,maxE
	double quad[8];		//四角的经纬度,书写次序。
	double pixsize;
	int height,width,bands,datatype;
	int b2 = TifInqGTiffInfo(name,projstr,box,quad,pixsize,height,width,bands,datatype);	//读取 Geo TIFF 文件信息
	
	//申请内存,读入TIFF数据///
	WORD buffer[height][width][bands];
	int e = TifReadData(name,buffer,BSQ);//最后一个参数进行 BSQ 转换。(读正常数据最后一个参数写 BIP,或者空着不写)

	//根据 PAN 数据范围创建任务,向任务框架添加正射校正后的 PAN 和 MSS 数据
	STRING misname = FileNameMain(name);
	int misID = CreateMission2(misname,projstr,box,pixsize);//创建任务,但是不显示窗口!!!
	FmShowFrameWindow(misID,TRUE);//显示主框架窗口

	//转换后数据创建新层
	int lyr = GdMakeBufferGridLayer(buffer,datatype,0,0,height,width,bands,BIP,0,32767,misname);//将栅格数据加载到任务框架
	int lyrs = InqNumLayers();//任务中层数

	//窗口刷新显示
	FmUpdateFrameWindow(lyrs-1);//用最后一层数据刷新任务主窗口

	double tm = (GetTickCount() - tc) / 1000.0;
	Print("转换并创建RSD任务 %s 并合成图像用时 %f 秒。",name,tm);

	Print("主程序结束");
	return TRUE;
}

运行后得到图1右侧的结果。

或者选中一个BSQ的GRID层,使用图2的菜单命令也可以将BSQ格式的数据转换为RSD缺省的BIP格式。

图2

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/538138.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

目标检测复盘 -- 1.mAP及其他评价指标

前言 为什么想单独做一个目标检测篇,主要是感觉自己是个半吊子,满瓶不响、半瓶晃荡,找工作的过程中,也被很多面试官问到哑口无言,基础真的不扎实,自己非常虚,想好好地、静下心来捋一下&#xf…

Linux环境搭建及问题解决方案

本文介绍了Linux环境搭建的过程以及遇到的问题和解决方案,并且介绍了常用的Linux命令. 一、Linux环境搭建 整体所需的环节 安装VMware安装Linux (这边我选的是Server版本)安装配置Samba(Samba是一种Linux和Windows之间进行文件共…

基础知识(王爽老师书第一章)

文章目录 基础知识1.1 引言1.2 机器语言1.2 引言汇编语言的产生1.3 汇编语言的组成1.4 存储器1.5 指令和数据1.6 存储单元1.7 CPU对存储器的读写1.8 地址总线1.9 数据总线1.10 控制总线小结检测点1.11.11 内存地址空间1.12 主板1.13 接口卡1.14 各类存储器芯片1.15 内存地址空间…

【Linux】在Ubuntu中下载jdk以及卸载oraclejdk

介绍 这里是小编成长之路的历程,也是小编的学习之路。希望和各位大佬们一起成长! 以下为小编最喜欢的两句话: 要有最朴素的生活和最遥远的梦想,即使明天天寒地冻,山高水远,路远马亡。 一个人为什么要努力&a…

短视频矩阵系统源码/开发技术文档

短视频矩阵系统技术文档: 可以采用电子文档或者纸质文档的形式交付,具体取决于需求方的要求。电子文档可以通过电子邮件、远程指导交付云存储等方式进行传输、 短视频矩阵{seo}源码是指将抖音平台上的视频资源进行筛选、排序等操作,进而提升…

【AcWing刷题】蓝桥杯专题突破-动态规划-dp入门(17)

目录 写在前面: 题目:821. 跳台阶 - AcWing题库 题目描述: 输入格式: 输出格式: 数据范围: 输入样例: 输出样例: 解题思路: 方法一:暴力搜索 代码…

chatgpt赋能Python-pandas_归一化

Pandas归一化是什么? 数据归一化是数据预处理中的一个重要步骤,它能够将不同范围的数值转化为相同的数值范围。Pandas是一种数据处理工具,因此它提供了许多函数来实现数据归一化。其中最常用的函数是Normalization。 Normalization函数的使…

树形结构数据扁平化js方法

最近在公司项目中遇到树形结构数据,在进行遍历查找指定的数据的时候一搬进行递归调用的查询,因为递归是效率很慢的方式,尤其是在数据量特别大的时候是及其浪费性能,所以我想了一个树形结构扁平化的方法,代码如下: /**** param {Array} arrs 树形数据* param {string} childs 树…

Java面向对象程序设计实验报告(实验五 接口的练习)

✨作者:命运之光 ✨专栏:Java面向对象程序设计实验报告 ​ 目录 ✨一、需求设计 ✨二、概要设计 ✨三、详细设计 ✨四、调试结果 ✨五、测试结果 ✨附录:源程序代码(带注释) demo5类 Instrument类 Piano类 …

SpringSecurity入门

SpringSecurity 为什么要有SpringSecurity?SpringSecurity入门案例SpringSecurity基本原理SpringSecurity两个重要接口 SpringSecurity-web权限方案认证整合数据库 为什么要有SpringSecurity? 正如你可能知道的关于安全方面的两个主要区域是“认证”和“…

Linux:如何在虚拟机中装配JDK 与Tomcat服务器?【2023最新版】

Linux系统版本:centos 7.5 x64位 VMware版本: VMware Workstation Pro 16 Xshell工具版本:Xshell 7 (for home and free) Xftp工具版本:Xftp 7 (for home and free) 文章目录 一、如…

chatgpt赋能Python-pycharm_python版本切换

Pycharm Python版本切换指南 作为广受欢迎的Python IDE之一,Pycharm 提供了快捷的Python版本切换功能以适应不同的项目需求。本文将为您介绍如何在Pycharm 中进行Python版本切换,并解答一些与版本兼容性相关的常见问题。 如何在Pycharm中进行Python版本…

E6—4路GTX实现40G光纤通信2023-05-17

1.场景 从发送端(一块硬件板卡)通过40G QSFP接光纤连接到接收端(另一块硬件板卡),实现从数据的发送与接收。连接如下,官方的example design即可实现这一功能,因此直接使用官方的代码即可。 2.硬…

【Redis】聊一下RDB持久化机制

上一篇文章中,AOF虽然可以通过重写机制减少AOF文件的大小,但是AOF数据恢复的时候依然是一个很耗费时间的操作,那么也就是不能够快速的进行数据的恢复,RDB正好可以解决这个问题。 RDB RDB(Redis 数据库)&a…

深度学习用于医学预后-第二课第四周5-10节-为个体患者制定风险评估模型

文章目录 相对风险按风险对患者进行排序个体与基线风险吸烟者与不吸烟者年龄对风险的影响 在本课中,您将学习 Cox 比例风险模型(Cox Proportional Hazards Model)。您将了解 Cox 模型如何考虑患者变量来比较不同患者的风险,使用他们的患者概况。 但到目前…

“出圈”警博会,欧科云链推动链上合规监管进程

5月13日,在由公安部主办的第11届中国国际警用装备博览会(下简称“警博会”)上,欧科云链接受中国警察网邀请,展开了“链上天眼科技助警”成果分享会,分享欧科云链持续创新应用区块链技术助力智慧警务的成果。…

chatgpt赋能Python-pandas_错位相减

Pandas:错位相减的重要性 如果你使用pandas进行数据处理,在一些数据分析的场景中你必须要逐行遍历并做一些数学计算,譬如你想要计算数据集中的同一列中相邻行之间的差异或“错位相减”以获得新的数据列。这在分析股票价格、交易和其他时间序…

nodejs 框架选型express koa egg midwayjs nestjs 对比

最近要做个开源项目,又要写node 工程,之前用的是koa 框架,最近看到了nestjs egg midwayjs 等框架一时间难以抉择。 人工智能的答案 文心一言 midwayjs 还写错了,感觉的很少,最后总结等于白说各有千秋。 chatgpt 好…

【Linux】7. 进程概念

在进程的学习之前首先需要理解并掌握冯诺依曼体系结构及操作系统的相关概念 1. 冯诺依曼体系结构 最终我们得到的结论是: 在数据层面上 CPU不与外部设备进行交互,而是直接和内存交互所有的外部设备需要数据载入,只能载入到内存中。数据从内…

相见恨晚的Matlab编程小技巧(3)-程序运行太慢了咋解决——合理使用循环语句(1)

相信大家在使用matlab时候经常会收到程序运行太慢的困扰,当程序比较复杂时,常常需要很长时间等待。我有个朋友就是这样,每次debug都要很长时间,等着的时候就想耍会手机,结果耍完一抬头发现程序运行结束了,但…