OCO-2、OCO-3卫星数据下载、读取与可视化(适合初学者)

有关OCO系列数据的下载方法已经有一些同行做了比较详细的解答了,这篇博文主要记录我读取及可视化此数据的过程。因为博主自身编程能力不强并且初次接触OCO系列数据,内容的展开可能比较拖沓,适合小白一起学习 :)

OCO-2、OCO-3卫星数据下载

OCO系列卫星下载的方式可以参考下面这篇博文,描述的非常详细,

https://blog.csdn.net/weixin_42738248/article/details/126490064>

我是使用wget来批量下载的,wegt的具体使用方法参考这篇知乎问答:

https://zhuanlan.zhihu.com/p/262878066

OCO数据的读取与可视化

错误读取方式

就我的理解而言,OCO数据不同于多数的nc格式的数据,它的数据类型都是一维的,比如用python的netCDF4和numpy包读取ERA5的数据,

from netCDF4 import Dataset
path = "G:\example\ERA5\CDS20000102.nc"
dst = Dataset(path, mode='r', format="netCDF4")
print(dst.variables.keys())
long = dst.variables['longitude'][:]
lat = dst.variables['latitude'][:]
t2m = dst.variables['t2m'][:]
time = dst.variables['time'][:]
print(long.shape, lat.shape,time.shape, t2m.shape)
#此时print出来的是(33,) (25,) (5,) (5, 25, 33),说明经度、纬度和时间都是一维的数组,而数据t2m是三维的数组,即t2m中天然包含了经度、纬度、时间的信息

而对于OCO-2的数据,

from netCDF4 import Datasetpath = "E:\OCO-2\oco3_LtCO2_221101_B10400Br_230109031913s.nc4"
dst = Dataset(path, mode='r', format="netCDF4")
print(dst.variables.keys())
long = dst.variables['longitude'][:]
lat = dst.variables['latitude'][:]
xco2 = dst.variables['xco2'][:]
time = dst.variables['time'][:]
print(long.shape, lat.shape,time.shape,xco2.shape)
#此时print出来的是(186995,) (186995,) (186995,) (186995,),说明经度、纬度、时间和数据(以xoc2为例)都是一维的数组

如果直接使用ArcGIS或者QGIS读取OCO的数据,得到的结果会是这样:

查看数据属性:
这里的宽度默认成了xco2的level,高度默认成了每条数据的id。显然这与我们的认知不符。油管上NASA官方给出了数据的读取与可视化教程,我将其整理到以下内容。

使用Python读取与可视化OCO数据

使用到的库有以下这些,可以使用anaconda安装。

import netCDF4
import xarray
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.animation as animation
import plotly.express as px
import plotly
from mpl_toolkits.basemap import Basemap
from pandas import DataFrame
from IPython.display import HTML

这是可视化的模板,后面会用到。

map_token = 'pk.eyJ1Ijoic2FnYXJsaW1idTAiLCJhIjoiY2t2MXhhMm5mNnE5ajJ3dDl2eDZvNTM2NiJ9.1bwmb8HPgFZwwR8kc05r0A'

分别使用netCDF4包和xarray包读取数据,查看目标数据xco2的范围

data_xco2 = netCDF4.Dataset('E:\OCO-2\oco3_LtCO2_221101_B10400Br_230109031913s.nc4')
list(data_xco2.variables.keys())
df_xr = xarray.open_dataset('E:\OCO-2\oco3_LtCO2_221101_B10400Br_230109031913s.nc4')
print("MAX", np.max(df_xr["xco2"]))
print("MIN", np.min(df_xr["xco2"]))

使用pd.dataframe创建一个名为df_co2的五列的表格,列名分别为纬度、经度、时间、xco2和xco2质量检测

df_xco2: DataFrame = pd.DataFrame(columns=["latitude", "longitude", "datetime", "xco2", "xco2_quality_flag"])

将xarray从nc数据中读取到的各个信息写入df_xco2表格中

df_xco2["xco2"] = df_xr["xco2"][:]
df_xco2["datetime"] = df_xr["time"][:]
df_xco2["latitude"] = df_xr["latitude"][:]
df_xco2["longitude"] = df_xr["longitude"][:]
df_xco2["xco2_quality_flag"] = df_xr["xco2_quality_flag"][:]

describe一下这个表格,输出如下图所示:


先按照xco2数据的id绘制一张折线图,查看xco2的分布

plt.scatter(np.arange(0, len(df_xco2['xco2'])), df_xco2['xco2'], alpha=0.45)
plt.ylabel('XCO2', fontsize=14)
plt.axhline(y=425, c='r')
plt.axhline(y=390, c='green')


可以按照自己的要求设置可视化的值的范围,比如只将大于380和小于440的值可视化:

new_data = df_xco2[df_xco2['xco2'] < 440]
new_data = new_data[new_data['xco2'] > 380]

使用plotly.express进行绘图,

