Python&遥感数据处理
文章平均质量分 71
主要是基于python进行遥感数据处理,例如MODIS SWATH产品的点位-像元提取\MODIS GRID(正弦投影/GCTP_SNSOID)的重投影问题\读取TIFF文件和切片\OMI-NO2产品均值计算与可视化(附Python代码)-年、季、月均值计算\批量预处理FY4A数据
炒茄子
博客相关讨论Please Please Please 3223758990@qq.com邮箱联系,有学术等问题欢迎一起交流探讨
展开
-
Python: 如何批量预处理FY4A L1 DISK和REGC产品?(辐射定标/裁剪/GLT校正/HDF5转TIFF文件等)
这篇博客,其实我想了很久要不要写,因为关于如何去预处理FY4A产品我已经花了很久的时间去手机和整理资料,花费的时间和精力其实不少,我也有想过付费,后来想想算了吧。这方面数据的处理教程本来就少(包括我自己去搜集资料都是困难重重),我自己去处理产品也有受益于其它博客的影响。还有很多想说,暂且憋着吧。另外,由于博客参考了部分其它博客和资料,时间跨度有点长,若有遗漏很抱歉。原创 2023-07-10 12:37:42 · 4288 阅读 · 27 评论 -
论文解析:NDVI Forecasting Model Based on the Combination of Time Series Decomposition and CNN – LSTM
论文地址:https://link.springer.com/10.1007/s11269-022-03419-3这篇论文是想要基于时间序列分解和CNN-LSTM两种方法的混合进行NDVI的预测,需要注意的是此处的CNN和LSTM你可以拆分看,他们并不是一个完整的概念,只是二者的简单叠加即CNN的输出作为LSTM的输入。我就不讲这些算法到底好亦或者差,仅仅从实现原理上进行解析。仅个人解读。原创 2023-12-30 22:41:18 · 1079 阅读 · 0 评论 -
Python:(Sentinel-1)如何解析SNAP输出的HDF5文件并输出为GeoTIFF?
最近在了解sentinel-1的预处理过程,但是由于影响太大了,常规的GeoTIFF无法输出预处理结果,BigTIFF输出时似乎也遇到了一些问题(好在后面解决了,所以正好做一下HDF5文件输出的TIFF文件与BigTIFF文件的对比),对于输出的HDF5文件则完全没有问题。但是问题在于HDF5文件的结构尚不了解,因此对于其中的地理信息如何提取很关键(当然你可以使用ArcGIS或者ENVI打开其中的VV和VH波段,但是都无法自动读取到其中的地理信息或者坐标系信息)。原创 2023-12-18 23:01:17 · 1424 阅读 · 2 评论 -
Python:如何将MCD12Q1\MOD11A2\MOD13A2原始数据集批量输出为TIFF文件(镶嵌/重投影/)?
之前一段时间一直使用ENVI IDL处理遥感数据,但是确实对于一些比较新鲜的东西IDL并没有python那么好的及时性,封装的东西也较为底层需要自己实现的东西相对python还是不那么方便,当然它也训练了我对于数据的处理能力。另外最近一直在探索深度学习,IDL相对小众,在时间不充裕的情况,我将倾向于使用Python进行学习而非IDL。因此,目前相当长一段时间我将同时兼容Python和IDL两门语言,但正如你所见,IDL的趋势正在减弱。原创 2023-12-16 00:15:58 · 1659 阅读 · 0 评论 -
Python:如何解决MODIS GRID(正弦投影/GCTP_SNSOID)的重投影问题?
GIS茄子;若博客出现纰漏或有更多问题交流欢迎关注GIS茄子,或者邮箱联系(推荐-见主页).原创 2023-12-15 12:26:42 · 1634 阅读 · 5 评论 -
遥感&深度学习:如何读取TIFF文件和切片成256*256?
最近打算认真从头开始学习深度学习和遥感结合的相关内容,主要通过Python进行处理。此前用深度学习进行遥感相关的学习一直都是用框架,但是考虑很多因素我后面打算换用Pytorch进行学习。好在tensorflow我只是浅尝辄止,不然还真有点不舍。原创 2023-12-08 15:34:14 · 1013 阅读 · 0 评论 -
ENVI IDL:MODIS SWATH产品的点位-像元提取(另附Python代码)
如果是WGS84等常规一些的坐标系(常规就在于你仅仅依据左上角的经纬度和经纬度分辨率、行列号就可以简单得知每一个像元的经纬度,反过来就是你知道一个像元的经纬度那么就知道这个像元的行列号,再类推一下,如果你知道点位的经纬度,那么你可以近似知道该点位距离哪个经纬度最靠近然后一直使用那个像元的经纬度)。如果距离指定点位(实际解决问题时此处应该就是气象站点)的最近像元(而且是有效的)的距离是10°呢,我个人认为这个最近像元的栅格值与该点位进行对应是没有意义的,所以我们还需要进行范围的限制。原创 2023-09-26 22:32:59 · 368 阅读 · 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 · 368 阅读 · 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 · 642 阅读 · 0 评论 -
如何通过Python打开GSMap数据集(解决.dat无法打开的问题)?
这么晚了我还是希望将这篇博客写一下,记录生活。我所下载的数据集为GSMap-MVK数据集,延迟大概2.5月左右我记得.边下载我就想着先处理着吧。例如,其中一个文件如下:解压之后:发现是ENVI默认格式,于是尝试使用ArcGIS打开,发现是一种不支持的格式,我想可能是因为这种.dat只能ENVI打开吧,于是使用ENVI再次打开,无果。猜测是否可能是hdf4/hdf5/nc4,发现均不是,我明白我遇到对手了,再次确认数据没有下载错误并尝试了其他文件,均是如此。于是寻找博客文档等。原创 2023-07-03 01:11:34 · 601 阅读 · 0 评论 -
Rasterio:rasterio.open函数参数和用法解析(以GPM Imerg Early nc转tif为例)
最近用ENVI IDL,觉得身心俱疲,一方面是学的不深,另一方面是关于IDL的资料太少了,基本上仅有少量的陈年博客(虽然写的不错),其余基本上来源于官方文档.所以还是做好两手准备,python处理遥感影像也要抓起来,毕竟python对于人工智能的专长之于遥感影像的冲击也比较大,现在漂亮国要是再不发几颗卫星国内遥感我们这批专业生就活不下去了,论文个个都在卷计算机算法人工智能,神卷。原创 2023-07-02 11:12:49 · 1281 阅读 · 0 评论 -
Tensorflow:from tensorflow.keras import layers 报错
keras模块从tensorflow中独立,所以不从tensorflow中调用,而是pip 安装 keras模块。而我的文件夹中不存在keras,虽然换用tensorflow.python.keras也可以解决,但是最后模型保存存在问题,似乎是get_config问题,但是我并没有自定义网络层。原创 2023-06-26 08:38:52 · 11624 阅读 · 4 评论 -
Python:如何基于滑动窗口进行气候因子间的相关系数分析?(逐像元)
最近处理一些气候因子的统计分析,遇到一些问题,记录一下。原创 2023-05-19 16:44:59 · 1492 阅读 · 2 评论 -
ArcMap:如何渲染一幅精美的地形图
尝试使用python进行渲染,感觉总是不太满意,但是做都做了,还是贴出来。其实感觉ArcSence做的其实会好看很多。原创 2023-05-19 13:07:04 · 2313 阅读 · 0 评论 -
Python:最短路
如下图所示,GG 是一个无向图,其中蓝色边的长度是 11、橘色边的长度是 22、绿色边的长度是 33。原创 2022-12-15 09:28:17 · 446 阅读 · 0 评论 -
Python:计算机等级考试真题之八十天环游地球代码
这一题我觉得有一点难,所以写一下代码巩固。原创 2022-12-02 16:35:16 · 1118 阅读 · 1 评论 -
Python函数的参数顺序
学习python有点生疏,常言道,温故而知新。由于命名关键字参数的应用场景很少没所以没有示例。但是我们很少会将上述的顺序全部使用到,所以这里所列了几种常见的函数搭配的顺序。原创 2022-09-02 18:16:33 · 3342 阅读 · 0 评论 -
Python:不要在循环中删除元素
取索引4,前面已经对列表进行了删除所以现在列表是['A','B','C','D','D'],那么按要求来,索引为4的值是目前列表中的第二个'D' ==> if判断发现就是'D',使用remove()方法将第一个'D'删除(remove方法永远只删从左往右遇见的第一个目标值)。取索引5,前面已经对列表进行了两次删除所以现在列表是['A','B','C','D'],那么按要求来,索引为5的值不存在,所以取值失败退出for循环。取索引1,然后得到值'B' ==> if判断发现不是'D',进入下一次循环。...原创 2022-09-01 16:12:11 · 578 阅读 · 1 评论 -
python:format用法
冒号后面可以跟对变量的一些格式用法,而在冒号前面则跟对应数字,如果数字是0,那么该{}对应于.format()括号里面第一个变量;以此类推,数字是1,则对应于第二个变量。学到现在我愈发觉得语法格式是非常重要的,语法格式中其实最重要的是各种用法再format中的先后顺序,顺序不对即报错。(其实我觉得之前的传参就是位置传参的感觉,而现在则通过关键字(其实就是数字)进行传参,当然传参可能用的并不贴切。每隔三个数字加一个逗号。原创 2022-08-13 18:45:27 · 1716 阅读 · 0 评论 -
Python: shell上面的进度条打印是如何实现的?
可以发现,确实完成了最基本的进度条动态显示。原创 2022-07-25 22:25:37 · 637 阅读 · 0 评论 -
Python: random模块简单使用_速看
random.sample(sec,num)====>随机返回sec中的num个元素(以列表形式,即便num=1)random.randrange(a,b)====>随机返回[a,b)的一个整数。random.uniform(a,b)====>随机返回(a,b)的一个小数。random.random()====>随机返回(0.0,1.0)中的一个小数。random.choice(sec)====>随机返回sec中的一个元素。====>print(我是炒茄子)...原创 2022-07-25 19:05:12 · 338 阅读 · 0 评论 -
time模块: 时间戳、结构化时间、格式化时间的获取与相互转化
格式化时间(format_time)-->结构化时间(struct_time)====>time.strptime(format_time,format)结构化时间(struct_time)-->格式化时间(format_time)====>time.strftime(format,struct_time)时间戳(timestamp)-->结构化时间(struct_time)====>time.localtime(timestamp)1970年01月01日00时00分00秒(北京。...原创 2022-07-25 17:13:32 · 1499 阅读 · 0 评论 -
Python:关于装饰器的创建以及案例示范——一步一步来
目录前提知识:1、基础知识:2、准备工作3、提示:这里为了能更好的理解装饰器,会给出几种不符合要求的方案一步一步优化修改4、方案一:修改函数内部代码5、方案二:函数调用前后增加代码6、方案三:使用闭包函数实现装饰器对函数的修改掌握位置形参、关键字实参之可变长参数,名称空间以及作用域,函数的嵌套使用,最后是对前面的综合运用————闭包函数的掌握装饰器的功能:简而言之,就是为了给函数(大多数是,当然也可以是类class)增加新功能(注意,不是修改函数原来就有的功能)但是要求是:1、不改变原来函数的代码。2、不改原创 2022-06-19 23:53:40 · 352 阅读 · 0 评论 -
Python:简单的制作一个动态更新日志
需求:获取最新的日志信息掌握基础:Python文件操作要点分析:1. import time 是为后续循环高速运转减速2. with open() as f 是打开文件,子代码块结束运行后 即自动关闭文件3.open()内以rb模式打开文件,是为了与f.seek()联合使用,当然rt模式也是可以但是一般不会 与 f.seek()使用,虽然这里可以。4.f.seek(0, 2)是为了将文件指针移动到文件末尾处,模式2可以解决这一问题,0表示文件指针不移动了。5.每次循环读取文件内容,如果内容,需要将内容解码后原创 2022-06-18 16:00:01 · 480 阅读 · 1 评论 -
Python:集合的关系运算
目录1.取交集1.1符号方式解决1.2集合内置方法解决2.取并集2.1符号方法解决2.2内置方法解决3.求差集3.1符号方法解决 3.2内置方法解决4.取两个集合分别独立拥有的元素的集合(取对称差集)4.1符号方法解决 编辑 4.2内置方法解决5.比较两个集合的关系(包含与不包含)5.1符号方法解决 5.2内置方法解决 4.2内置方法解决...原创 2022-06-16 18:24:08 · 489 阅读 · 0 评论 -
Python: 1041 考试座位号
目录1.我的思路:2.下面是编写代码:(1)接收数据(2)处理数据3.完整代码如下:1.我的思路:首先这里因为数据比较多,所以在接收数据这里就比较重要了。我第一想到字典,但是字典排序是随机的,我怕顺序出问题,就没有用,虽然它检索比较快。我打算准考证号,试机座位号,考试座位号均采用列表形式,方便顺序检索。那么解决问题的方法就是通过 需要查找的试机座位号 去查找其在 所有试机座位号列表中的索引,然后通过索引找到对应的的准考证号,以及考试座位号;2.下面是编写代码.原创 2022-05-23 12:20:52 · 492 阅读 · 0 评论 -
Python: 1039 到底买不买
目录:目录目录:1.简单思路:(1).用循环将 want 列表各元素与 detailer 列表各元素一一比对。(2).判断输出:2.好,现在开始编写代码:(1).接收数据及初始化变量:(2)循环判断:(3)判断输出3. 完整代码如下:1.简单思路:我的思路很明确:(接收数据,方便我讲)detailer = list(input()) # 转化成List方便后续删除改动want = list(input())no = 0(1).用循...原创 2022-05-23 08:41:11 · 156 阅读 · 0 评论 -
Python:1037 在霍格沃茨找零钱_最后一个测试点
最后一个测试点源于没有考虑P, A的钱是一样的,输出格式应该为:0.0.0思路:我的思路是先构造两个函数,一个(假定为函数trans)是将 x.x.x的格式全部换算成最小单位 纳特(Knut)另一个(假定为函数retrans)是将以最小单位纳特(Knut)计量的数转化为 x.x.x的格式;之所以这样子做是因为1.全部换算成最小单位十分方便计算2.使用函数可以减少内存占用现在开始代码实现:1.编写函数trans()由于进制是1-17-29所以可以下面这个样子:de原创 2022-05-22 17:33:29 · 198 阅读 · 0 评论 -
Python: 1036 跟奥巴马一起编程_测试点2问题
测试点2出现在四舍五入有问题;使用round()会出现一些问题,因为它并不是我们通常数学上的四舍五入,而是类似于物理实验中的四舍五入;所以,对于python而言,四舍五入就用下面的方法即可解决。# 假定你需要对num四舍五入,那么应该是下方这个样子int(num + 0.5)num, char = input().split() # 获取输入数据num = int(num) # 将str型num转化为int型,方便后续计算line = int(num / 2 + 0.5) #原创 2022-05-22 16:37:02 · 337 阅读 · 0 评论 -
Python:字符串基操_strip()/rstrip()/lstrip()_lower()/upper()_startswith()/endswith()_split()/rspilt()_join
字符串的一些基本用法————>温故而知新,可以为师矣Python:字符串基操_strip()/rstrip()/lstrip()_lower()/upper()_startswith()/endswith()_split()/rspilt()_join_replace注意:以上所有方法均不会对传入的字符串进行更改,因为字符串是不可变类型。1.strip()_rstrip()_lstrip()1.1strip()用法:字符串.strip(参数)将字符串的开头和结尾的参数删除并输出;原创 2022-05-17 19:50:07 · 657 阅读 · 0 评论 -
Python_1031 查验身份证_要点全解析
num = int(input())ma = {0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', \ 7: '5', 8: '4', 9: '3', 10: '2'}quan = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]effective = []for i in range(num): number = list(input()) try:.原创 2022-05-13 08:41:12 · 1261 阅读 · 0 评论 -
Python: 1029 旧键盘_关于我只用了3min这件事
你知道5分钟完成20分的题对于我一个人来说是多大的惊喜,这对我幼小的心灵得是多大的伤害?第一眼的思路:遍历实际敲入的字符串,看其是否在本来应该敲入的字符串中,不在就输出(小瑕疵:会重复输出不在的字符);注意1:输出格式要求如果字母需要转化为大写字母输出注意2:已经输出的字符不需要重复输出,这就需要将已经输出的字符保存起来放在新列表里,然后对每一个要检查的字符,不仅需要检查其是否在本来应该敲入的字符串中,还需要检查其是否在已经输出过的字符的列表中;n = input()m = inpu..原创 2022-05-11 19:44:02 · 197 阅读 · 0 评论 -
Python: 1028 人口普查_测试点3错误_测试点超时
测试点3在于如果输入的几个数据都不在范围内,要不大于20140906, 要不小于18140906,这一原因没考虑进去;测试点4主要是python本身原因,当然更可能是我自己没有优化好,现在已经解决好了!下面代码为测试点4错误,其它测试点正确。num = int(input())time = {}for i in range(num): name, date = input().split() date = int(''.join(list(date.split('/')原创 2022-05-11 18:45:30 · 329 阅读 · 0 评论 -
Python: 1027 打印沙漏_分析题干为主要目的+测试点2原因
测试点二我遇到的问题是输入1 *不正确,订正后就好了。首先,题目告诉我们格式是:输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔所以input()接收它,再用字符串中的split()(注意,这里括号内什么也不写,默认以空白字符作为分隔符,如果想要以其它字符或字符串分隔,请在括号内以str形式输入它们即可)方法以空格键分隔它们并用两个变量接收它们。代码如下:m, n = input().split()m = int(m)接着,告诉的我们是总的字符数,所以.原创 2022-05-10 17:14:41 · 1084 阅读 · 0 评论 -
关于python 恰到好处的四舍五入
刚刚做题时发现自己对于python的四舍五入居然如此不熟悉,于是我翻了一下自己存储的知识,想想有必要整理归纳一下了当然,这里不会只说说四舍五入,还顺带点私货(不多,懒得写)目录1.想必round()很熟悉吧 (四舍六入五成双精确)2.math模块的ceil(向上取整),floor(向下取整)3. decimal模块真正的四舍五入4.其实有更简单的四舍五入,唉1.想必round()很熟悉吧 (四舍六入五成双精确)round()取精度类似于大学实验报告里的取精度, ...原创 2022-05-09 21:10:28 · 1441 阅读 · 1 评论 -
python_读写文件_os模块的简单应用
几日不见,很是生疏啊啊啊啊,温故而知新!阅读对象:知悉python的基本语法。前言:导入os模块import os1. 当前工作目录1.1 os.getcwd()函数每一个运行在计算机上的程序,都有一个'当前目录',或者cwd。所以没有从根文件夹下的文件名或路径,都假定在当前工作目录下。可以利用os.getcwd()函数,可以获取当前工作路径的字符串。(注意:在字符串里,\(反斜杠有特殊含义,所以在字符串中输出反斜杠\需要输入\\))import osos.getcwd()原创 2022-04-23 12:46:09 · 1647 阅读 · 0 评论