python处理smap level2c 数据---根据 iqc_flag进行数据质量控制(二进制&十进制)

简介: 最近在处理SMAP_level2c_sss数据时,再进行偏差估计时发现数据存在问题,根据卫星图像对比,发现在数据筛选之前未进行质量控制,因此有较大的问题。再次,进行一定的总结:

最近在处理SMAP_level2c_sss数据时,再进行偏差估计时发现数据存在问题,根据卫星图像对比,发现在数据筛选之前未进行质量控制,因此有较大的问题。再次,进行一定的总结:


一、二进制与十进制



在此之前,先让我们简单了解一下基础知识吧~


什么是二进制?


二进制是计算机中广泛采用的一种算法。二进制数据是用0和1两个数码来表示的数,所以显示出来的数只有0、1。进位规则是“逢二进一”。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用1来表示“开”,0来表示“关”。

计算机内部表示数的字节单位是定长的,如8位,16位,或32位。

八位就是:0000 0000

其他类推

假如按照4位二进制的数进行转换,先看一张表格对比一下:


20210427165230422.png


不难看出其规律:按照从右向左排序的方式,十进制转为二进制时依次为


20210427165538489.png

举个栗子,


2021042716571246.png


所以转换后就应该是:0101

这样说是不是一下子就明白了呐~~

还是不理解的自己上网看看视频就行啦~~


二、位运算



在python中,位运算按照数据在内存中的二进制位(Bit)进行操作,同时, 位运算符只能用来操作整数类型,按照整数在内存中的二进制形式进行计算。具体的位运算符如下表所示:


20210427170742301.png


简单来说,将两个十进制数进行比较,假如有4位二进制数

0000

a&b的意思是:a、b中对应的二进制位数进行比较,两个位都为 1 时,结果才为 1,否则为 0。


举个例子:


a=4 #二进制为:0100
b=5 #二进制为:0101
c=a&b      #既二进制对应比较 0100 
                       #  0101 
#同时为1,则对应位数显示为1,否则为0
#对应结果应该是:0100


最终显示的是十进位的结果!


20210427172136934.png

理,其他的就好明白啦~

a|b:

两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0


a^b:

参与运算的两个二进制位不同时,结果为 1,相同时结果为 0。


“~” :

对参与运算的二进制位取反 .如~ 1为0,~0为1


<<:

将各个二进制位全部左移若干位,高位丢弃,低位补 0。由 << 右边的数字指定了移动的位数。


“>>”:

将左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数


三、如何进行位运算



下面针对我的smap盐度数据进行处理,通过查阅手册得知我的qc_flag为32 bit(位数)


20210427172851409.png

2021042717290828.png


每一位都表示一定的误差,当位数为0时,表示无表中体现的误差,位数为1时,有表中体现的误差。

简单来说,qc_flag中有1就说明,32 bit中有一位对应着一定的问题,可能是:陆地污染、风俗太大、银河辐射等等、、、


知道每一位对应的问题,我们再进行质量控制时,即可按需对比,比如我们想要风速小的数据,只有筛选(表中第12位)的数据是0的数据。


ok,下面打开nc文件中的iqc_flag,它告诉了我们如何比较你想要的位数:


20210427173429119.png20210427173454984.png


开发现,这些数字都是2的几次方(十进制数),这就告诉我们:

如果你想比较数据的第一位(时,将数据与1进行 & 比较

如果想比较第 8 bit ,将数据与256 进行比较 & 即可


import numpy as np
import netCDF4 as nc
filename ='G:\\SMAP\\01\\RSS_SMAP_SSS_L2C_r26542_20200120T090520_2020020_FNL_V04.0.nc'
f1 = nc.Dataset(filename)#
sss_smap_40km = f1.variables['sss_smap_40km'][:].data
sss_flg=f1.variables['iqc_flag'][:].data
#==========================================================
sss=np.array(sss_smap_40km[:,:,0])
qc=np.array(sss_flg[:,:,0])
# 比较第一位 bit
result=(qc&1)
# 取出质量控制之后的sss
sss_result=sss[result]
# 比较第八位 bit
result1=(qc&256)


20210427174554577.png


当然,一般来说,我们肯定只想要最好的数据(没有上述表中所说明的问题),既 32 bit 中每一位都是0的数据,这样子就很简单啦

直接令所有的qc数据值等于0,再取出需要的数据即可:


import numpy as np
import netCDF4 as nc
filename ='G:\\SMAP\\01\\RSS_SMAP_SSS_L2C_r26542_20200120T090520_2020020_FNL_V04.0.nc'
f1 = nc.Dataset(filename)#
sss_smap_40km = f1.variables['sss_smap_40km'][:].data
sss_flg=f1.variables['iqc_flag'][:].data
#==========================================================
sss=np.array(sss_smap_40km[:,:,0])
qc=np.array(sss_flg[:,:,0])
# 比较第一位 bit
result=(qc==0)
# 取出质量控制之后的sss
sss_result=sss[result]


20210427174801152.png

下面再进行你需要的处理(取出无效值)就可以啦~~


                           一个努力学习python的海洋小白
                            水平有限,欢迎指正!!!
                            欢迎评论、收藏。
相关文章
|
20天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
使用Python实现深度学习模型:智能数据隐私保护
使用Python实现深度学习模型:智能数据隐私保护 【10月更文挑战第3天】
64 0
|
8天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
18天前
|
数据处理 Python
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
这篇文章介绍了如何使用Python读取Excel文件中的数据,处理后将其保存为txt、xlsx和csv格式的文件。
37 3
Python实用记录(十):获取excel数据并通过列表的形式保存为txt文档、xlsx文档、csv文档
|
18天前
|
计算机视觉 Python
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
这篇文章介绍了如何使用Python的OpenCV库将多张图片合并为一张图片显示,以及如何使用matplotlib库从不同txt文档中读取数据并绘制多条折线图。
37 3
Python实用记录(九):将不同的图绘制在一起、将不同txt文档中的数据绘制多条折线图
|
19天前
|
数据可视化 算法 Python
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
本文介绍了如何利用Python脚本结合动态模态分解(DMD)技术,分析从OpenFOAM模拟中提取的二维切片数据,以深入理解流体动力学现象。通过PyVista库处理VTK格式的模拟数据,进行POD和DMD分析,揭示流场中的主要能量结构及动态特征。此方法为研究复杂流动系统提供了有力工具。
48 2
基于OpenFOAM和Python的流场动态模态分解:从数据提取到POD-DMD分析
|
6天前
|
数据可视化 算法 JavaScript
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
本文探讨了如何利用图论分析时间序列数据的平稳性和连通性。通过将时间序列数据转换为图结构,计算片段间的相似性,并构建连通图,可以揭示数据中的隐藏模式。文章介绍了平稳性的概念,提出了基于图的平稳性度量,并展示了图分区在可视化平稳性中的应用。此外,还模拟了不同平稳性和非平稳性程度的信号,分析了图度量的变化,为时间序列数据分析提供了新视角。
21 0
基于图论的时间序列数据平稳性与连通性分析:利用图形、数学和 Python 揭示时间序列数据中的隐藏模式
|
15天前
|
自然语言处理 算法 数据挖掘
探讨如何利用Python中的NLP工具,从被动收集到主动分析文本数据的过程
【10月更文挑战第11天】本文介绍了自然语言处理(NLP)在文本分析中的应用,从被动收集到主动分析的过程。通过Python代码示例,详细展示了文本预处理、特征提取、情感分析和主题建模等关键技术,帮助读者理解如何有效利用NLP工具进行文本数据分析。
36 2
|
16天前
|
JSON 安全 数据安全/隐私保护
深度剖析:Python如何运用OAuth与JWT,为数据加上双保险🔐
【10月更文挑战第10天】本文介绍了OAuth 2.0和JSON Web Tokens (JWT) 两种现代Web应用中最流行的认证机制。通过使用Flask-OAuthlib和PyJWT库,详细展示了如何在Python环境中实现这两种认证方式,从而提升系统的安全性和开发效率。OAuth 2.0适用于授权过程,JWT则简化了认证流程,确保每次请求的安全性。结合两者,可以构建出既安全又高效的认证体系。
34 1
|
22天前
|
数据采集 机器学习/深度学习 数据挖掘
数据也需SPA?Python转换大法,给你的数据做个全身放松SPA!
【10月更文挑战第4天】在数字化时代,数据犹如企业的血液,贯穿于各项业务之中。就像人需要定期SPA恢复活力,数据也需要“转换大法”来优化结构和提升质量,从而更好地支持决策分析与机器学习。本文探讨了如何使用Python进行数据SPA,包括理解需求、数据清洗、格式转换及聚合分析等步骤。通过Python强大的Pandas库,我们可以轻松完成缺失值填充、重复记录删除等任务,并实现数据格式的标准化,确保数据更加整洁、有序,助力高效分析与决策。为企业数据注入新的活力,迎接更多挑战。
20 1
|
22天前
|
数据采集 监控 数据可视化
用Python构建动态折线图:实时展示爬取数据的指南
本文介绍了如何利用Python的爬虫技术从“财富吧”获取中国股市的实时数据,并使用动态折线图展示股价变化。文章详细讲解了如何通过设置代理IP和请求头来绕过反爬机制,确保数据稳定获取。通过示例代码展示了如何使用`requests`和`matplotlib`库实现这一过程,最终生成每秒自动更新的动态股价图。这种方法不仅适用于股市分析,还可广泛应用于其他需要实时监控的数据源,帮助用户快速做出决策。