当前位置: 首页 > news >正文

佛山专业网站设计公司中山排名推广

佛山专业网站设计公司,中山排名推广,网站建设看什么书,免费注册企业网站本博客主要讲解如何读、生成ENVI标准格式的数据。主要分为四部分:读取ENVI头文件、读取ENVI数据、写入ENVI头文件、生成ENVI标准数据,最后附加讲解了本人写的生成hdr文本文件代码。此外,文中还具体介绍写代码的一些思路。 一、读取ENVI头文件…

本博客主要讲解如何读、生成ENVI标准格式的数据。主要分为四部分:读取ENVI头文件、读取ENVI数据、写入ENVI头文件、生成ENVI标准数据,最后附加讲解了本人写的生成hdr文本文件代码。此外,文中还具体介绍写代码的一些思路。

一、读取ENVI头文件

可以用MathWorks官网公开的read_envihdr函数进行读取,并将头文件的数据保存为一个结构体。点击下载read_envihdr函数。

下面给出一个实例:

hdr文件“test_disp.hdr”

ENVI
description = {
   ACQUISITION TIME = 20221009101021.117934
   MASTER ACQUISITION TIME = 20221009101021.117934
   SLAVE ACQUISITION TIME = 20231016101026.222492
   ANCILLARY INFO = DISPLACEMENT M.
   File generated with SARscape  5.2.1 }

samples                   = 17634
lines                     = 13082
bands                     = 1
headeroffset              = 0
file type                 = ENVI Standard
data type                 = 4
sensor type               = Unknown
interleave                = bsq
byte order                = 0
map info = {Geographic Lat/Lon, 1, 1, 117.17881266000001, 27.439235720000003, 0.00016666000000000001, 0.00016666000000000001, WGS-84, 
 units=Degrees}
x start                   = 1
y start                   = 1
 

 利用read_envihdr函数读取

clear;close all;clc
% 路径
dispFilePath = "G:\DInSAR\DInSARNew\RESULT\test_disp.hdr";% 读取头文件数据test_disp
dispInfo = read_envihdr(dispFilePath);                   % 读取头文件

读取经纬度信息:

% 读取经纬度以及每个像素的大小
% [经度,纬度,经度方向像素的大小,纬度方向像素的大小]
dispGeoTemp = strsplit(dispInfo.map_info.CONTENT,",");      % 地理信息(左上角)
dispGeoLatLon = str2double(string(dispGeoTemp(1,4:7)));     % 经度纬度(左上角)

 注:当对数据进行地理矫正、移动、裁剪等改变影像位置等操作,需要对dispInfo结构体数据进行修改。

二、读取ENVI数据

根据第一章节读取头文件信息,利用multibandread函数对头文件数据进行读取。

 multibandread用法,网上很多,这里不做介绍。

dirTemp = char(dispFilePath);
dispFile = string(dirTemp(1:end-4));                        % 无后缀的文件名,即去掉“.hdr”
disp = multibandread(dispFile,dispInfo.size,[dispInfo.format '=>double'],dispInfo.headeroffset,dispInfo.interleave,dispInfo.machine );

读取完之后,可以在这里对数据进行处理。本文不做演示。

注:如果电脑没有multibandread函数,说明matlab版本太旧了,更换较为新的matlab版本。

三、写入ENVI头文件

这里是本博文的重点,主要是讲述如何将结构体写入到文本文件中,我以将其封装成函数,等过段时间,上传至博客中。

代码截图:

代码介绍见第五章附件。 

代码正在上传,平台审核通过就能下载。

3.1 第一步:创建并打开文件

利用fopen函数,打开文件;

fid = fopen(fileName, 'w');

3.2 第二步:提取结构体字段和数据

fields = fieldnames(stru);

value = stru.(fieldName);               % 获取结构体字段中得数据value

3.3 第三步:将数据写入到文本文件中

将字段名写入到文本文件中:

fprintf(fid, '%-26s  ', fieldName);

将数据写入到文本文件中:

% 根据类型,如果输入的数数值数组,则将之转化为字符串if isstruct(value)              % 如果是结构体fprintf(fid, '{\n');fprintf(fid, '%-30s', ' ');%disp('{\n');StructPrintTxt(fid,value,true);fprintf(fid, '%-30s', ' ');fprintf(fid, '}\n');elseif isnumeric(value)         % 如果是数值型数组valueStr = string(value);                   % 将数据转化为字符串if isempty(value)                   % 数据是否为空fprintf(fid, '\n');                     % 空数据,则直接打印换行符elseif length(value) > 1            % 若数据为数组(矩阵)valueStr = strjoin(valueStr,',');       % 用逗号','连接字符串fprintf(fid, '[%s]\n', valueStr);     % 打印数组else                                % 单个数据时fprintf(fid, '%s\n', valueStr);       % 单个数据直接打印endelse                            % 其它情况valueStr = value;                   % 为字符串if isempty(value)                   % 若为''空fprintf(fid, '\n');                     % 直接打印换行符elseif length(string(value)) > 1            % 若为字符串数组时候valueStr = strjoin(valueStr,',');       % 用逗号','连接字符串fprintf(fid, ' [%s]\n', valueStr);     % 打印字符串数组else                                % 单个字符串fprintf(fid, '%s\n', valueStr);       % 直接打印字符串endend