fig = px.scatter_mapbox(new_data,lat=df_xco2['latitude'],lon=df_xco2['longitude'],color=df_xco2['xco2'],zoom=0,size_max=0.25,color_continuous_scale=["yellow", "orange", "red"])
fig.update_layout(autosize=True,hovermode='closest',mapbox=dict(      #地图框accesstoken=map_token,    #访问令牌bearing=0,          #方位角pitch=0,zoom=0,style="white-bg",layers=[{'below': 'traces',"sourcetype": "raster","sourceattribution": "United States Geological Survey","source": ["https://basemap.nationalmap.gov/arcgis/rest/services/USGSImageryOnly/MapServer/tile/{z}/{y}/{x}"]}]), title='自己设置的title'
)
fig.show()


这是输出的样式,在此基础上可以进一步美化。

附上NASA的教程链接:
https://www.youtube.com/watch?v=2ZILcjYB9Fk

连载预告:
对OCO-2的XCO2介绍
XCO2支持全球和区域气候相关研究

OCO-2、OCO-3卫星数据下载、读取与可视化(适合初学者)相关推荐

  1. 卫星数据下载地址整理(包含Sentinel、Modis、Landsat等)

    地理空间数据云 http://www.gscloud.cn/ 说明:可下载landsat系列.MODIS系列.DEM数据高程数据.EO-1系列(目前退休了).Sentinel系列等卫星数据. 国家气象 ...

  2. OMI产品介绍(含气溶胶产品及数据下载读取方法)

    本文介绍参考:OMI卫星数据介绍(包含气溶胶产品) - ENVI-IDL技术殿堂 - 博客园 1. Aura卫星及其搭载的传感器 Aura (在拉丁文中表示空气)于2004年7月15日发射升空,是由多 ...

  3. 基于学术研究于NASA官网GPM卫星数据下载详细教程

    目录 一.相关网址 1.用户注册网址:(点我) 2.数据下载主页:https://disc.gsfc.nasa.gov 3.其他相关网址 二.下载数据步骤 1.首先注册账户,只有登录账户后,才能下载搜 ...

  4. Sentinel-1A卫星数据下载

    Sentinel-1A卫星于2014年4月3日发射升空,是欧洲空间局哥白尼计划发射的首颗环境监测卫星.经过一年左右的调试和预运行,在2015年4月至5月期间,该卫星开始稳定运行,采用12天的重访周期进 ...

  5. Sentinel-1 SAR卫星数据下载

    Update log (2022年1月)   目前这个网站也是可以用的https://search.asf.alaska.edu/#/,选择所需要的区域和合适的轨道时间等信息后将需要的影像加入购物车就 ...

  6. 中巴、资源、高分、环境国产卫星数据下载 | 陆地观测卫星数据服务平台

    平台介绍 今天给大家介绍的是中国资源卫星应用中心的数据下载方法. 中国资源卫星应用中心作为我国三大卫星数据中心之一的陆地观测卫星数据中心,肩负着建设我国陆地观测卫星数据集中处理.统一存档.统一分发的重 ...

  7. CALIPSO数据下载方法与可视化

    集结号 大气.海洋.陆地遥感交流QQ群:831106035.欢迎大家的加入,群内可以讨论与大气.陆地.海洋-遥感相关的问题,可以分享与上述兴趣相关的资源.祝大家学习愉快. 引言 CALIPSO (Cl ...

  8. 气象数据.txt读取与可视化

    很多网站上都可以方便的下载到气象数据,如美国海洋和大气管理局NOAA.美国航空航天局NASA和英国气象局哈德利研究中心等,数据格式包括文本(.txt).NetCDF(.nc)和普通的二进制格式(.as ...

  9. CIFAR-10数据集(介绍、下载读取、可视化显示、另存为图片)

    cifar10数据集(下载并读取.可视化显示.另存为图片) 2022-06-09 18:23:38 数据集简介 CIFAR-10 是由 Hinton 的学生 Alex Krizhevsky 和 Ily ...

最新文章

  1. 在线作图|你不知道的绘制带聚类树的堆叠柱状图的方法
  2. 学习dubbo(一): 简介
  3. MD5介绍及Windows下对文件做md5校验。
  4. Android 线程死锁的案例
  5. selenium 测试
  6. 用深度优先搜索解迷宫问题
  7. SAP Fiori Elements list report filter - implemented by framework
  8. mysql 同一帐号多次登录_freeradius2.1.3 防止用户帐号重复登录
  9. TeeChart Pro VCL/FMX教程(六):使用系列(二)
  10. 手机号码归属地 mysql_最新全国手机号码归属地信息SQLite数据库2019年2月更新
  11. 【SDCC 2016现场】数据库/大数据技术实战专场实录(下)
  12. 【转】成像的清晰度、分辨率和锐度
  13. 土豆课外科技学习历程兼参加机器人大赛小记
  14. 升级php7后的报错处理
  15. 推荐几款比较好的手机流量监控软件
  16. 欧美超个性flash网站模板源码
  17. 网上花店java项目_Java+SSM实现网上花店售卖系统
  18. Android 实现截屏和截长图功能的几种方法
  19. 商场计算机管理系统,【商场超市管理系统】免费在线试用_软件库_选软件网
  20. 单nginx配置多个代理服务

热门文章

  1. mysql怎么在一段时间区间内按照周分组,把属于一周的数据汇总在一起以及如何自定义周?
  2. 高斯过程部分数学推导
  3. 求和符号(Σ,sigma)
  4. Cadence PCB仿真使用Allegro PCB SI配置仿真库的方法图文教程
  5. 淘宝天猫API item_search-按关键字搜索淘宝商品
  6. 动画(CSS3) animation
  7. 惊了,webots自带视觉识别
  8. kaldi工具:est-pca 和 paste-feats
  9. linux下sed编辑器的使用详解
  10. java变量的类型转换基本知识_Java基础知识(一):注释、关键字、标识符、数据类型、常量、变量、数据类型转换...