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. 计算机与plc链接通信协议,实现上位计算机与PLC的上位链接系统的通信设计
  2. python与excel结合-Python与Excel之间的交互
  3. GDCM:gdcm::Printer的测试程序
  4. Java集合框架(一)
  5. 利用 Node.js 实现 SAP Hana 数据库编程接口
  6. hdu 1317——XYZZY
  7. localToGlobal 本地转换全局
  8. cocos2dx骨骼动画Armature源码分析(一)
  9. 洛谷 P2894 酒店 Hotel
  10. Microsoft SQL Server 2008 R2出现索引超出数组界限
  11. html返回按钮 超链接,ppt超链接返回键
  12. 网站服务器记录攻击日志ctf,通过网站日志分析sql注入攻击的痕迹
  13. PowerPoint-漂亮表格三招
  14. Excel加密如何破解
  15. [云原生专题-4]:云平台 - 在阿里云平台快速搭建服务器集群
  16. 公司不让使用XShell破解版后,我准备用这种方式!
  17. 让我受益终生的六个字:道、法、术、器、志、势
  18. linux中ifconfig无法显示ip地址
  19. 聊一聊缓存 [from memory cache 和 from disk cache]
  20. GISer入门指南 第二季(PPTX)

热门文章

  1. 有情不必终老,暗香盈动恰好(转)
  2. 水平居中和垂直居中方法
  3. 时间转换之大小写转换
  4. 学生管理系统(奖学金系统)
  5. homestead 安装mysql8_Homestead 安装其它的PHP版本
  6. atomikos 使用说明
  7. Linux 中 sudo、su命令
  8. 科学的学习方法有哪些?
  9. Mac 关闭 Mac SIP 安全设置
  10. 微信分享JS代码 WeixinApi.js