python处理smap level2c 数据---根据 iqc_flag进行数据质量控制(二进制十进制)
python 处理SMAP_level2c数据进行质量控制
- 一、二进制与十进制
- 二、位运算符
- 三、如何进行位运算
最近在处理SMAP_level2c_sss数据时,再进行偏差估计时发现数据存在问题,根据卫星图像对比,发现在数据筛选之前未进行质量控制,因此有较大的问题。再次,进行一定的总结:
一、二进制与十进制
在此之前,先让我们简单了解一下基础知识吧~
什么是二进制?
二进制是计算机中广泛采用的一种算法。二进制数据是用0和1两个数码来表示的数,所以显示出来的数只有0、1。进位规则是“逢二进一”。当前的计算机系统使用的基本上是二进制系统,数据在计算机中主要是以补码的形式存储的。计算机中的二进制则是一个非常微小的开关,用1来表示“开”,0来表示“关”。
计算机内部表示数的字节单位是定长的,如8位,16位,或32位。
八位就是:0000 0000
其他类推
假如按照4位二进制的数进行转换,先看一张表格对比一下:
不难看出其规律:按照从右向左排序的方式,十进制转为二进制时依次为
举个栗子,
所以转换后就应该是:0101
这样说是不是一下子就明白了呐~~
还是不理解的自己上网看看视频就行啦~~
二、位运算符
在python中,位运算按照数据在内存中的二进制位(Bit)进行操作,同时, 位运算符只能用来操作整数类型,按照整数在内存中的二进制形式进行计算。具体的位运算符如下表所示:
简单来说,将两个十进制数进行比较,假如有4位二进制数
0000
a&b的意思是:a、b中对应的二进制位数进行比较,两个位都为 1 时,结果才为 1,否则为 0。
举个例子:
a=4 #二进制为:0100
b=5 #二进制为:0101
c=a&b #既二进制对应比较 0100 # 0101
#同时为1,则对应位数显示为1,否则为0
#对应结果应该是:0100
最终显示的是十进位的结果!
同理,其他的就好明白啦~
a|b:
两个二进制位有一个为 1 时,结果就为 1,两个都为 0 时结果才为 0
a^b:
参与运算的两个二进制位不同时,结果为 1,相同时结果为 0。
“~” :
对参与运算的二进制位取反 .如~ 1为0,~0为1
<<:
将各个二进制位全部左移若干位,高位丢弃,低位补 0。由 << 右边的数字指定了移动的位数。
“>>”:
将左边的运算数的各二进位全部右移若干位,>> 右边的数字指定了移动的位数
三、如何进行位运算
下面针对我的smap盐度数据进行处理,通过查阅手册得知我的qc_flag为32 bit(位数)
每一位都表示一定的误差,当位数为0时,表示无表中体现的误差,位数为1时,有表中体现的误差。
简单来说,qc_flag中有1就说明,32 bit中有一位对应着一定的问题,可能是:陆地污染、风俗太大、银河辐射等等、、、
知道每一位对应的问题,我们再进行质量控制时,即可按需对比,比如我们想要风速小的数据,只有筛选(表中第12位)的数据是0的数据。
ok,下面打开nc文件中的iqc_flag,它告诉了我们如何比较你想要的位数:
打开发现,这些数字都是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)
当然,一般来说,我们肯定只想要最好的数据(没有上述表中所说明的问题),既 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]
下面再进行你需要的处理(取出无效值)就可以啦~~
一个努力学习python的海洋小白水平有限,欢迎指正!!!欢迎评论、收藏。
python处理smap level2c 数据---根据 iqc_flag进行数据质量控制(二进制十进制)相关推荐
- Python如何爬取实时变化的WebSocket数据
作者 | 韦世东 来源 | 进击的Coder(公众号id:FightingCode) 一.前言 作为一名爬虫工程师,在工作中常常会遇到爬取实时数据的需求,比如体育赛事实时数据.股市实时数据或币圈实时变 ...
- Python中将两个列表(list)数据zip起来
Python中将两个列表(list)数据zip起来 目录 Python中将两个列表(list)数据zip起来
- python使用matplotlib中的errorbar函数可视化误差条、并自定义数据点标记、数据点大小、数据点颜色、数据点边缘颜色、误差棒颜色、误差棒线条宽度、误差棒边界线长度、误差棒边界线厚度等
python使用matplotlib中的errorbar函数可视化误差条.并自定义数据点标记.数据点大小.数据点颜色.数据点边缘颜色.误差棒颜色.误差棒线条宽度.误差棒边界线长度.误差棒边界线厚度等 ...
- Python使用SQLAlchemy连接数据库并创建数据表、插入数据、删除数据、更新表、查询表(CRUD)
Python使用SQLAlchemy连接数据库并创建数据表.插入数据.删除数据.更新表.查询表(CRUD) 目录 Python使用SQLAlchemy连接数据库并创建数据表 #SQLAlchemy # ...
- python使用fpdf生成各种样式pdf表格数据
python使用fpdf生成各种样式pdf表格数据 目录
- python使用什么函数接收用户输入的数据_python 3.x:调用和执行函数的用户输入...
有许多类似的问题,但没有一个答案解决了我的问题. 我定义了几个解析大型数据集的函数.首先,我调用数据,然后将数据(在.txt中表示为行和列)组织到列表中,我将为各个数据条目编制索引.在此之后,我建立了 ...
- python 可视化界面_工具推荐 | 3维数据可视化
高维数据是一种非常常见的数据类型,其中包含了多种属性.比如:数值模式输出结果通常包含多种物理参量及多个时次,还有一些空间位置信息.尽管高维数据非常常见,但是高维数据的分析一直是个挑战.那么如何才能有效 ...
- 我们用Python分析了B站4万条数据评论,揭秘本山大叔《念诗之王》大热原因!...
来源:恋习Python 本文约2000字,建议阅读10分钟. 我们通过Python大法通过获取B站:[春晚鬼畜]赵本山:我就是念诗之王!4万条数据评论,与大家一起看看其背后火起来的原因. 1990年本 ...
- python 表格格式输出_利用python对excel中一列的时间数据更改格式操作
问题场景:需要将下列的交期一列的数据格式更改成2019/05/10 存货编码 尺寸 数量 交期 0 K10Y0190000X B140 200 2019-05-10 00:00:00 1 K10Y01 ...
- python 处理数据量大的数据内存_PyTables处理的数据比内存大很多倍
记忆结构 从未使用过pytables,但查看源代码:class _Deadnodes(lrucacheExtension.NodeCache): pass 因此,看起来死节点是使用LRU缓存实现的.L ...
最新文章
- 今日头条李磊等最新论文:用于文本生成的核化贝叶斯Softmax
- 北师大毕彦超:AI和人类感知的相同点和不同点
- 【数据结构与算法】之树的概念与使用
- ASP.NET Core Web API下事件驱动型架构的实现(二):事件处理器中对象生命周期的管理
- VSCode中Clangd无法找到stdio.h
- 东芝Toshiba e-STUDIO4515AC 一体机驱动
- 三基色配色表java_【调色】颜色配色表 适合重彩搭配用
- API(15)——打印系统开发(52)——WinForm开发(62)——C#通过调用WinApi打印PDF文档类,服务器PDF打印、IIS PDF打印
- 【测试开发】一个5年测试开发的成长经验,大学毕业就开启他的职业生涯......
- 录屏软件 OBS 入门笔记
- 【沃顿商学院学习笔记】商业分析——Customer Analytics:01 描述性分析 Descriptive Analytics
- linux各个目录介绍,Linux各目录及每个目录的详细介绍
- DNS主从域名解析服务器
- 取汉字的拼音简码.如果是其它字符,则原样返回(2010)
- [练习][错误]MyBatis出错:Error instantiating class com.entity.Grade with invalid types () or values ().
- GeoTools源码解读 - XML处理
- gta5股票服务器维护,各位大佬问一下GTA5 股票里的BAWSAQ为什么一直维护啊
- 专利产品是专利授权的重要基石
- SPSS R插件及PS Matching插件最详细简洁的安装经验
- 基于Springboot和mybatis在线考试系统的设计与实现