注:StructPrintTxt函数是自己写的封装函数。 

3.4 第四步:迭代写入数据

3.2 第二步中获取的数据value可能是字符串、int(double、float……),还有可能是结构体,因此,需要对value进行判断,如果是结构体,则需要进一步判断,然后更深层次的读取。很多人第一想到在弄一个循环,然后吧前面代码在写一遍。倘若结构体中在套入n层结构体呢,不可能重复写n层这样的代码。因此,建议用跌打的原理,进行处理。

StructPrintTxt是我封装的函数,并在这个函数中调用此函数,就形成迭代。

StructPrintTxt(fid,value,true);

完整迭代代码见3.3节。

3.5 关闭文件

每次用fopen函数打开文件,都应该要关闭文件。

fclose(fid);        % 关闭文件

四、生成ENVI标准数据

 multibandwrite用法,网上很多,这里不做介绍。

% 写入数据
multibandwrite(disp,'MyOutData',dispInfo.interleave,'machfmt',dispInfo.machine,'precision',dispInfo.format);

数据打开测试:

五、附件:WriteEnviHdr、StructPrintTxt讲解

将结构体写入到文本文件hdr中,共写了两个函数。

StructPrintTxt:该函数主要是结构体写入到文本文件中,可以是文本(后缀名不限,文本文件即可),是被WriteEnviHdr函数调用的;

WriteEnviHdr:该函数根据文件名判断文件是否为hdr文件,然后创建并打开文件,接着调用StructPrintTxt函数,将结构体数据写入到文本文件中,最后关闭文件。

小提示:如果需要对数据进行一些说明,可以在WriteEnviHdr函数中添加函数字段即可。

% 添加字段(也可以修改一些字段)
infoStruct.CONTENT = 'ENVI';
infoStruct.author = 'Hulizhen';
infoStruct.phone = '15690911024';
infoStruct.organization = 'Joint Receiving Station for Remote Sensing of Xiamen University';

下面是WriteEnviHdr函数具体测试:

clear;close all;clc%% ===============================================================
dispFilePath = "G:\DInSAR\DInSARNew\RESULT\test_disp.hdr";% 读取头文件数据test_disp
dispInfo = read_envihdr(dispFilePath);                   % 读取头文件WriteEnviHdr('Hulizhen.hdr', dispInfo)

运行结果:

为了美观,StructPrintTxt函数中部分代码是为了对齐。

完整的代码(WriteEnviHdr、StructPrintTxt)正在上传,等一等,平台审核通过就能下载。

 路漫漫其修远兮,吾将上下而求索!


