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的海洋小白
                            水平有限,欢迎指正!!!
                            欢迎评论、收藏。
相关文章
|
24天前
|
数据采集 JSON 测试技术
如何在Python中高效实现CSV到JSON的数据转换
在实际项目中,数据格式转换是常见问题,尤其从CSV到JSON的转换。本文深入探讨了多种转换方法,涵盖Python基础实现、数据预处理、错误处理、性能优化及调试验证技巧。通过分块处理、并行处理等手段提升大文件转换效率,并介绍如何封装为命令行工具或Web API,实现自动化批量处理。关键点包括基础实现、数据清洗、异常捕获、性能优化和单元测试,确保转换流程稳定高效。
147 83
|
12天前
|
JSON API 数据格式
Python 请求微店商品详情数据 API 接口
微店开放平台允许开发者通过API获取商品详情数据。使用Python请求微店商品详情API的主要步骤包括:1. 注册并申请API权限,获得app_key和app_secret;2. 确定API接口地址与请求参数,如商品ID;3. 生成签名确保请求安全合法;4. 使用requests库发送HTTP请求获取数据;5. 处理返回的JSON格式响应数据。开发时需严格遵循微店API文档要求。
|
8天前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
1月前
|
数据采集 数据安全/隐私保护 Python
从零开始:用Python爬取网站的汽车品牌和价格数据
在现代化办公室中,工程师小李和产品经理小张讨论如何获取懂车帝网站的汽车品牌和价格数据。小李提出使用Python编写爬虫,并通过亿牛云爬虫代理避免被封禁。代码实现包括设置代理、请求头、解析网页内容、多线程爬取等步骤,确保高效且稳定地抓取数据。小张表示理解并准备按照指导操作。
从零开始:用Python爬取网站的汽车品牌和价格数据
|
11天前
|
JSON 监控 API
python语言采集淘宝商品详情数据,json数据示例返回
通过淘宝开放平台的API接口,开发者可以轻松获取商品详情数据,并利用这些数据进行商品分析、价格监控、库存管理等操作。本文提供的示例代码和JSON数据解析方法,可以帮助您快速上手淘宝商品数据的采集与处理。
|
25天前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
49 12
|
17天前
|
数据采集 供应链 API
实战指南:通过1688开放平台API获取商品详情数据(附Python代码及避坑指南)
1688作为国内最大的B2B供应链平台,其API为企业提供合法合规的JSON数据源,直接获取批发价、SKU库存等核心数据。相比爬虫方案,官方API避免了反爬严格、数据缺失和法律风险等问题。企业接入1688商品API需完成资质认证、创建应用、签名机制解析及调用接口四步。应用场景包括智能采购系统、供应商评估模型和跨境选品分析。提供高频问题解决方案及安全合规实践,确保数据安全与合法使用。立即访问1688开放平台,解锁B2B数据宝藏!
|
24天前
|
数据采集 存储 前端开发
用Python抓取亚马逊动态加载数据,一文读懂
用Python抓取亚马逊动态加载数据,一文读懂
|
16天前
|
存储 数据采集 JSON
Python爬取某云热歌榜:解析动态加载的歌曲数据
Python爬取某云热歌榜:解析动态加载的歌曲数据
|
2月前
|
数据采集 Web App开发 数据可视化
Python用代理IP获取抖音电商达人主播数据
在当今数字化时代,电商直播成为重要的销售模式,抖音电商汇聚了众多达人主播。了解这些主播的数据对于品牌和商家至关重要。然而,直接从平台获取数据并非易事。本文介绍如何使用Python和代理IP高效抓取抖音电商达人主播的关键数据,包括主播昵称、ID、直播间链接、观看人数、点赞数和商品列表等。通过环境准备、代码实战及数据处理与可视化,最终实现定时任务自动化抓取,为企业决策提供有力支持。

热门文章

最新文章