跳转到主要内容

NOAA气候数据记录(CDR)stactools包

项目描述

stactools-noaa-cdr

PyPI

STAC示例

布局

每个气候数据记录可以有多个子数据集,这些子数据集本身也可以按时间间隔和其他属性进行组织。我们选择为每个CDR创建一个STAC集合,并按时间间隔和时间窗口组织该集合中的项目。子数据集作为COG资产包含在内。

由于每个CDR在其NetCDF中具有不同的数据布局,从NetCDF到STAC集合和项的映射从CDR到CDR各不相同。下面的图表是对这些布局的抽象表示。请注意,类名并不直接对应于代码实体;这是一个严格的概念图。请注意SeaSurfaceTemperatureWHOIItemSeaSurfaceTemperatureWHOINetCDF之间的8-1关系;每个SST-WHOI NetCDF包含八个时间步长,因此每个NetCDF分解为八个STAC项。

classDiagram
  direction LR

  class OceanHeatContent
  <<Collection>> OceanHeatContent

  class SeaIceConcentration
  <<Collection>> SeaIceConcentration

  class SeaSurfaceTemperatureOptimumInterpolation
  <<Collection>> SeaSurfaceTemperatureOptimumInterpolation

  class SeaSurfaceTemperatureWHOI
  <<Collection>> SeaSurfaceTemperatureWHOI


  OceanHeatContent "1" --> "n" OceanHeatContentNetCDF
  OceanHeatContent "1" --> "0..n" OceanHeatContentItem

  SeaIceConcentration "1" --> "0..n" SeaIceConcentrationItem
  SeaIceConcentrationItem "1" --> "1" SeaIceConcentrationNetCDF

  SeaSurfaceTemperatureOptimumInterpolation "1" --> "0..n" SeaSurfaceTemperatureOptimumInterpolationItem
  SeaSurfaceTemperatureOptimumInterpolationItem "1" --> "1" SeaSurfaceTemperatureOptimumInterpolationNetCDF

  SeaSurfaceTemperatureWHOI "1" --> "0..n" SeaSurfaceTemperatureWHOIItem
  SeaSurfaceTemperatureWHOIItem "8" --> "1" SeaSurfaceTemperatureWHOINetCDF

安装

pip install stactools-noaa-cdr

命令行使用

例如,创建一个集合,用于海洋热含量CDR

stac noaa-cdr ocean-heat-content create-collection examples/ocean-heat-content/collection.json

创建COGs和项

stac noaa-cdr ocean-heat-content create-collection --create-items \
  examples/ocean-heat-content/collection.json

仅创建最新数据的COGs和项(例如,创建一个小的示例集合)

stac noaa-cdr ocean-heat-content create-collection --create-items --latest-only \
  examples/ocean-heat-content/collection.json

每个CDR都有自己的命令行界面;使用stac noaa-cdr --help查看支持的CDR列表。

贡献

我们使用pre-commit来检查任何更改。要设置您的开发环境

pip install -e .
pip install -r requirements-dev.txt
pre-commit install

检查所有文件

pre-commit run --all-files

运行测试

pytest

更新静态资源

源树中有几个.json文件,用于在创建集合和项时填充元数据。在scripts/目录中有两个辅助脚本来更新这些文件。

scripts/create_item_assets.py
scripts/extract_netcdf_asset_metadata.py > src/stactools/noaa_cdr/ocean-heat-content/asset-metadata.json

此外,还有一个脚本来创建examples/目录

scripts/create_examples.py

由以下支持