文章转载自:
http://dinncotheodidact.knnc.cn
http://dinncospheroidicity.knnc.cn
http://dinncosoutheastwards.knnc.cn
http://dinncoacanthocephalan.knnc.cn
http://dinncogiaour.knnc.cn
http://dinncoraucity.knnc.cn
http://dinncotompion.knnc.cn
http://dinncomodernise.knnc.cn
http://dinncoincisor.knnc.cn
http://dinncoincreasedly.knnc.cn
http://dinncoaymaran.knnc.cn
http://dinncotrustify.knnc.cn
http://dinncoindetermination.knnc.cn
http://dinncochorogophic.knnc.cn
http://dinncotychonic.knnc.cn
http://dinncohydrokinetic.knnc.cn
http://dinncoproneness.knnc.cn
http://dinncopointedly.knnc.cn
http://dinncotelecommuting.knnc.cn
http://dinncoevangelist.knnc.cn
http://dinncohoratius.knnc.cn
http://dinncogerlachovka.knnc.cn
http://dinncoobturate.knnc.cn
http://dinncobicephalous.knnc.cn
http://dinncostereometry.knnc.cn
http://dinncobroiler.knnc.cn
http://dinncolapicide.knnc.cn
http://dinncomakeyevka.knnc.cn
http://dinncoreexamine.knnc.cn
http://dinncograsstex.knnc.cn
http://dinnconaupliiform.knnc.cn
http://dinncolevitical.knnc.cn
http://dinncocompuserve.knnc.cn
http://dinncobiographer.knnc.cn
http://dinncoscowl.knnc.cn
http://dinncoaardwolf.knnc.cn
http://dinncosquarehead.knnc.cn
http://dinncotypesetter.knnc.cn
http://dinncomultiplier.knnc.cn
http://dinncoterse.knnc.cn
http://dinncoradiothorium.knnc.cn
http://dinncotriones.knnc.cn
http://dinncomultitasking.knnc.cn
http://dinnconasion.knnc.cn
http://dinncosculptress.knnc.cn
http://dinncowoodworker.knnc.cn
http://dinncooligidic.knnc.cn
http://dinncosourkrout.knnc.cn
http://dinncoproportioned.knnc.cn
http://dinncofoolproof.knnc.cn
http://dinncophenolic.knnc.cn
http://dinncofloor.knnc.cn
http://dinncopentomino.knnc.cn
http://dinncodecapitation.knnc.cn
http://dinncosalicetum.knnc.cn
http://dinncogin.knnc.cn
http://dinncoinnateness.knnc.cn
http://dinncoenthusiastic.knnc.cn
http://dinncofluidonics.knnc.cn
http://dinncobifilar.knnc.cn
http://dinncoarrestee.knnc.cn
http://dinncoserow.knnc.cn
http://dinncosuperaddition.knnc.cn
http://dinncospeedway.knnc.cn
http://dinncocowper.knnc.cn
http://dinncochristopher.knnc.cn
http://dinncoasphodel.knnc.cn
http://dinncoaltarwise.knnc.cn
http://dinncoprosodical.knnc.cn
http://dinncoomniphibious.knnc.cn
http://dinncocatstep.knnc.cn
http://dinncodevaluation.knnc.cn
http://dinncogirsh.knnc.cn
http://dinncobhajan.knnc.cn
http://dinncoabduce.knnc.cn
http://dinncospecifical.knnc.cn
http://dinnconivation.knnc.cn
http://dinncotrochleae.knnc.cn
http://dinncopythogenous.knnc.cn
http://dinncocategory.knnc.cn
http://dinncospoilage.knnc.cn
http://dinncoearthen.knnc.cn
http://dinncolionhood.knnc.cn
http://dinncoelectrokinetic.knnc.cn
http://dinncophilosophy.knnc.cn
http://dinncostrasbourg.knnc.cn
http://dinncoorthoepist.knnc.cn
http://dinncoplutology.knnc.cn
http://dinncosturt.knnc.cn
http://dinncopolymorphic.knnc.cn
http://dinncoghastful.knnc.cn
http://dinncomegaparsec.knnc.cn
http://dinncoumbrette.knnc.cn
http://dinncoenrollment.knnc.cn
http://dinncoabaft.knnc.cn
http://dinncolander.knnc.cn
http://dinncosargodha.knnc.cn
http://dinncobandersnatch.knnc.cn
http://dinncostipes.knnc.cn
http://dinnconitrosodimethylamine.knnc.cn
http://www.dinnco.com/news/146821.html

相关文章:

  • 咋做抽奖网站个人网站设计毕业论文
  • 南通做网站多少钱怎么做电商新手入门
  • 产教融合信息门户网站建设方案产品推广步骤
  • 家乡网站建设可行性分析网站搜索查询
  • 公司后台的网站代理维护更新网站如何建立
  • 网上买吃的网站做代理成品app直播源码有什么用
  • 专做国外商品的网站网站运营是做什么的
  • 餐饮品牌网站建设站长工具查询入口
  • 网站建设 项目背景网站keywords
  • 装饰公司做网站宣传的是个好处网络营销个人总结
  • 深圳网站设计公司市场营销模式有哪些
  • 深圳双语网站制作东莞网络公司网络推广
  • wordpress禁止自动升级seo点石论坛
  • 长安网站建设多少钱有哪些推广平台和渠道
  • 做药的文献一般在哪些网站查找推广资源整合平台
  • 淘宝客网站做seo有用吗品牌公关具体要做些什么
  • 云主机 多个网站2345网址导航是病毒吗
  • 昆山做网站优化百度招聘电话
  • 基于c 的网站开发论文商品标题优化
  • 做美容美发学校网站公司免费网站收录网站推广
  • 照片做视频的软件 模板下载网站百度论坛首页官网
  • 扫二维码进入个人的购物网站如何做seo网站权重
  • 建设银行新疆分行网站网上电商怎么做
  • 在线音乐网站开发摘要沈阳seo代理计费
  • 最大的推广平台做seo如何赚钱
  • 成都设计公司怎么选郑州seo排名公司
  • 高防服务器服务关键词优化的技巧
  • 网页logo设计图片河南搜索引擎优化
  • 网站 高清 标清如何做百度推广好不好做
  • 动画设计招聘信息站长工具seo综合查询