炒茄子
博客相关讨论Please Please Please 3223758990@qq.com邮箱联系,有学术等问题欢迎一起交流探讨
展开
-
ENVI IDL:如何提高程序运行效率?
最近突然(并不是)想深入了解IDL底层的一些原理,因此记录一下感受和体会。原创 2023-12-12 13:01:36 · 930 阅读 · 0 评论 -
ENVI IDL:如何生成FY4A快照
FY4A全圆盘(DISK,全球)多光谱影像,panoply软件打开数据层次结构如下:我们生成快照主要使用到其中的进行快照显示,注意我并没有进行辐射定标。原创 2023-11-13 18:19:21 · 296 阅读 · 0 评论 -
ENVI IDL:如何编写多IF-ELSE结构?
最近在整理代码框架结构,对于之前的一些逻辑框架进行重新梳理,我一度以为在IDL中并没有设计多IF-ELSE结构,只能单IF结构或者IF-ELSE结构,我尝试从帮助中寻找相关多IF-ELSE结构,但似乎并没有结果,暂作罢。原创 2023-11-13 10:53:10 · 302 阅读 · 0 评论 -
ENVI IDL:如何将txt文本文件转化为GeoTIFF文件?
此处的文本文件形式如下:里面包含了众多点位信息(不是站点数据),我们需要依据上述点的经纬度信息放到对应位置的像素点位置,放置完后如下:可以发现,还存在部分缺失值,我们还需要进行缺失值的填补。原创 2023-11-12 17:19:13 · 478 阅读 · 0 评论 -
ENVI IDL:如何基于气象站点数据进行反距离权重插值?
仅仅练习,大可使用ArcGIS或者已经封装好的python模块进行插值,此处仅仅从底层理解如何从公式和代码理解反距离权重插值的过程,从而更深刻的理解IDL的使用和插值的理解。原创 2023-11-11 21:23:25 · 874 阅读 · 0 评论 -
ENVI IDL:如何解析XML文件(以Landsat9-MTL.xml文件为例)
我们原本是打算对Landsat9文件进行辐射定标,但是辐射定标的参数在MTL文件中,从文件中查看参数直接复制到IDL中固然可行,但是当我们对Landsat9文件进行批量辐射定标时,这种方法就将失效了。因此我们需要自动从MTL文件中读取相关参数,这里的相关参数实际上只包含两个参数(对于一个波段),一个是比例系数,一个是偏置量。对于Landsat9,给出三种MTL形式:这里我们只讨论txt文本文件和XML文件的解析和提取。原创 2023-11-11 19:58:36 · 1044 阅读 · 0 评论 -
ENVI IDL:如何监测代码运行时间(计时器函数实现)?
毫无疑问,timer_keep函数应该存储全局变量,否则无法记录相邻两次调用的间隔时长。查找IDL的全局变量设置方法,似乎并没有全局变量的设置方法,约莫半晌。关键字,称为公共块,不同IDL进程或者函数均可以访问该块内的变量,公共块在进程结束时不会被销毁。需要使用到两次systime,分别为循环开始和结尾各一次,是否可以只调用一次函数解决呢?如果想要解决第一次运行为0的问题,那么解决办法就是循环开始和结束都使用一次。缺点就是,第一次调用该函数,输出是0s,这似乎并不好解决。暂且如此,bye~.原创 2023-11-11 09:59:03 · 152 阅读 · 0 评论 -
ENVI IDL:如何MODIS GRID产品进行批量镶嵌、重投影(GLT校正)?
时间类的定义相关概念和基本使用查看:https://blog.csdn.net/m0_63001937/article/details/133975751;初始化初始化父类对象return, 1;1表示成功实例化对象end;若不传入参数则默认该格式化字符串end;更新endif;年积日转化为年月日endend;更新endif;年月日转年积日endend;更新年月日等属性endifendifend;取值;如果用户请求返回某一属性, 那么将其返回。原创 2023-11-06 12:55:46 · 944 阅读 · 5 评论 -
ENVI IDL: 如何进行对MODIS GRID数据进行重投影?
其包含三个pro过程,其中为主程序,img_warp为常规pro过程,read_h4为自定义函数。基于角点信息进行投影坐标数据集的生成并转化为经纬度数据集,img_warp基于经纬度数据集进行重投影(GLT校正)原创 2023-10-22 20:45:19 · 527 阅读 · 0 评论 -
ENVI IDL:如何基于面向对象思想进行编程?
最近打算使用markdown语法进行博客的编写,所以风格和格式方面会有区别,见谅。原创 2023-10-22 20:32:01 · 311 阅读 · 0 评论 -
ENVI IDL:对于GEOTIFF结构体的说明
其中最关键的只有两个标签Tag,一个是,一个是。至于我没用过不了解,但是应该是关于仿射变换相关的,用于将像素坐标与地理/投影坐标进行转换的矩阵。原创 2023-10-20 17:47:40 · 320 阅读 · 0 评论 -
ENVI IDL:MODIS SWATH产品的点位-像元提取(另附Python代码)
如果是WGS84等常规一些的坐标系(常规就在于你仅仅依据左上角的经纬度和经纬度分辨率、行列号就可以简单得知每一个像元的经纬度,反过来就是你知道一个像元的经纬度那么就知道这个像元的行列号,再类推一下,如果你知道点位的经纬度,那么你可以近似知道该点位距离哪个经纬度最靠近然后一直使用那个像元的经纬度)。如果距离指定点位(实际解决问题时此处应该就是气象站点)的最近像元(而且是有效的)的距离是10°呢,我个人认为这个最近像元的栅格值与该点位进行对应是没有意义的,所以我们还需要进行范围的限制。原创 2023-09-26 22:32:59 · 381 阅读 · 0 评论 -
ENVI IDL:OMI-NO2产品均值计算与可视化(附Python代码)-年、季、月均值计算
月等信息,然后分配到不同的[]中,[]在图示中不是数组而是列表(在IDL中为链表,实际类似于Python的列表), 由于我们事先不知道春季有多少文件,所以定义列表更为合适(只需要add添加元素即可)。其是通过计算每一像元的累积和以及该像元的实际有效天数或者次数进行均值的求取,对于像元的有效次数的求取在我的代码中通过mean函数的/nan参数解决,自动跳过无效值(所以需要事先将所有无效值替换为NAN),其余基本一致。春季为3-5月,夏季为6-8月,秋季为9-11月,冬季为12-2月。原创 2023-09-19 22:56:41 · 380 阅读 · 0 评论 -
ENVI_IDL: 基础语法详解
string(a[3, 4], format='%.2f'):格式化输出,或许已经发现了,前面的format实际上是fortran语言的格式化输出样式,但是我不太了解该语言所以用不顺手,我更倾向于C语言的格式化的输出(Yeah,IDL支持C语言和Fortran两种的语言的格式化输出)。:这是定义的一个函数(详见下文),其中的arr是位置参数,prefix,format都是关键字参数;: 这是自定义一个二维数组,注意,数组的定义均是使用中括号[],高维亦是如此;:定义整型变量,s可不写;原创 2023-09-12 23:54:52 · 656 阅读 · 0 评论 -
ENVI_IDL: 如何批量将Year-Days文件名转换为Year-Month-Day文件名?
如何将其中的例如2020042(表示2020年的第42天) 、2022003(表示2022年的第3天)等转换为年月日的格式。具体使用可以查看文档,这里不再详细说明。给出转换代码,这里仅提供思路。原创 2023-04-10 23:39:32 · 225 阅读 · 0 评论 -
ENVI IDL:如何进行图像清晰度评价?
这次实验,主要有几个难点,一个是难以想象需要将矩阵data转化为float(因为无法想象这会造成后续计算的范围超出导致计算错误);第二个编写将各个计算图像清晰度的方法,但是实际上并不难,只是稍显繁琐;第三个就是对每一个波段影像对进行清晰度的评价,这里并不使用ENVI进行save as进行单波段的输出再进行清晰度的评价,而是通过循环进行每一个波段的遍历。(注意: Dist计算时,将单个像元的长宽均视为一个单位计算,如有需要,可读取影像的分辨率进行)2. 熟悉清晰度评价指标;1. 掌握清晰度的概念;原创 2023-04-04 10:09:49 · 545 阅读 · 0 评论 -
ENVI IDL:熟悉IDL语法+输出多幅TIFF影像的MAX文件和MEAN文件
建议有编程背景;原创 2023-03-21 17:29:27 · 1572 阅读 · 3 评论 -
ENVI_IDL:批量获取影像文件各个波段的中值并输出为csv文件
批量获取影像文件各个波段的中值并输出为csv文件原创 2023-03-18 19:18:39 · 1735 阅读 · 0 评论 -
ENVI_IDL:如何对影像进行各种方式的上下左右的颠倒或者翻转.
一般我是直接看右侧的原始X1、Y1和翻转之后的X、Y的变化来确定使用何种翻转的编码。另外,函数的输出结果是翻转之后的影像数组,并不是在原来的数组基础做了修改.下方是颠倒了的影像(大概可以看出来是南北颠倒了)以下是关于rotate函数的简单介绍.Araay:需要翻转的影像的数组。原创 2023-01-01 18:42:34 · 2049 阅读 · 0 评论 -
ENVI_IDL:对于书写和创建GEOTIFF结构体?
以数组形式表示角点信息,前三个数组元素表示角点的行列号(Z方向上就是第三个元素,由于不常见这里就说明),后三个数组元素表示角点的经纬度以及高程.(由于上方的TIFF文件是二维的,所以前两个元素表示角点的行列号,而第三个元素无需填写默认是0;:以数组形式表示像元的分辨率,分别是X、Y、Z方向上的分辨率.(由于上方的TIFF文件就是二维的,所以只有X、Y方向上有分辨率,而Z方向上的分辨率无默认是0);首先,下面是GEOTIFF结构体的一个示例.原创 2023-01-01 17:35:36 · 720 阅读 · 2 评论 -
ENVI_IDL:如何对文件名的日期进行格式化输出?
此前对于这方面知识不是很了解,现在也是。原创 2023-01-01 18:43:58 · 752 阅读 · 0 评论 -
ENVI_IDL:如何读取HDF4文件和HDF5文件的数据集和属性?
参考由于时间和精力,这里并没有对其中的函数进行详细的说明,只是介绍了函数作用以及用法。原创 2022-12-29 20:45:42 · 1621 阅读 · 1 评论 -
ENVI_IDL:(批量处理)如何对HDF5文件进行GLT文件的创建并进行几何校正最终输出为IMG格式?
关于HDF5文件的读取如果想详细了解可以查阅下方代码,写的比较详细;如果想直接使用,请在下方位置处填写好自己电脑HDF5文件的一些环境信息即可进行GLT文件的几何校正。原创 2022-12-29 15:52:59 · 1311 阅读 · 5 评论 -
ENVI_IDL: 如何读取HDF5文件再优美地做个均值处理?(以OMI数据为例)
譬如全部都是数字2的3乘3矩A,我想让矩阵中的每一个数字都乘以属性b值,但是我们直接用获得到的数组形式的属性[a],那么是[a] * A,最终得到的值是只含有一个值的数组[2a];h5g(Group)表示对hdf5文件中的组进行的相关操作的函数。解释:目前第一个参数传入属性所在数据集的id,第二个参数传入属性的索引 ==> 获取的数据集的索引为index的属性的id;解释:目前传入的是数据集的id,那么返回数据集下的属性个数,如果传入hdf5文件的id,那么返回hdf5文件下的全局属性的个数。...原创 2022-08-18 10:27:09 · 1220 阅读 · 3 评论 -
ENVI_IDL:如何读取HDF4数据?
解释: 第一个参数传入hdf4文件的绝对路径(如果该hdf4文件在目前pro文件所在文件夹中, 那么相对路径也是可以的),第二个参数传入打开hdf4文件的方式,除了目前传入的/read(只读),你还可以传入/rdwr(可读可写),/create(创建新的hdf4文件)。第一个参数传入数据集的id,那么第二个参数传入需要获取的数据集的属性的index。解释:第一个参数传入数据集的id,后面关键字传变量,显然变量1接收函数返回的该数据集的名称,变量2接收函数返回的该数据集下的属性个数。解释:传入数据集的id。.原创 2022-08-14 22:00:56 · 1397 阅读 · 5 评论 -
ENVI_IDL: 批量制作专题地图
说实话,这个ENVI_IDL的批量制图是真的不好用,看个人吧。另外大量的函数解释需要自己去看help,代码里面我只是简单的解释了一下每个函数的重要参数,如果有其它需要,可以自行查找。还有,后面的指北针由于idl没有内置,所以需要自己下一个指北针然后贴到图上去。还有一件事就是里面的城市的标签需要自己一个一个去指定位置,费时费力,但是一次弄好了之后循环就不需要老自己弄了。所以说,前面的格网和colorbar以及字体的相关设置等等已经能够满足大部分需求。我是炒茄子,不用谢·1。...原创 2022-07-21 09:18:33 · 1817 阅读 · 2 评论 -
ENVI_IDL: 对风云四号卫星数据波段合成和线性拉伸并分别生成TIFF格式和JPEG格式
这里没什么新的知识点,就是各个地方的数组定义要注意一下啊,有的是无符号数组,有的是字节型数组。最变态的是由于风云四号卫星数据比较大,一个数组占用内存甚至达到300M+,所以不用的内存需要即使处理,否则如果是循环那么很容易出现内存无法分配到数组的错误出现。——————————————————————————————————————————————————————————————————————————————————————我是炒茄子,不用谢。2.对获取的数据进行提取获取三个波段的数据集。...原创 2022-07-19 14:33:49 · 1787 阅读 · 3 评论 -
ENVI_IDL: 创建HDF5文件并写入数据(以将Geotiff文件写入HDF文件为例) + 详细解析
文如标题就是自己创建HDF文件并将数据写入其中。5.创建数据集id(创建属性也是类似的步骤)1.指定路径创建好HDF5文件。这里会有一些函数你可能会使用到。2.创建存储相同类型数据的组。3.获取数据集的数据类型id。4.获取数据集的数据空间id。6.将数据写入数据集。...原创 2022-07-17 19:35:45 · 1239 阅读 · 1 评论 -
ENVI_IDL:使用反距离权重法选取最近n个点插值(底层实现)并输出为Geotiff格式(效果等价于Arcgis中反距离权重插值)
使用反距离权重插值法选取距离最近的n个点进行插值另外这里面用到了新函数sort(),但是应该不难,可以看ENVI的help,也可以自己敲代码熟悉一下这个函数。原创 2022-07-17 11:54:45 · 1001 阅读 · 0 评论 -
ENVI_IDL: 读取文本文件并输出为Geotiff格式+简单均值插值
这里主要没有用到什么新的知识点,就是先获取数据,然后找到经纬度的最大值最小值,以此得到行列数去构建装数据的数组,然后数据按顺序放入到数组中。另外,如果你的数据源明确说明数据的分辨率是准确的而不是近似,那么你可以不进行均值插值,当然为了确保你可以先出图看看缺失值是否存在再来判断是否需要均值插值。做好均值插值后最后输出即可。...原创 2022-07-16 17:22:30 · 1233 阅读 · 0 评论 -
ENVI_IDL: 文本文件的读取(主要是txt、csv文件)
openr,1,路径——》1表示该路径下文件的内存地址的代称变量=file_lines(路径)——》传入文件所在的路径,返回该文件的行数readf,代称,接收数据的变量——》第一个参数为文件的内存地址的代称,第二个是接收数据的变量skip_lun,代称,行数,/lines——》指定文件的代称,指定需要跳过的行数,/lines表示前面跳过的是行free_lun,1代称——》指定文件的代称,用于关闭文件的内存占用。...原创 2022-07-16 11:03:00 · 3273 阅读 · 0 评论 -
ENVI_IDL:批量拼接Modis Swath的逐日数据并输出为Geotiff格式
批量拼接ModisSwath的逐日数据并输出为Geotiff格式另外这里需要说一下有一个新的函数或许你没有学过uniq()函数——》字面意思就是获取唯一值的索引,但是这个唯一值有点不一样。函数解释首先函数会返回一个数组arr传入一个数组array,依次检索数组array的元素,每检索一个元素,获取该元素在array的索引。若检索下一个元素时,下一个元素与之前的元素不一样,那么函数会将上一个元素的索引放入到数组arr中;...原创 2022-07-14 21:58:37 · 874 阅读 · 3 评论 -
ENVI_IDL:批量对Modis Swath产品进行均值运算+解析
如题所示,就是对Modis Swath产品进行均值运算这里需要注意几点:——————————————————————————————————————————第一:由于每一个Modis Swath数据的经纬度范围不一样(它不像之前的OMI数据一样是全球数据,之前求和在平均就好了),这里需要现在知道我们现在手上拿到的Modis Swath数据的经纬度范围有多大,那么就需要遍历所有的MOdis Swath数据找到所有的文件里面中的最大、最小经纬度——————————————————————————————————原创 2022-07-14 18:16:00 · 1055 阅读 · 2 评论 -
ENVI_IDL:批量处理Modis Swath数据的重投影并输出为Geotiff格式+详细解析
目录1. 课堂内容2. 知识储备3. 编程4. 题外话批量处理Modis Swath数据的重投影并输出为Geotiff格式 4. 题外话这次我没有遇到比较棘手的问题,主要是一些变量的使用错误、还有一些其它的小毛病犯了之类的。主要是对于重投影步骤的深入理解,只有理解了才会明白代码每一步在做什么。不然你有时会对代码存有很大疑虑而一直停滞不前。但是,非常遗憾,由于种种原因,我并没有将全部我对于重投影的理解以及代码的一些解释放在注释中,只有对关键代码我做出了一点点浅浅的解释,因为要想通俗的去解释这是需要一原创 2022-07-12 21:28:12 · 1340 阅读 · 3 评论 -
ENVI_IDL:批量重投影Modis Swath产品并指定范围输出为Geotiff格式+解析
目录1. 实验内容2. 知识储备3. ENVI实操对对应DL代码部分4. 编程5. 题外话 这里就不会对之前学过的一些函数做出声明,只对其中会使用的二次开发接口做出介绍 这一部分实在没有精力,有需要再来吧,累死了。运行结果展示: 产生的geotiff文件: n_element()与一些函数自带的count参数返回的区别 ; 注意,这里本来是既可以n_elements()函数获取pos的元素个数,也可以再where()函数运行时指定/count(譬如现在就是) ;原创 2022-07-11 21:22:00 · 1131 阅读 · 5 评论 -
ENVI_IDL:批量重投影ModisSwath产品(调用二次开发接口)+解析
批量重投影编译运行:原创 2022-07-11 09:08:21 · 686 阅读 · 1 评论 -
ENVI_IDL:读取所有OMI产品的NO2柱含量并计算月均值、季均值、年均值+解析
这里我就不写第三周的课后作业,直接连着这个实验一起写了。 由于OMI产品是HDF5文件,需要使用HDF5的相关函数,另外还会使用一些文件处理的函数。编译运行结果展示: 生成的tiff文件展示: 使用ENVI打开确实没有问题: ——————————————————————————————————————————另外需要说一点,这里报错,浮点数非法!但是貌似不影响结果的输出。虽然但是,我还是心情不舒服。还有一点就是前面的tiff文件输出是比较快的,但是最后面的txt文件输出很慢,我差点都以为没有运行成功原创 2022-07-10 14:36:08 · 1589 阅读 · 11 评论 -
ENVI_IDL:读取OMI数据(HDF5)并输出为Geotiff文件+详细解析
读取OMI数据(HDF5)并输出为Geotiff文件,最重要的是数据的处理以及输出原创 2022-07-09 22:13:57 · 2943 阅读 · 3 评论 -
成信大ENVI_IDL第三周课堂内容1:读取OMI数据(HDF5文件)以及输出+解析
目录1. 课堂内容2. 知识储备3. 编程4. 题外话(HDF5下的中文路径问题)OMI数据的读取与输出,这里实际考察如何取读取HDF5文件以及HDF5文件输出(这里输出是以tiff格式为例)HDF5文件打开的相关函数 编译+运行之后输出的结果: 查看输出的TIFF文件: 这里我遇到一个小小的不兼容,原来我们使用hdf_sd_start()函数打开HDF4文件时即使传入的路径是中文,那么也是可以打开这个文件的。但是,在h5f_open()函数中打开HDF5文件传入中文路径就会运行报错,显示无原创 2022-07-09 18:17:37 · 879 阅读 · 2 评论 -
成信大ENVI_IDL第二周课后作业:提取n个点的气溶胶厚度+详细解析
关于一些代码的注意事项,以及我的一些见解、看法都一一写在了代码内(以注释形式)3.2 运行结果不用在意为什么成都没有结果,因为我试过了,如果我没有限制aod=0,min_distance原创 2022-07-07 18:09:44 · 441 阅读 · 4 评论