diff --git a/catalog/catalog.json b/catalog/catalog.json index 96697fbf85ce84099da89e7c21b34dce5d9b21ae..5c655b120f7e212add9b8e091d015de876c93fce 100644 --- a/catalog/catalog.json +++ b/catalog/catalog.json @@ -33,6 +33,11 @@ "rel": "child", "href": "./cprep_tasmax_day_I35txdetrp1-DeltaSD-A12L01K00_rcp26_r6i1p1_I35Land_20060101-20991231/collection.json", "type": "application/json" + }, + { + "rel": "child", + "href": "./dcp_conus_t/collection.json", + "type": "application/json" } ] } \ No newline at end of file diff --git a/catalog/dcp_conus_t/collection.json b/catalog/dcp_conus_t/collection.json new file mode 100644 index 0000000000000000000000000000000000000000..0d85c171e24bdd5b375d53e249892bd85e3d006a --- /dev/null +++ b/catalog/dcp_conus_t/collection.json @@ -0,0 +1,1113 @@ +{ + "type": "Collection", + "id": "dcp_conus_t", + "stac_version": "1.0.0", + "description": "dcp_conus_t", + "links": [ + { + "rel": "root", + "href": "../catalog.json", + "type": "application/json" + }, + { + "rel": "parent", + "href": "../catalog.json", + "type": "application/json" + } + ], + "stac_extensions": [ + "https://stac-extensions.github.io/datacube/v2.2.0/schema.json" + ], + "cube:dimensions": { + "time": { + "type": "temporal", + "description": "time", + "extent": [ + "1960-01-01T00:00:00Z", + "2099-12-31T00:00:00Z" + ], + "step": "NaT" + }, + "lon": { + "type": "spatial", + "axis": "x", + "description": "lon", + "extent": [ + 235.3125, + 292.9375 + ], + "step": 0.0, + "reference_system": "{\"$schema\":\"https://proj.org/schemas/v0.5/projjson.schema.json\",\"type\":\"ProjectedCRS\",\"name\":\"unknown\",\"base_crs\":{\"name\":\"unknown\",\"datum\":{\"type\":\"GeodeticReferenceFrame\",\"name\":\"unknown\",\"ellipsoid\":{\"name\":\"WGS 84\",\"semi_major_axis\":6378137,\"inverse_flattening\":298.257223563}},\"coordinate_system\":{\"subtype\":\"ellipsoidal\",\"axis\":[{\"name\":\"Longitude\",\"abbreviation\":\"lon\",\"direction\":\"east\",\"unit\":\"degree\"},{\"name\":\"Latitude\",\"abbreviation\":\"lat\",\"direction\":\"north\",\"unit\":\"degree\"},{\"name\":\"Ellipsoidal height\",\"abbreviation\":\"h\",\"direction\":\"up\",\"unit\":\"metre\"}]}},\"conversion\":{\"name\":\"unknown\",\"method\":{\"name\":\"Equidistant Cylindrical\",\"id\":{\"authority\":\"EPSG\",\"code\":1028}},\"parameters\":[{\"name\":\"Latitude of 1st standard parallel\",\"value\":0,\"unit\":\"degree\",\"id\":{\"authority\":\"EPSG\",\"code\":8823}},{\"name\":\"Latitude of natural origin\",\"value\":0,\"unit\":\"degree\",\"id\":{\"authority\":\"EPSG\",\"code\":8801}},{\"name\":\"Longitude of natural origin\",\"value\":0,\"unit\":\"degree\",\"id\":{\"authority\":\"EPSG\",\"code\":8802}},{\"name\":\"False easting\",\"value\":0,\"unit\":{\"type\":\"LinearUnit\",\"name\":\"unknown\",\"conversion_factor\":111319.490793274},\"id\":{\"authority\":\"EPSG\",\"code\":8806}},{\"name\":\"False northing\",\"value\":0,\"unit\":{\"type\":\"LinearUnit\",\"name\":\"unknown\",\"conversion_factor\":111319.490793274},\"id\":{\"authority\":\"EPSG\",\"code\":8807}}]},\"coordinate_system\":{\"subtype\":\"Cartesian\",\"axis\":[{\"name\":\"Easting\",\"abbreviation\":\"E\",\"direction\":\"east\",\"unit\":{\"type\":\"LinearUnit\",\"name\":\"unknown\",\"conversion_factor\":111319.490793274}},{\"name\":\"Northing\",\"abbreviation\":\"N\",\"direction\":\"north\",\"unit\":{\"type\":\"LinearUnit\",\"name\":\"unknown\",\"conversion_factor\":111319.490793274}},{\"name\":\"Ellipsoidal height\",\"abbreviation\":\"h\",\"direction\":\"up\",\"unit\":\"metre\"}]}}" + }, + "lat": { + "type": "spatial", + "axis": "y", + "description": "lat", + "extent": [ + 25.1875, + 52.8125 + ], + "step": 0.0, + "reference_system": "{\"$schema\":\"https://proj.org/schemas/v0.5/projjson.schema.json\",\"type\":\"ProjectedCRS\",\"name\":\"unknown\",\"base_crs\":{\"name\":\"unknown\",\"datum\":{\"type\":\"GeodeticReferenceFrame\",\"name\":\"unknown\",\"ellipsoid\":{\"name\":\"WGS 84\",\"semi_major_axis\":6378137,\"inverse_flattening\":298.257223563}},\"coordinate_system\":{\"subtype\":\"ellipsoidal\",\"axis\":[{\"name\":\"Longitude\",\"abbreviation\":\"lon\",\"direction\":\"east\",\"unit\":\"degree\"},{\"name\":\"Latitude\",\"abbreviation\":\"lat\",\"direction\":\"north\",\"unit\":\"degree\"},{\"name\":\"Ellipsoidal height\",\"abbreviation\":\"h\",\"direction\":\"up\",\"unit\":\"metre\"}]}},\"conversion\":{\"name\":\"unknown\",\"method\":{\"name\":\"Equidistant Cylindrical\",\"id\":{\"authority\":\"EPSG\",\"code\":1028}},\"parameters\":[{\"name\":\"Latitude of 1st standard parallel\",\"value\":0,\"unit\":\"degree\",\"id\":{\"authority\":\"EPSG\",\"code\":8823}},{\"name\":\"Latitude of natural origin\",\"value\":0,\"unit\":\"degree\",\"id\":{\"authority\":\"EPSG\",\"code\":8801}},{\"name\":\"Longitude of natural origin\",\"value\":0,\"unit\":\"degree\",\"id\":{\"authority\":\"EPSG\",\"code\":8802}},{\"name\":\"False easting\",\"value\":0,\"unit\":{\"type\":\"LinearUnit\",\"name\":\"unknown\",\"conversion_factor\":111319.490793274},\"id\":{\"authority\":\"EPSG\",\"code\":8806}},{\"name\":\"False northing\",\"value\":0,\"unit\":{\"type\":\"LinearUnit\",\"name\":\"unknown\",\"conversion_factor\":111319.490793274},\"id\":{\"authority\":\"EPSG\",\"code\":8807}}]},\"coordinate_system\":{\"subtype\":\"Cartesian\",\"axis\":[{\"name\":\"Easting\",\"abbreviation\":\"E\",\"direction\":\"east\",\"unit\":{\"type\":\"LinearUnit\",\"name\":\"unknown\",\"conversion_factor\":111319.490793274}},{\"name\":\"Northing\",\"abbreviation\":\"N\",\"direction\":\"north\",\"unit\":{\"type\":\"LinearUnit\",\"name\":\"unknown\",\"conversion_factor\":111319.490793274}},{\"name\":\"Ellipsoidal height\",\"abbreviation\":\"h\",\"direction\":\"up\",\"unit\":\"metre\"}]}}" + }, + "bottom_top_stag": { + "type": "spatial", + "axis": "z", + "description": null + }, + "bottom_top": { + "type": "spatial", + "axis": "z", + "description": null + }, + "soil_layers_stag": { + "type": "spatial", + "axis": "z", + "description": null + }, + "x_stag": { + "type": "spatial", + "axis": "x", + "description": null + }, + "y_stag": { + "type": "spatial", + "axis": "y", + "description": null + }, + "snow_layers_stag": { + "type": "spatial", + "axis": "z", + "description": null + }, + "snso_layers_stag": { + "type": "spatial", + "axis": "z", + "description": null + } + }, + "cube:variables": { + "ccsm-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "ccsm-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "ccsm-a1fi-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "ccsm-a1fi-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "ccsm-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "ccsm-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "ccsm-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "ccsm-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t47-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t47-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t47-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t47-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t47-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t47-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t63-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t63-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t63-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t63-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t63-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cgcm3_t63-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cnrm-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cnrm-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cnrm-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cnrm-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cnrm-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "cnrm-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "csiro-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "csiro-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "csiro-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "csiro-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "csiro-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "csiro-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echam5-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echam5-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echam5-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echam5-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echam5-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echam5-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echo-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echo-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echo-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echo-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echo-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "echo-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-0-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-0-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-0-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-0-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-1-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-1-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-1-a1fi-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-1-a1fi-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-1-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-1-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-1-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "gfdl_2-1-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "giss_aom-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "giss_aom-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "giss_aom-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "giss_aom-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadcm3-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadcm3-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadcm3-a1fi-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadcm3-a1fi-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadcm3-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadcm3-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadcm3-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadcm3-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadgem-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadgem-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadgem-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "hadgem-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "miroc_hi-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "miroc_hi-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "miroc_hi-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "miroc_hi-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "miroc_med-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "miroc_med-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "miroc_med-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "miroc_med-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "miroc_med-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "miroc_med-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "mri_cgcm2-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "mri_cgcm2-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "mri_cgcm2-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "mri_cgcm2-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "mri_cgcm2-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "mri_cgcm2-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "pcm-a1b-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "pcm-a1b-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "pcm-a1fi-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "pcm-a1fi-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "pcm-a2-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "pcm-a2-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "pcm-b1-tmax-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Maximum Temperature in Degrees Celsius", + "unit": "degreesC" + }, + "pcm-b1-tmin-NAm-grid": { + "dimensions": [ + "time", + "lat", + "lon" + ], + "type": "data", + "description": "Downscaled Minimum Temperature in Degrees Celsius", + "unit": "degreesC" + } + }, + "extent": { + "spatial": { + "bbox": [ + [ + 235.3125, + 25.1875, + 292.9375, + 52.8125 + ] + ] + }, + "temporal": { + "interval": [ + [ + "1960-01-01T00:00:00Z", + "2099-12-31T00:00:00Z" + ] + ] + } + }, + "license": "CC0-1.0", + "assets": { + "zarr-s3-osn": { + "href": "s3://mdmf/gdp/DCP/conus_t.zarr/", + "type": "application/vnd+zarr", + "description": "Open Storage Network Pod S3 API access to collection zarr group", + "xarray:open_kwargs": { + "chunks": {}, + "engine": "zarr", + "consolidated": true + }, + "xarray:storage_options": { + "anon": true, + "client_kwargs": { + "endpoint_url": "https://usgs.osn.mghpcc.org/" + } + }, + "roles": [ + "data", + "zarr", + "s3" + ] + }, + "zarr-s3": { + "href": "s3://nhgf-development/workspace/DataConversion/DCP/conus_t.zarr/", + "type": "application/vnd+zarr", + "description": "S3 access to collection zarr group", + "xarray:open_kwargs": { + "chunks": {}, + "engine": "zarr", + "consolidated": true + }, + "xarray:storage_options": { + "requester_pays": true + }, + "roles": [ + "data", + "zarr", + "s3" + ] + } + } +} \ No newline at end of file diff --git a/workflows/archive/dcp_conus_t_create_collection_from_zarr.ipynb b/workflows/archive/dcp_conus_t_create_collection_from_zarr.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..e3a0fe25db712a427a3d0f0548a1e7d7b5d0698d --- /dev/null +++ b/workflows/archive/dcp_conus_t_create_collection_from_zarr.ipynb @@ -0,0 +1,848 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "6c10e07b-1e60-4926-af1d-fa75dc78e5d4", + "metadata": { + "tags": [] + }, + "source": [ + "# dcp_conus_t Daily Zarr -> Collection Workflow\n", + "This is a workflow to build a [STAC collection](https://github.com/radiantearth/stac-spec/blob/master/collection-spec/collection-spec.md) from the zarr asset for the dataset named above. We use the [datacube extension](https://github.com/stac-extensions/datacube) to define the spatial and temporal dimensions of the zarr store, as well as the variables it contains.\n", + "\n", + "To simplify this workflow so that it can scale to many datasets, a few simplifying suggestions and assumptions are made:\n", + "1. For USGS data, we can use the CC0-1.0 license. For all other data we can use Unlicense. Ref: https://spdx.org/licenses/\n", + "2. I am assuming all coordinates are from the WGS84 datum if not specified." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "201e0945-de55-45ff-b095-c2af009a4e62", + "metadata": {}, + "outputs": [], + "source": [ + "import pystac\n", + "from pystac.extensions.datacube import CollectionDatacubeExtension, AssetDatacubeExtension, AdditionalDimension, DatacubeExtension\n", + "import xarray as xr\n", + "import cf_xarray\n", + "import os\n", + "import fsspec\n", + "import cf_xarray\n", + "import hvplot.xarray\n", + "import pandas as pd\n", + "import json\n", + "import numpy as np\n", + "import metpy\n", + "import cartopy.crs as ccrs\n", + "import cfunits\n", + "import json" + ] + }, + { + "cell_type": "markdown", + "id": "20b00e88-5a13-46b3-9787-d9ac2d4e7bd6", + "metadata": {}, + "source": [ + "## Open up NHGF STAC Catalog" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "adf6c59d-58cd-48b1-a5fd-3bb205a3ef56", + "metadata": {}, + "outputs": [], + "source": [ + "# define folder location where your STAC catalog json file is\n", + "catalog_path = os.path.join('..', '..', 'catalog')\n", + "# open catalog\n", + "catalog = pystac.Catalog.from_file(os.path.join(catalog_path, 'catalog.json'))" + ] + }, + { + "cell_type": "markdown", + "id": "996e60ba-13e4-453a-8534-e62ce747f0fa", + "metadata": {}, + "source": [ + "## Collection Metadata Input" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "482d204d-b5b6-40e5-ac42-55b459be1097", + "metadata": {}, + "outputs": [], + "source": [ + "# name for STAC collection\n", + "collection_id = 'dcp_conus_t'\n", + "# description of STAC collection\n", + "collection_description = 'dcp_conus_t'\n", + "# license for dataset\n", + "collection_license = 'CC0-1.0'" + ] + }, + { + "cell_type": "markdown", + "id": "116b5837-8e85-4ae7-964a-803533ded714", + "metadata": {}, + "source": [ + "## Asset Metadata Input" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "dd6fa323-132a-4794-8c80-576933f547a0", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# url to zarr store that you want to create a collection for\n", + "zarr_url = 's3://mdmf/gdp/DCP/conus_t.zarr/'\n", + "\n", + "# define keyword arguments needed for opening the dataset with xarray\n", + "# ref: https://github.com/stac-extensions/xarray-assets\n", + "xarray_opendataset_kwargs = {\"xarray:open_kwargs\":{\"chunks\":{},\"engine\":\"zarr\",\"consolidated\":True},\n", + " \"xarray:storage_options\": {\"anon\": True, \"client_kwargs\": {\"endpoint_url\":\"https://usgs.osn.mghpcc.org/\"}}}\n", + "# description for zarr url asset attached to collection (zarr_url)\n", + "asset_description = \"Open Storage Network Pod S3 API access to collection zarr group\"\n", + "# roles to tag zarr url asset with\n", + "asset_roles = [\"data\",\"zarr\",\"s3\"]" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e1441cd4-e94c-4902-af46-8f1af470eb6b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# url to zarr store that you want to create a collection for\n", + "zarr_url2 = 's3://nhgf-development/workspace/DataConversion/DCP/conus_t.zarr/'\n", + "\n", + "# define keyword arguments needed for opening the dataset with xarray\n", + "# ref: https://github.com/stac-extensions/xarray-assets\n", + "xarray_opendataset_kwargs2 = {\"xarray:open_kwargs\":{\"chunks\":{},\"engine\":\"zarr\",\"consolidated\":True},\n", + " \"xarray:storage_options\":{\"requester_pays\":True}}\n", + "# description for zarr url asset attached to collection (zarr_url)\n", + "asset_description2 = \"S3 access to collection zarr group\"\n", + "# roles to tag zarr url asset with\n", + "asset_roles2 = [\"data\",\"zarr\",\"s3\"]" + ] + }, + { + "cell_type": "markdown", + "id": "b213b74f-ad17-4774-93b6-3b62be616b45", + "metadata": { + "tags": [] + }, + "source": [ + "## Data Exploration" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "708f2cf5-79ab-49af-8067-de31d0d13ee6", + "metadata": {}, + "outputs": [], + "source": [ + "# open and view zarr dataset\n", + "fs2 = fsspec.filesystem('s3', anon=True, endpoint_url='https://usgs.osn.mghpcc.org/')\n", + "ds = xr.open_dataset(fs2.get_mapper(zarr_url), engine='zarr', \n", + " backend_kwargs={'consolidated':True}, chunks={})\n", + "ds" + ] + }, + { + "cell_type": "markdown", + "id": "0bc7e9b3-ad62-4b10-a18e-66b7ed2d35dc", + "metadata": {}, + "source": [ + "## Identify x, y, t dimensions of dataset\n", + "May require user input if dimensions cannot be auto-detected." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ab91268f-7200-4cb1-979a-c7d75531d2c0", + "metadata": {}, + "outputs": [], + "source": [ + "# dims_auto_extract = ['X', 'Y', 'T']\n", + "# def extract_dim(ds, d):\n", + "# try:\n", + "# dim_list = ds.cf.axes[d]\n", + "# assert len(dim_list)==1, f'There are too many {d} dimensions in this dataset.'\n", + "# dim = dim_list[0]\n", + "# except KeyError:\n", + "# print(f\"Could not auto-extract {d} dimension name.\")\n", + "# print(\"Look at the xarray output above showing the dataset dimensions.\")\n", + "# dim = str(input(f\"What is the name of the {d} dimension of this dataset?\"))\n", + "# assert dim in ds.dims, \"That is not a valid dimension name for this dataset\"\n", + "# print(f\"name of {d} dimension: {dim}\\n\")\n", + "# return dim\n", + "\n", + "# dim_names_dict = {}\n", + "# for d in dims_auto_extract:\n", + "# dim_names_dict[d] = extract_dim(ds, d)\n", + "dim_names_dict = {'X': 'lon', 'Y': 'lat', 'T': 'time'}\n", + "print(f\"Dimension dictionary: {dim_names_dict}\")" + ] + }, + { + "cell_type": "markdown", + "id": "810d7480-165d-41c0-bd09-163656a14003", + "metadata": {}, + "source": [ + "## Get crs info" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b03d52f3-1367-4255-a561-52ee4fc9e92d", + "metadata": {}, + "outputs": [], + "source": [ + "ds = ds.metpy.parse_cf()\n", + "crs = ds[list(ds.keys())[0]].metpy.cartopy_crs" + ] + }, + { + "cell_type": "markdown", + "id": "8fbfecfb-9886-4d06-a34c-6471cb0a6053", + "metadata": {}, + "source": [ + "## Plot a map" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4eb4d027-4266-4a0b-8f16-bacfbef06242", + "metadata": {}, + "outputs": [], + "source": [ + "# # plot a map of a single variable\n", + "# var_to_plot = 'SNOW'\n", + "# da = ds[var_to_plot].sel(time='2014-03-01 00:00').load()\n", + "# da.hvplot.quadmesh(x='lon', y='lat', rasterize=True,\n", + "# geo=True, tiles='OSM', alpha=0.7, cmap='turbo')" + ] + }, + { + "cell_type": "markdown", + "id": "5e057a6c-06fb-4406-823b-e81c58e520e4", + "metadata": {}, + "source": [ + "## Plot a time series at a specific point\n", + "This can help you verify a variable's values" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "c7de2681-88c2-4597-857c-8f169c596f8b", + "metadata": {}, + "outputs": [], + "source": [ + "# # enter lat, lon of point you want to plot time series for\n", + "# lat,lon = 39.978322,-105.2772194\n", + "# time_start = '2013-01-01 00:00'\n", + "# time_end = '2013-12-31 00:00'\n", + "# x, y = crs.transform_point(lon, lat, src_crs=ccrs.PlateCarree()) # PlateCaree = Lat,Lon\n", + "# da = ds[var_to_plot].sel(x=x, y=y, method='nearest').sel(time=slice(time_start,time_end)).load()\n", + "# da.hvplot(x=dim_names_dict['T'], grid=True)" + ] + }, + { + "cell_type": "markdown", + "id": "a8c3ed37-8564-400b-a7fb-25bd5e43d21c", + "metadata": {}, + "source": [ + "## Create Collection Extent" + ] + }, + { + "cell_type": "markdown", + "id": "69f0d837-68a5-4fed-9a14-5d75cfbb0da4", + "metadata": {}, + "source": [ + "### Spatial Extent\n", + "##### WARNING - make sure data type is **float** NOT **numpy.float64**" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d46805e0-8e94-4ebe-aa01-d9a2d7051459", + "metadata": {}, + "outputs": [], + "source": [ + "# pull out lat/lon bbox for data\n", + "# coordinates must be from WGS 84 datum\n", + "# left, bottom, right, top\n", + "\n", + "# Note: try changing around the commented out lines below to get type float ratherthan a numpy float\n", + "#coord_bounds = [ds.lon.data.min().compute().astype(float), ds.lat.data.min().compute().astype(float), ds.lon.data.max().compute().astype(float), ds.lat.data.max().compute().astype(float)]\n", + "#coord_bounds = [ds.lon.data.min().compute().astype(float).tolist(), ds.lat.data.min().compute().astype(float).tolist(), ds.lon.data.max().compute().astype(float).tolist(), ds.lat.data.max().compute().astype(float).tolist()]\n", + "coord_bounds = [ds.lon.data.min().astype(float).item(), ds.lat.data.min().astype(float).item(), ds.lon.data.max().astype(float).item(), ds.lat.data.max().astype(float).item()]\n", + "print(coord_bounds)\n", + "print(f'\\ncoord_bounds data type: {type(coord_bounds[0])}')\n", + "# create a spatial extent object \n", + "spatial_extent = pystac.SpatialExtent(bboxes=[coord_bounds])" + ] + }, + { + "cell_type": "markdown", + "id": "a04c8fca-1d33-43ac-9e2b-62d7be2887f7", + "metadata": {}, + "source": [ + "### Temporal Extent" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "41a84995-867c-4152-8c57-85e3758bbb77", + "metadata": {}, + "outputs": [], + "source": [ + "# pull out first and last timestamps\n", + "temporal_extent_lower = pd.Timestamp(ds[dim_names_dict['T']].data.min())\n", + "temporal_extent_upper = pd.Timestamp(ds[dim_names_dict['T']].data.max())\n", + "print(f'min: {temporal_extent_lower} \\nmax: {temporal_extent_upper}')\n", + "# create a temporal extent object\n", + "temporal_extent = pystac.TemporalExtent(intervals=[[temporal_extent_lower, temporal_extent_upper]])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b1e37c4-5348-46ad-abc9-e005b5d6c02b", + "metadata": {}, + "outputs": [], + "source": [ + "collection_extent = pystac.Extent(spatial=spatial_extent, temporal=temporal_extent)" + ] + }, + { + "cell_type": "markdown", + "id": "cfb71202-03df-45b5-ac2f-0dc2ee1ab780", + "metadata": {}, + "source": [ + "## Create pystac collection" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "7e96811b-95ae-406a-9728-55fc429d4e1f", + "metadata": {}, + "outputs": [], + "source": [ + "if catalog.get_child(collection_id):\n", + " collection = catalog.get_child(collection_id)\n", + " print(\"existing collection opened\")\n", + " collection.extent=collection_extent\n", + " collection.description=collection_description\n", + " collection.license=collection_license\n", + "else:\n", + " collection = pystac.Collection(id=collection_id,\n", + " description=collection_description,\n", + " extent=collection_extent,\n", + " license=collection_license)\n", + " print(\"new collection created\")" + ] + }, + { + "cell_type": "markdown", + "id": "a21c76e8-cd57-4eb5-a33f-7c668a3b3205", + "metadata": {}, + "source": [ + "## Add zarr url asset to collection" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "094832af-d22b-4359-b0f6-cf687acce5cc", + "metadata": {}, + "outputs": [], + "source": [ + "asset_id = \"zarr-s3-osn\"\n", + "asset = pystac.Asset(href=zarr_url,\n", + " description=asset_description,\n", + " media_type=\"application/vnd+zarr\",\n", + " roles=asset_roles,\n", + " extra_fields = xarray_opendataset_kwargs)\n", + "collection.add_asset(asset_id, asset)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0c298d07-f234-4a08-986d-87f4a39e9ae6", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "asset_id2 = \"zarr-s3\"\n", + "asset2 = pystac.Asset(href=zarr_url2,\n", + " description=asset_description2,\n", + " media_type=\"application/vnd+zarr\",\n", + " roles=asset_roles2,\n", + " extra_fields = xarray_opendataset_kwargs2)\n", + "collection.add_asset(asset_id2, asset2)" + ] + }, + { + "cell_type": "markdown", + "id": "f67cd5c9-db33-45c2-bc21-480cd67354f4", + "metadata": {}, + "source": [ + "## Add datacube extension to collection" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "fc00946d-2880-491d-9b3b-3aeeb4414d6c", + "metadata": {}, + "outputs": [], + "source": [ + "# instantiate extention on collection\n", + "dc = DatacubeExtension.ext(collection, add_if_missing=True)" + ] + }, + { + "cell_type": "markdown", + "id": "8bdd77a2-7587-485e-afb7-42af3a822241", + "metadata": {}, + "source": [ + "### Add cube dimensions (required field for extension)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "120a4914-3302-44a5-a282-0308ac84f040", + "metadata": {}, + "outputs": [], + "source": [ + "# list out dataset dimensions\n", + "# When writing data to Zarr, Xarray sets this attribute on all variables based on the variable dimensions. When reading a Zarr group, Xarray looks for this attribute on all arrays,\n", + "# raising an error if it can’t be found.\n", + "dims = list(ds.dims)\n", + "print(dims)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "00a18a29-fb9a-4b56-8009-493122997b16", + "metadata": {}, + "outputs": [], + "source": [ + "# get x, y bounds for extent of those dimensions (required)\n", + "xy_bounds = [ds[dim_names_dict['X']].data.min().astype(float).item(), ds[dim_names_dict['Y']].data.min().astype(float).item(), ds[dim_names_dict['X']].data.max().astype(float).item(), ds[dim_names_dict['Y']].data.max().astype(float).item()]\n", + "print(xy_bounds)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "0f49d6d7-9e30-4144-909b-fa1238e6c77a", + "metadata": {}, + "outputs": [], + "source": [ + "def get_step(ds, dim_name, debug=False, step_ix=0):\n", + " dim_vals = ds[dim_name].values\n", + " diffs = [d2 - d1 for d1, d2 in zip(dim_vals, dim_vals[1:])]\n", + " unique_steps = np.unique(diffs, return_counts=True)\n", + " step_list = unique_steps[0]\n", + " # optional - for invesitgating uneven steps\n", + " if debug:\n", + " print(f'step_list: {step_list}')\n", + " print(f'step_count: {unique_steps[1]}')\n", + " indices = [i for i, x in enumerate(diffs) if x == step_list[step_ix]]\n", + " print(f'index locations of step index {step_ix} in step_list: {indices}')\n", + " # set step - if all steps are the same length\n", + " # datacube spec specifies to use null for irregularly spaced steps\n", + " if len(step_list)==1:\n", + " # make sure time deltas are in np timedelta format\n", + " step_list = [np.array([step], dtype=\"timedelta64[ns]\")[0] for step in step_list]\n", + " step = step_list[0].astype(float).item()\n", + " else:\n", + " step = None\n", + " return(step)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "a20d12bf-a511-4c5e-84d0-77e2ec551518", + "metadata": {}, + "outputs": [], + "source": [ + "def get_long_name(ds, v):\n", + " # try to get long_name attribute from variable\n", + " try:\n", + " long_name = ds[v].attrs['long_name']\n", + " # otherwise, leave empty\n", + " except:\n", + " long_name = None\n", + " return long_name" + ] + }, + { + "cell_type": "markdown", + "id": "e7dc357c-91ec-49ae-83e5-400f791f9792", + "metadata": {}, + "source": [ + "#### user input needed - you will need to look at the crs information and create a cartopy crs object after identifying the projection type:\n", + "reference list of cartopy projections: https://scitools.org.uk/cartopy/docs/latest/reference/projections.html" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ea452f62-5644-49b6-8a4e-7dc4f649fd1a", + "metadata": {}, + "outputs": [], + "source": [ + "# print ot crs information in dataset\n", + "print(crs)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1b1d05ff-8e43-44a7-8343-178b112c4ad6", + "metadata": {}, + "outputs": [], + "source": [ + "# # create the appropriate cartopy projection\n", + "# lcc = ccrs.LambertConformal(central_longitude=crs_info.longitude_of_central_meridian, \n", + "# central_latitude=crs_info.latitude_of_projection_origin,\n", + "# standard_parallels=crs_info.standard_parallel)\n", + "# # the datacube extension can accept reference_system information as a numerical EPSG code, \n", + "# # WKT2 (ISO 19162) string or PROJJSON object.\n", + "# # we will use a projjson, as was done by Microsoft Planetary Computer here:\n", + "# # https://planetarycomputer.microsoft.com/dataset/daymet-annual-na\n", + "# # https://planetarycomputer.microsoft.com/api/stac/v1/collections/daymet-annual-na\n", + "# projjson = json.loads(lcc.to_json())\n", + "\n", + "# alternatively, I think we could do this:\n", + "projjson = crs.to_json()\n", + "print(projjson)" + ] + }, + { + "cell_type": "markdown", + "id": "b15a1295-b67b-44a0-a393-dc5e2ec59c0d", + "metadata": {}, + "source": [ + "#### user review needed - looks at the steps pulled out and make sure they make sense" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "71879ff0-2af4-437e-a4b9-aa5324a938a6", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "time_step = get_step(ds, dim_names_dict['T'])\n", + "print(f'time step: {time_step}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "416df853-a940-489d-9595-ebaf90c78a85", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# debugging for time steps: get all step values and locations\n", + "time_step = get_step(ds, dim_names_dict['T'], debug=True, step_ix=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "2c7c03fd-662f-4f1d-8d2f-d41c4cfb8313", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# debugging for time steps, cont:\n", + "# please choose one of the index locations printed above\n", + "# this will print the time steps adjacent to it\n", + "ix = 3343\n", + "ds.isel(time=slice(ix-1,ix+3)).time" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "ef10ae87-61c6-447f-a832-a60c23c4d4a9", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "x_step = get_step(ds, dim_names_dict['X'])\n", + "print(f'x step: {x_step}')" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "b7af6cd2-b53e-4489-b1d5-529789199947", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "y_step = get_step(ds, dim_names_dict['Y'])\n", + "print(f'y step: {y_step}')" + ] + }, + { + "cell_type": "markdown", + "id": "00a5e041-081d-428d-ac2e-75d16de205e6", + "metadata": {}, + "source": [ + "#### user input needed - you will need to copy all of the dimensions printed below into the dict and fill in the appropriate attributes(type, axis, extent, etc.):\n", + "\n", + "Please see [datacube spec](https://github.com/stac-extensions/datacube?tab=readme-ov-file#dimension-object) for details on required fields.\n", + "\n", + "If you have a dimension like \"bnds\" that is used on variables like time_bnds, lon_bnds, lat_bnds to choose either the lower or upper bound, you can use and [additional dimension object](https://github.com/stac-extensions/datacube?tab=readme-ov-file#additional-dimension-object). We recommend making the type \"count\" as Microsoft Planetary Computer did [here](https://github.com/stac-extensions/datacube/blob/9e74fa706c9bdd971e01739cf18dcc53bdd3dd4f/examples/daymet-hi-annual.json#L76)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "acd45d3c-7845-47e6-9b7d-e35627a7ca9a", + "metadata": {}, + "outputs": [], + "source": [ + "print(dims)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "5a443497-67a9-4dce-a8e9-b08d31a88223", + "metadata": {}, + "outputs": [], + "source": [ + "# create a dictionary of datacube dimensions you would like to assign to this dataset\n", + "# dimension name should come from the dims printed in above cell\n", + "\n", + "# x, y, t dimension info is pulled out automatically using the dim dict we created above\n", + "# all other dims listed in above cell need to be manually written in\n", + "\n", + "# we do not recommend including redundant dimensions (do not include x,y if you have lon,lat)\n", + "# note that the extent of each dimension should be pulled from the dataset\n", + "dims_dict = {dim_names_dict['T']: pystac.extensions.datacube.Dimension({'type': 'temporal', 'description': get_long_name(ds, dim_names_dict['T']), 'extent': [temporal_extent_lower.strftime('%Y-%m-%dT%XZ'), temporal_extent_upper.strftime('%Y-%m-%dT%XZ')], 'step': pd.Timedelta(time_step).isoformat()}),\n", + " dim_names_dict['X']: pystac.extensions.datacube.Dimension({'type': 'spatial', 'axis': 'x', 'description': get_long_name(ds, dim_names_dict['X']), 'extent': [xy_bounds[0], xy_bounds[2]], 'step': x_step, 'reference_system': projjson}),\n", + " dim_names_dict['Y']: pystac.extensions.datacube.Dimension({'type': 'spatial', 'axis': 'y', 'description': get_long_name(ds, dim_names_dict['Y']), 'extent': [xy_bounds[1], xy_bounds[3]], 'step': y_step, 'reference_system': projjson}),\n", + " 'bottom_top_stag': pystac.extensions.datacube.Dimension({'type': 'spatial', 'axis': 'z', 'description': get_long_name(ds, 'bottom_top_stag')}),\n", + " 'bottom_top': pystac.extensions.datacube.Dimension({'type': 'spatial', 'axis': 'z', 'description': get_long_name(ds, 'bottom_top')}),\n", + " 'soil_layers_stag': pystac.extensions.datacube.Dimension({'type': 'spatial', 'axis': 'z', 'description': get_long_name(ds, 'soil_layers_stag')}),\n", + " 'x_stag': pystac.extensions.datacube.Dimension({'type': 'spatial', 'axis': 'x', 'description': get_long_name(ds, 'x_stag')}),\n", + " 'y_stag': pystac.extensions.datacube.Dimension({'type': 'spatial', 'axis': 'y', 'description': get_long_name(ds, 'y_stag')}),\n", + " 'snow_layers_stag': pystac.extensions.datacube.Dimension({'type': 'spatial', 'axis': 'z', 'description': get_long_name(ds, 'snow_layers_stag')}),\n", + " 'snso_layers_stag': pystac.extensions.datacube.Dimension({'type': 'spatial', 'axis': 'z', 'description': get_long_name(ds, 'snso_layers_stag')}),\n", + " }" + ] + }, + { + "cell_type": "markdown", + "id": "0f277883-a3fd-425f-966a-ca2140d0ef2f", + "metadata": {}, + "source": [ + "### Add cube variables (optional field for extension)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "92510876-7853-4d24-8563-c69f9012aeb6", + "metadata": {}, + "outputs": [], + "source": [ + "# define functions to pull out datacube attributes and validate format\n", + "def get_unit(ds, v):\n", + " # check if unit is defined for variable\n", + " try:\n", + " unit = ds[v].attrs['units']\n", + " except:\n", + " unit = None\n", + " # check if unit comes from https://docs.unidata.ucar.edu/udunits/current/#Database\n", + " # datacube extension specifies: The unit of measurement for the data, preferably compliant to UDUNITS-2 units (singular).\n", + " # gdptools expects this format as well\n", + " try:\n", + " cfunits.Units(unit).isvalid\n", + " except:\n", + " print(\"Unit is not valid as a UD unit.\")\n", + " unit = str(input(\"Please enter a valid unit for {v} from here: https://docs.unidata.ucar.edu/udunits/current/#Database\"))\n", + " assert cfunits.Units(unit).isvalid\n", + " return unit\n", + "\n", + "def get_var_type(ds, v):\n", + " if v in ds.coords:\n", + " # type = auxiliary for a variable that contains coordinate data, but isn't a dimension in cube:dimensions.\n", + " # For example, the values of the datacube might be provided in the projected coordinate reference system, \n", + " # but the datacube could have a variable lon with dimensions (y, x), giving the longitude at each point.\n", + " var_type = 'auxiliary'\n", + " # type = data for a variable indicating some measured value, for example \"precipitation\", \"temperature\", etc.\n", + " else:\n", + " var_type = 'data'\n", + " return var_type" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e9272931-fc0b-4f2a-9546-283033e9cde8", + "metadata": {}, + "outputs": [], + "source": [ + "# drop metpy_crs coordinate we have added\n", + "if 'metpy_crs' in ds.coords:\n", + " ds = ds.drop_vars('metpy_crs')\n", + "\n", + "# pull list of vars from dataset\n", + "vars = list(ds.variables)\n", + "\n", + "# spec says that the keys of cube:dimensions and cube:variables should be unique together; a key like lat should not be both a dimension and a variable.\n", + "# we will drop all values in dims from vars\n", + "vars = [v for v in vars if v not in dims]\n", + "\n", + "# Microsoft Planetary Computer includes coordinates and crs as variables here:\n", + "# https://planetarycomputer.microsoft.com/dataset/daymet-annual-na\n", + "# https://planetarycomputer.microsoft.com/api/stac/v1/collections/daymet-annual-na\n", + "# we will keep those in the var list\n", + "\n", + "# create dictionary of dataset variables and associated dimensions\n", + "vars_dict={}\n", + "for v in vars:\n", + " unit = get_unit(ds, v)\n", + " var_type = get_var_type(ds, v)\n", + " long_name = get_long_name(ds, v)\n", + " vars_dict[v] = pystac.extensions.datacube.Variable({'dimensions':list(ds[v].dims), 'type': var_type, 'description': long_name, 'unit': unit})" + ] + }, + { + "cell_type": "markdown", + "id": "11ad5352-884c-4472-8864-4570a96f66e5", + "metadata": {}, + "source": [ + "### Finalize extension" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "10141fd4-91d6-491d-878b-02653720891d", + "metadata": {}, + "outputs": [], + "source": [ + "# add dimesions and variables to collection extension\n", + "dc.apply(dimensions=dims_dict, variables=vars_dict)" + ] + }, + { + "cell_type": "markdown", + "id": "615ca168-75fb-4135-9941-0ef5fe4fd1cb", + "metadata": {}, + "source": [ + "## Add STAC Collection to Catalog and Save" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "e2120a55-3d04-4122-a93f-29afcdb8cb1b", + "metadata": { + "tags": [] + }, + "outputs": [], + "source": [ + "# # helper to find items of wrong type\n", + "# d = collection.to_dict()\n", + "# def find_paths(nested_dict, prepath=()):\n", + "# for k, v in nested_dict.items():\n", + "# try:\n", + "# path = prepath + (k,)\n", + "# if type(v) is np.float64: # found value\n", + "# yield path\n", + "# elif hasattr(v, 'items'): # v is a dict\n", + "# yield from find_paths(v, path) \n", + "# except:\n", + "# print(prepath)\n", + "\n", + "# print(*find_paths(d))" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "4b75791b-6b2d-40be-b7c6-330a60888fb5", + "metadata": {}, + "outputs": [], + "source": [ + "if catalog.get_child(collection_id):\n", + " collection.normalize_and_save(root_href=os.path.join(catalog_path, collection_id), catalog_type=pystac.CatalogType.SELF_CONTAINED)\n", + "else:\n", + " catalog.add_child(collection)\n", + " catalog.normalize_and_save(root_href=catalog_path, catalog_type=pystac.CatalogType.SELF_CONTAINED)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d6f676b5-e892-4bfb-8d73-2828addd838c", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "global-global-pangeo", + "language": "python", + "name": "conda-env-global-global-pangeo-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.6" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/workflows/examples/create_collection_from_zarr_conus404-daily.ipynb b/workflows/examples/create_collection_from_zarr_conus404-daily.ipynb index 897d0c7cd7a6f3cd91807a325cf4c72d3cf2ebe7..b79125ad3b18583a2be0baad0c1a7120511b6cc1 100644 --- a/workflows/examples/create_collection_from_zarr_conus404-daily.ipynb +++ b/workflows/examples/create_collection_from_zarr_conus404-daily.ipynb @@ -463,16 +463,23 @@ "metadata": {}, "outputs": [], "source": [ - "def get_step(ds, dim_name):\n", + "def get_step(ds, dim_name, debug=False, step_ix=0):\n", " dim_vals = ds[dim_name].values\n", " diffs = [d2 - d1 for d1, d2 in zip(dim_vals, dim_vals[1:])]\n", - " unique_steps = np.unique(diffs)\n", + " unique_steps = np.unique(diffs, return_counts=True)\n", + " step_list = unique_steps[0]\n", + " # optional - for invesitgating uneven steps\n", + " if debug:\n", + " print(f'step_list: {step_list}')\n", + " print(f'step_count: {unique_steps[1]}')\n", + " indices = [i for i, x in enumerate(diffs) if x == step_list[step_ix]]\n", + " print(f'index locations of step index {step_ix} in step_list: {indices}')\n", " # set step - if all steps are the same length\n", " # datacube spec specifies to use null for irregularly spaced steps\n", - " if len(unique_steps)==1:\n", + " if len(step_list)==1:\n", " # make sure time deltas are in np timedelta format\n", - " unique_steps = [np.array([step], dtype=\"timedelta64[ns]\")[0] for step in unique_steps]\n", - " step = unique_steps[0].astype(float).item()\n", + " step_list = [np.array([step], dtype=\"timedelta64[ns]\")[0] for step in step_list]\n", + " step = step_list[0].astype(float).item()\n", " else:\n", " step = None\n", " return(step)" @@ -557,6 +564,31 @@ "print(f'time step: {time_step}')" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "64be65b2-de20-447a-a9c2-bd8eca3e440e", + "metadata": {}, + "outputs": [], + "source": [ + "# # debugging for time steps: get all step values and locations\n", + "# time_step = get_step(ds, dim_names_dict['T'], debug=True, step_ix=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "bc8dff39-2a2e-44a0-9b30-987107c2d1e2", + "metadata": {}, + "outputs": [], + "source": [ + "# # debugging for time steps, cont:\n", + "# # please choose one of the index locations printed above\n", + "# # this will print the time steps adjacent to it\n", + "# ix = 3343\n", + "# ds.isel(time=slice(ix-1,ix+3)).time" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/workflows/examples/create_item_from_zarr_conus404-daily.ipynb b/workflows/examples/create_item_from_zarr_conus404-daily.ipynb index 5bfc54b84764ace0fa0bba906f843dbc437dacc2..3713cca819e21a2d1dbe64293f98a78ae40980e0 100644 --- a/workflows/examples/create_item_from_zarr_conus404-daily.ipynb +++ b/workflows/examples/create_item_from_zarr_conus404-daily.ipynb @@ -473,16 +473,23 @@ "metadata": {}, "outputs": [], "source": [ - "def get_step(ds, dim_name):\n", + "def get_step(ds, dim_name, debug=False, step_ix=0):\n", " dim_vals = ds[dim_name].values\n", " diffs = [d2 - d1 for d1, d2 in zip(dim_vals, dim_vals[1:])]\n", - " unique_steps = np.unique(diffs)\n", + " unique_steps = np.unique(diffs, return_counts=True)\n", + " step_list = unique_steps[0]\n", + " # optional - for invesitgating uneven steps\n", + " if debug:\n", + " print(f'step_list: {step_list}')\n", + " print(f'step_count: {unique_steps[1]}')\n", + " indices = [i for i, x in enumerate(diffs) if x == step_list[step_ix]]\n", + " print(f'index locations of step index {step_ix} in step_list: {indices}')\n", " # set step - if all steps are the same length\n", " # datacube spec specifies to use null for irregularly spaced steps\n", - " if len(unique_steps)==1:\n", + " if len(step_list)==1:\n", " # make sure time deltas are in np timedelta format\n", - " unique_steps = [np.array([step], dtype=\"timedelta64[ns]\")[0] for step in unique_steps]\n", - " step = unique_steps[0].astype(float).item()\n", + " step_list = [np.array([step], dtype=\"timedelta64[ns]\")[0] for step in step_list]\n", + " step = step_list[0].astype(float).item()\n", " else:\n", " step = None\n", " return(step)" @@ -567,6 +574,31 @@ "print(f'time step: {time_step}')" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "72986296-83de-4029-bd54-3c585341c38e", + "metadata": {}, + "outputs": [], + "source": [ + "# # debugging for time steps: get all step values and locations\n", + "# time_step = get_step(ds, dim_names_dict['T'], debug=True, step_ix=1)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "79d747a4-0f9c-4afd-aaea-84483a927904", + "metadata": {}, + "outputs": [], + "source": [ + "# # debugging for time steps, cont:\n", + "# # please choose one of the index locations printed above\n", + "# # this will print the time steps adjacent to it\n", + "# ix = 3343\n", + "# ds.isel(time=slice(ix-1,ix+3)).time" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/workflows/examples/read_daymet_from_stac.ipynb b/workflows/examples/read_daymet_from_stac.ipynb new file mode 100644 index 0000000000000000000000000000000000000000..407fdace08e24c1e4cc2f5f1f14a4c2b5a012ff8 --- /dev/null +++ b/workflows/examples/read_daymet_from_stac.ipynb @@ -0,0 +1,2144 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "9157860a-c54e-4efc-b30a-9af4a44eb2bc", + "metadata": {}, + "outputs": [], + "source": [ + "import cartopy.crs as ccrs\n", + "import fsspec\n", + "import matplotlib.pyplot as plt\n", + "import pystac\n", + "import xarray as xr\n", + "import warnings\n", + "from dask_gateway import GatewayCluster\n", + "\n", + "\n", + "warnings.simplefilter(\"ignore\", RuntimeWarning)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "c6275699-06aa-41d2-94be-bc54f7f8f8e8", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #E1E1E1;\n", + " border: 3px solid #9D9D9D;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div>\n", + " <details style=\"margin-left: 48px;\">\n", + " <summary style=\"margin-bottom: 20px;\">\n", + " <h3 style=\"margin-bottom: 0px; display: inline;\">\n", + " Collection: daymet-daily-hi\n", + " </h3>\n", + " </summary>\n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\">ID: daymet-daily-hi </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Title:</strong> Daymet Daily Hawaii </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Description:</strong> Gridded estimates of daily weather parameters. [Daymet](https://daymet.ornl.gov) Version 4 variables include the following parameters: minimum temperature, maximum temperature, precipitation, shortwave radiation, vapor pressure, snow water equivalent, and day length.\n", + "\n", + "[Daymet](https://daymet.ornl.gov/) provides measurements of near-surface meteorological conditions; the main purpose is to provide data estimates where no instrumentation exists. The dataset covers the period from January 1, 1980 to the present. Each year is processed individually at the close of a calendar year. Data are in a Lambert conformal conic projection for North America and are distributed in Zarr and NetCDF formats, compliant with the [Climate and Forecast (CF) metadata conventions (version 1.6)](http://cfconventions.org/).\n", + "\n", + "Use the DOI at [https://doi.org/10.3334/ORNLDAAC/1840](https://doi.org/10.3334/ORNLDAAC/1840) to cite your usage of the data.\n", + "\n", + "This dataset provides coverage for Hawaii; North America and Puerto Rico are provided in [separate datasets](https://planetarycomputer.microsoft.com/dataset/group/daymet#daily).\n", + "\n", + " </td></tr>\n", + " \n", + " \n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Providers:</strong>\n", + " <ul>\n", + " \n", + " <li>\n", + "\n", + "<div>\n", + " \n", + " <a href=\"https://planetarycomputer.microsoft.com\"> Microsoft </a>\n", + " \n", + " (<i>host, processor</i>)\n", + " \n", + "</div>\n", + "</li>\n", + " \n", + " <li>\n", + "\n", + "<div>\n", + " \n", + " <a href=\"https://doi.org/10.3334/ORNLDAAC/1840\"> ORNL DAAC </a>\n", + " \n", + " (<i>producer</i>)\n", + " \n", + "</div>\n", + "</li>\n", + " \n", + " </ul>\n", + " </td></tr>\n", + " \n", + "\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>type:</strong> Collection </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>title:</strong> Daymet Daily Hawaii </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>assets:</strong> {'thumbnail': {'href': 'https://ai4edatasetspublicassets.blob.core.windows.net/assets/pc_thumbnails/daymet-daily-hi.png', 'type': 'image/png', 'roles': ['thumbnail'], 'title': 'Daymet daily Hawaii map thumbnail'}, 'zarr-abfs': {'href': 'abfs://daymet-zarr/daily/hi.zarr', 'type': 'application/vnd+zarr', 'roles': ['data', 'zarr', 'abfs'], 'title': 'Daily Hawaii Daymet Azure Blob File System Zarr root', 'description': 'Azure Blob File System of the daily Hawaii Daymet Zarr Group on Azure Blob Storage for use with adlfs.', 'xarray:open_kwargs': {'consolidated': True}, 'xarray:storage_options': {'account_name': 'daymeteuwest'}}, 'zarr-https': {'href': 'https://daymeteuwest.blob.core.windows.net/daymet-zarr/daily/hi.zarr', 'type': 'application/vnd+zarr', 'roles': ['data', 'zarr', 'https'], 'title': 'Daily Hawaii Daymet HTTPS Zarr root', 'description': 'HTTPS URI of the daily Hawaii Daymet Zarr Group on Azure Blob Storage.', 'xarray:open_kwargs': {'consolidated': True}}} </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>sci:doi:</strong> 10.3334/ORNLDAAC/1840 </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>keywords:</strong> ['Daymet', 'Hawaii', 'Temperature', 'Precipitation', 'Vapor Pressure', 'Weather'] </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>providers:</strong> [{'url': 'https://planetarycomputer.microsoft.com', 'name': 'Microsoft', 'roles': ['host', 'processor']}, {'url': 'https://doi.org/10.3334/ORNLDAAC/1840', 'name': 'ORNL DAAC', 'roles': ['producer']}] </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>sci:citation:</strong> Thornton, M.M., R. Shrestha, P.E. Thornton, S. Kao, Y. Wei, and B.E. Wilson. 2021. Daymet Version 4 Monthly Latency: Daily Surface Weather Data. ORNL DAAC, Oak Ridge, Tennessee, USA. https://doi.org/10.3334/ORNLDAAC/1904 </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>msft:group_id:</strong> daymet </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>cube:variables:</strong> {'vp': {'type': 'data', 'unit': 'Pa', 'attrs': {'units': 'Pa', 'long_name': 'daily average vapor pressure', 'cell_methods': 'area: mean time: mean', 'grid_mapping': 'lambert_conformal_conic'}, 'shape': [14965, 584, 284], 'chunks': [365, 584, 284], 'dimensions': ['time', 'y', 'x'], 'description': 'daily average vapor pressure'}, 'lat': {'type': 'auxiliary', 'unit': 'degrees_north', 'attrs': {'units': 'degrees_north', 'long_name': 'latitude coordinate', 'standard_name': 'latitude'}, 'shape': [584, 284], 'chunks': [584, 284], 'dimensions': ['y', 'x'], 'description': 'latitude coordinate'}, 'lon': {'type': 'auxiliary', 'unit': 'degrees_east', 'attrs': {'units': 'degrees_east', 'long_name': 'longitude coordinate', 'standard_name': 'longitude'}, 'shape': [584, 284], 'chunks': [584, 284], 'dimensions': ['y', 'x'], 'description': 'longitude coordinate'}, 'swe': {'type': 'data', 'unit': 'kg/m2', 'attrs': {'units': 'kg/m2', 'long_name': 'snow water equivalent', 'cell_methods': 'area: mean time: mean', 'grid_mapping': 'lambert_conformal_conic'}, 'shape': [14965, 584, 284], 'chunks': [365, 584, 284], 'dimensions': ['time', 'y', 'x'], 'description': 'snow water equivalent'}, 'dayl': {'type': 'data', 'unit': 's', 'attrs': {'units': 's', 'long_name': 'daylength', 'cell_methods': 'area: mean', 'grid_mapping': 'lambert_conformal_conic'}, 'shape': [14965, 584, 284], 'chunks': [365, 584, 284], 'dimensions': ['time', 'y', 'x'], 'description': 'daylength'}, 'prcp': {'type': 'data', 'unit': 'mm/day', 'attrs': {'units': 'mm/day', 'long_name': 'daily total precipitation', 'cell_methods': 'area: mean time: sum', 'grid_mapping': 'lambert_conformal_conic'}, 'shape': [14965, 584, 284], 'chunks': [365, 584, 284], 'dimensions': ['time', 'y', 'x'], 'description': 'daily total precipitation'}, 'srad': {'type': 'data', 'unit': 'W/m2', 'attrs': {'units': 'W/m2', 'long_name': 'daylight average incident shortwave radiation', 'cell_methods': 'area: mean time: mean', 'grid_mapping': 'lambert_conformal_conic'}, 'shape': [14965, 584, 284], 'chunks': [365, 584, 284], 'dimensions': ['time', 'y', 'x'], 'description': 'daylight average incident shortwave radiation'}, 'tmax': {'type': 'data', 'unit': 'degrees C', 'attrs': {'units': 'degrees C', 'long_name': 'daily maximum temperature', 'cell_methods': 'area: mean time: maximum', 'grid_mapping': 'lambert_conformal_conic'}, 'shape': [14965, 584, 284], 'chunks': [365, 584, 284], 'dimensions': ['time', 'y', 'x'], 'description': 'daily maximum temperature'}, 'tmin': {'type': 'data', 'unit': 'degrees C', 'attrs': {'units': 'degrees C', 'long_name': 'daily minimum temperature', 'cell_methods': 'area: mean time: minimum', 'grid_mapping': 'lambert_conformal_conic'}, 'shape': [14965, 584, 284], 'chunks': [365, 584, 284], 'dimensions': ['time', 'y', 'x'], 'description': 'daily minimum temperature'}, 'yearday': {'type': 'data', 'attrs': {'long_name': 'day of year (DOY) starting with day 1 on January 1st'}, 'shape': [14965], 'chunks': [365], 'dimensions': ['time'], 'description': 'day of year (DOY) starting with day 1 on January 1st'}, 'time_bnds': {'type': 'data', 'attrs': {}, 'shape': [14965, 2], 'chunks': [365, 2], 'dimensions': ['time', 'nv']}, 'lambert_conformal_conic': {'type': 'data', 'attrs': {'false_easting': 0.0, 'false_northing': 0.0, 'semi_major_axis': 6378137.0, 'grid_mapping_name': 'lambert_conformal_conic', 'standard_parallel': [25.0, 60.0], 'inverse_flattening': 298.257223563, 'latitude_of_projection_origin': 42.5, 'longitude_of_central_meridian': -100.0}, 'shape': [], 'dimensions': []}} </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>msft:container:</strong> daymet-zarr </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>cube:dimensions:</strong> {'x': {'axis': 'x', 'step': 1000.0, 'type': 'spatial', 'extent': [-5802250.0, -5519250.0], 'description': 'x coordinate of projection', 'reference_system': {'name': 'undefined', 'type': 'ProjectedCRS', '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json', 'base_crs': {'name': 'undefined', 'datum': {'name': 'undefined', 'type': 'GeodeticReferenceFrame', 'ellipsoid': {'name': 'undefined', 'semi_major_axis': 6378137, 'inverse_flattening': 298.257223563}}, 'coordinate_system': {'axis': [{'name': 'Longitude', 'unit': 'degree', 'direction': 'east', 'abbreviation': 'lon'}, {'name': 'Latitude', 'unit': 'degree', 'direction': 'north', 'abbreviation': 'lat'}], 'subtype': 'ellipsoidal'}}, 'conversion': {'name': 'unknown', 'method': {'id': {'code': 9802, 'authority': 'EPSG'}, 'name': 'Lambert Conic Conformal (2SP)'}, 'parameters': [{'id': {'code': 8823, 'authority': 'EPSG'}, 'name': 'Latitude of 1st standard parallel', 'unit': 'degree', 'value': 25}, {'id': {'code': 8824, 'authority': 'EPSG'}, 'name': 'Latitude of 2nd standard parallel', 'unit': 'degree', 'value': 60}, {'id': {'code': 8821, 'authority': 'EPSG'}, 'name': 'Latitude of false origin', 'unit': 'degree', 'value': 42.5}, {'id': {'code': 8822, 'authority': 'EPSG'}, 'name': 'Longitude of false origin', 'unit': 'degree', 'value': -100}, {'id': {'code': 8826, 'authority': 'EPSG'}, 'name': 'Easting at false origin', 'unit': 'metre', 'value': 0}, {'id': {'code': 8827, 'authority': 'EPSG'}, 'name': 'Northing at false origin', 'unit': 'metre', 'value': 0}]}, 'coordinate_system': {'axis': [{'name': 'Easting', 'unit': 'metre', 'direction': 'east', 'abbreviation': 'E'}, {'name': 'Northing', 'unit': 'metre', 'direction': 'north', 'abbreviation': 'N'}], 'subtype': 'Cartesian'}}}, 'y': {'axis': 'y', 'step': -1000.0, 'type': 'spatial', 'extent': [-622000.0, -39000.0], 'description': 'y coordinate of projection', 'reference_system': {'name': 'undefined', 'type': 'ProjectedCRS', '$schema': 'https://proj.org/schemas/v0.4/projjson.schema.json', 'base_crs': {'name': 'undefined', 'datum': {'name': 'undefined', 'type': 'GeodeticReferenceFrame', 'ellipsoid': {'name': 'undefined', 'semi_major_axis': 6378137, 'inverse_flattening': 298.257223563}}, 'coordinate_system': {'axis': [{'name': 'Longitude', 'unit': 'degree', 'direction': 'east', 'abbreviation': 'lon'}, {'name': 'Latitude', 'unit': 'degree', 'direction': 'north', 'abbreviation': 'lat'}], 'subtype': 'ellipsoidal'}}, 'conversion': {'name': 'unknown', 'method': {'id': {'code': 9802, 'authority': 'EPSG'}, 'name': 'Lambert Conic Conformal (2SP)'}, 'parameters': [{'id': {'code': 8823, 'authority': 'EPSG'}, 'name': 'Latitude of 1st standard parallel', 'unit': 'degree', 'value': 25}, {'id': {'code': 8824, 'authority': 'EPSG'}, 'name': 'Latitude of 2nd standard parallel', 'unit': 'degree', 'value': 60}, {'id': {'code': 8821, 'authority': 'EPSG'}, 'name': 'Latitude of false origin', 'unit': 'degree', 'value': 42.5}, {'id': {'code': 8822, 'authority': 'EPSG'}, 'name': 'Longitude of false origin', 'unit': 'degree', 'value': -100}, {'id': {'code': 8826, 'authority': 'EPSG'}, 'name': 'Easting at false origin', 'unit': 'metre', 'value': 0}, {'id': {'code': 8827, 'authority': 'EPSG'}, 'name': 'Northing at false origin', 'unit': 'metre', 'value': 0}]}, 'coordinate_system': {'axis': [{'name': 'Easting', 'unit': 'metre', 'direction': 'east', 'abbreviation': 'E'}, {'name': 'Northing', 'unit': 'metre', 'direction': 'north', 'abbreviation': 'N'}], 'subtype': 'Cartesian'}}}, 'nv': {'type': 'count', 'values': [0, 1], 'description': \"Size of the 'time_bnds' variable.\"}, 'time': {'type': 'temporal', 'extent': ['1980-01-01T12:00:00Z', '2020-12-30T12:00:00Z'], 'description': '24-hour day based on local time'}} </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>msft:group_keys:</strong> ['daily', 'hawaii'] </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>stac_extensions:</strong> ['https://stac-extensions.github.io/scientific/v1.0.0/schema.json', 'https://stac-extensions.github.io/datacube/v2.0.0/schema.json'] </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>msft:storage_account:</strong> daymeteuwest </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>msft:short_description:</strong> Daily surface weather data on a 1-km grid for Hawaii </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>msft:region:</strong> westeurope </td></tr>\n", + " \n", + " \n", + " </table>\n", + " \n", + " <details>\n", + " <summary style=\"margin-bottom: 10px; margin-top: 10px;\">\n", + " <h4 style=\"margin-bottom: 0px; display: inline;\">STAC Extensions</h4>\n", + " </summary>\n", + " <table style=\"width: 100%; text-align: left;\">\n", + " \n", + " <tr><td style=\"text-align: left;\"><a href=\"https://stac-extensions.github.io/scientific/v1.0.0/schema.json\">https://stac-extensions.github.io/scientific/v1.0.0/schema.json</a></td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><a href=\"https://stac-extensions.github.io/datacube/v2.0.0/schema.json\">https://stac-extensions.github.io/datacube/v2.0.0/schema.json</a></td></tr>\n", + " \n", + " </table>\n", + " </details>\n", + " \n", + " \n", + " \n", + " \n", + " <details>\n", + " <summary style=\"margin-bottom: 10px; margin-top: 10px\">\n", + " <h4 style=\"margin-bottom: 0px; display: inline;\">Links</h4>\n", + " </summary>\n", + " \n", + " \n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #FFF7E5;\n", + " border: 3px solid #FF6132;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div style=\"margin-left: 48px;\">\n", + " <h4 style=\"margin-bottom: 0px;\">Link: </h4>\n", + " \n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\"><strong>Rel:</strong> self </td></tr>\n", + " <tr><td style=\"text-align: left;\"><strong>Target:</strong> https://planetarycomputer.microsoft.com/api/stac/v1/collections/daymet-daily-hi </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Media Type:</strong> application/json </td></tr>\n", + " \n", + " \n", + " </table>\n", + " \n", + " </div>\n", + "</div>\n", + " \n", + " \n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #FFF7E5;\n", + " border: 3px solid #FF6132;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div style=\"margin-left: 48px;\">\n", + " <h4 style=\"margin-bottom: 0px;\">Link: </h4>\n", + " \n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\"><strong>Rel:</strong> items </td></tr>\n", + " <tr><td style=\"text-align: left;\"><strong>Target:</strong> https://planetarycomputer.microsoft.com/api/stac/v1/collections/daymet-daily-hi/items </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Media Type:</strong> application/geo+json </td></tr>\n", + " \n", + " \n", + " </table>\n", + " \n", + " </div>\n", + "</div>\n", + " \n", + " \n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #FFF7E5;\n", + " border: 3px solid #FF6132;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div style=\"margin-left: 48px;\">\n", + " <h4 style=\"margin-bottom: 0px;\">Link: </h4>\n", + " \n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\"><strong>Rel:</strong> parent </td></tr>\n", + " <tr><td style=\"text-align: left;\"><strong>Target:</strong> https://planetarycomputer.microsoft.com/api/stac/v1/ </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Media Type:</strong> application/json </td></tr>\n", + " \n", + " \n", + " </table>\n", + " \n", + " </div>\n", + "</div>\n", + " \n", + " \n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #FFF7E5;\n", + " border: 3px solid #FF6132;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div style=\"margin-left: 48px;\">\n", + " <h4 style=\"margin-bottom: 0px;\">Link: </h4>\n", + " \n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\"><strong>Rel:</strong> root </td></tr>\n", + " <tr><td style=\"text-align: left;\"><strong>Target:</strong> https://planetarycomputer.microsoft.com/api/stac/v1/ </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Media Type:</strong> application/json </td></tr>\n", + " \n", + " \n", + " </table>\n", + " \n", + " </div>\n", + "</div>\n", + " \n", + " \n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #FFF7E5;\n", + " border: 3px solid #FF6132;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div style=\"margin-left: 48px;\">\n", + " <h4 style=\"margin-bottom: 0px;\">Link: </h4>\n", + " \n", + " <p style=\"color: #9D9D9D; margin-bottom: 0px;\">EOSDIS Data Use Policy</p>\n", + " \n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\"><strong>Rel:</strong> license </td></tr>\n", + " <tr><td style=\"text-align: left;\"><strong>Target:</strong> https://science.nasa.gov/earth-science/earth-science-data/data-information-policy </td></tr>\n", + " \n", + " \n", + " </table>\n", + " \n", + " </div>\n", + "</div>\n", + " \n", + " \n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #FFF7E5;\n", + " border: 3px solid #FF6132;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div style=\"margin-left: 48px;\">\n", + " <h4 style=\"margin-bottom: 0px;\">Link: </h4>\n", + " \n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\"><strong>Rel:</strong> cite-as </td></tr>\n", + " <tr><td style=\"text-align: left;\"><strong>Target:</strong> https://doi.org/10.3334/ORNLDAAC/1840 </td></tr>\n", + " \n", + " \n", + " </table>\n", + " \n", + " </div>\n", + "</div>\n", + " \n", + " \n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #FFF7E5;\n", + " border: 3px solid #FF6132;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div style=\"margin-left: 48px;\">\n", + " <h4 style=\"margin-bottom: 0px;\">Link: </h4>\n", + " \n", + " <p style=\"color: #9D9D9D; margin-bottom: 0px;\">Human readable dataset overview and reference</p>\n", + " \n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\"><strong>Rel:</strong> describedby </td></tr>\n", + " <tr><td style=\"text-align: left;\"><strong>Target:</strong> https://planetarycomputer.microsoft.com/dataset/daymet-daily-hi </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Media Type:</strong> text/html </td></tr>\n", + " \n", + " \n", + " </table>\n", + " \n", + " </div>\n", + "</div>\n", + " \n", + " </details>\n", + " \n", + " \n", + " \n", + " <details>\n", + " <summary style=\"margin-bottom: 10px; margin-top: 10px;\">\n", + " <h4 style=\"margin-bottom: 0px; display: inline;\">Assets</h4>\n", + " </summary>\n", + " \n", + " \n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #FED7E5;\n", + " border: 3px solid #FA4C8C;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div>\n", + " <details style=\"margin-left: 48px;\">\n", + " <summary style=\"margin-bottom: 20px;\">\n", + " <h3 style=\"margin-bottom: 0px; display: inline;\">Asset: Daymet daily Hawaii map thumbnail</h3>\n", + " </summary>\n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\"><strong>href</strong>: https://ai4edatasetspublicassets.blob.core.windows.net/assets/pc_thumbnails/daymet-daily-hi.png </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Title:</strong> Daymet daily Hawaii map thumbnail </td></tr>\n", + " \n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Media type:</strong> image/png </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Roles:</strong> ['thumbnail'] </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Owner:</strong> </td></tr>\n", + " \n", + " \n", + " </table>\n", + " </details>\n", + " </div>\n", + "</div>\n", + " \n", + " \n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #FED7E5;\n", + " border: 3px solid #FA4C8C;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div>\n", + " <details style=\"margin-left: 48px;\">\n", + " <summary style=\"margin-bottom: 20px;\">\n", + " <h3 style=\"margin-bottom: 0px; display: inline;\">Asset: Daily Hawaii Daymet Azure Blob File System Zarr root</h3>\n", + " </summary>\n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\"><strong>href</strong>: abfs://daymet-zarr/daily/hi.zarr </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Title:</strong> Daily Hawaii Daymet Azure Blob File System Zarr root </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Description:</strong> Azure Blob File System of the daily Hawaii Daymet Zarr Group on Azure Blob Storage for use with adlfs. </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Media type:</strong> application/vnd+zarr </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Roles:</strong> ['data', 'zarr', 'abfs'] </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Owner:</strong> </td></tr>\n", + " \n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>xarray:open_kwargs:</strong> {'consolidated': True} </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>xarray:storage_options:</strong> {'account_name': 'daymeteuwest'} </td></tr>\n", + " \n", + " \n", + " </table>\n", + " </details>\n", + " </div>\n", + "</div>\n", + " \n", + " \n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #FED7E5;\n", + " border: 3px solid #FA4C8C;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div>\n", + " <details style=\"margin-left: 48px;\">\n", + " <summary style=\"margin-bottom: 20px;\">\n", + " <h3 style=\"margin-bottom: 0px; display: inline;\">Asset: Daily Hawaii Daymet HTTPS Zarr root</h3>\n", + " </summary>\n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\"><strong>href</strong>: https://daymeteuwest.blob.core.windows.net/daymet-zarr/daily/hi.zarr </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Title:</strong> Daily Hawaii Daymet HTTPS Zarr root </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Description:</strong> HTTPS URI of the daily Hawaii Daymet Zarr Group on Azure Blob Storage. </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Media type:</strong> application/vnd+zarr </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Roles:</strong> ['data', 'zarr', 'https'] </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Owner:</strong> </td></tr>\n", + " \n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>xarray:open_kwargs:</strong> {'consolidated': True} </td></tr>\n", + " \n", + " \n", + " </table>\n", + " </details>\n", + " </div>\n", + "</div>\n", + " \n", + " </details>\n", + " \n", + "\n", + " </details>\n", + " </div>\n", + "</div>" + ], + "text/plain": [ + "<Collection id=daymet-daily-hi>" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "url = \"https://planetarycomputer.microsoft.com/api/stac/v1/collections/daymet-daily-hi\"\n", + "collection = pystac.read_file(url)\n", + "collection" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "d6ce4286-979e-48b1-9cfe-6ae7aef1e58f", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "\n", + "\n", + "<div class=\"jp-RenderedHTMLCommon jp-RenderedHTML jp-mod-trusted jp-OutputArea-output\">\n", + " <div style=\"\n", + " width: 24px;\n", + " height: 24px;\n", + " background-color: #FED7E5;\n", + " border: 3px solid #FA4C8C;\n", + " border-radius: 5px;\n", + " position: absolute;\">\n", + " </div>\n", + " <div>\n", + " <details style=\"margin-left: 48px;\">\n", + " <summary style=\"margin-bottom: 20px;\">\n", + " <h3 style=\"margin-bottom: 0px; display: inline;\">Asset: Daily Hawaii Daymet HTTPS Zarr root</h3>\n", + " </summary>\n", + " <table style=\"width: 100%; text-align: left;\">\n", + " <tr><td style=\"text-align: left;\"><strong>href</strong>: https://daymeteuwest.blob.core.windows.net/daymet-zarr/daily/hi.zarr </td></tr>\n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Title:</strong> Daily Hawaii Daymet HTTPS Zarr root </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Description:</strong> HTTPS URI of the daily Hawaii Daymet Zarr Group on Azure Blob Storage. </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Media type:</strong> application/vnd+zarr </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Roles:</strong> ['data', 'zarr', 'https'] </td></tr>\n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>Owner:</strong> </td></tr>\n", + " \n", + " \n", + " \n", + " <tr><td style=\"text-align: left;\"><strong>xarray:open_kwargs:</strong> {'consolidated': True} </td></tr>\n", + " \n", + " \n", + " </table>\n", + " </details>\n", + " </div>\n", + "</div>" + ], + "text/plain": [ + "<Asset href=https://daymeteuwest.blob.core.windows.net/daymet-zarr/daily/hi.zarr>" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "asset = collection.assets[\"zarr-https\"]\n", + "asset" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "c443d3b8-490a-45d9-99fd-9e4a0a2d1247", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n", + "<defs>\n", + "<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n", + "<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n", + "<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", + "<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n", + "</symbol>\n", + "<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n", + "<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n", + "<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", + "<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", + "<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n", + "</symbol>\n", + "</defs>\n", + "</svg>\n", + "<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n", + " *\n", + " */\n", + "\n", + ":root {\n", + " --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n", + " --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n", + " --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n", + " --xr-border-color: var(--jp-border-color2, #e0e0e0);\n", + " --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n", + " --xr-background-color: var(--jp-layout-color0, white);\n", + " --xr-background-color-row-even: var(--jp-layout-color1, white);\n", + " --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n", + "}\n", + "\n", + "html[theme=dark],\n", + "body[data-theme=dark],\n", + "body.vscode-dark {\n", + " --xr-font-color0: rgba(255, 255, 255, 1);\n", + " --xr-font-color2: rgba(255, 255, 255, 0.54);\n", + " --xr-font-color3: rgba(255, 255, 255, 0.38);\n", + " --xr-border-color: #1F1F1F;\n", + " --xr-disabled-color: #515151;\n", + " --xr-background-color: #111111;\n", + " --xr-background-color-row-even: #111111;\n", + " --xr-background-color-row-odd: #313131;\n", + "}\n", + "\n", + ".xr-wrap {\n", + " display: block !important;\n", + " min-width: 300px;\n", + " max-width: 700px;\n", + "}\n", + "\n", + ".xr-text-repr-fallback {\n", + " /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n", + " display: none;\n", + "}\n", + "\n", + ".xr-header {\n", + " padding-top: 6px;\n", + " padding-bottom: 6px;\n", + " margin-bottom: 4px;\n", + " border-bottom: solid 1px var(--xr-border-color);\n", + "}\n", + "\n", + ".xr-header > div,\n", + ".xr-header > ul {\n", + " display: inline;\n", + " margin-top: 0;\n", + " margin-bottom: 0;\n", + "}\n", + "\n", + ".xr-obj-type,\n", + ".xr-array-name {\n", + " margin-left: 2px;\n", + " margin-right: 10px;\n", + "}\n", + "\n", + ".xr-obj-type {\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-sections {\n", + " padding-left: 0 !important;\n", + " display: grid;\n", + " grid-template-columns: 150px auto auto 1fr 20px 20px;\n", + "}\n", + "\n", + ".xr-section-item {\n", + " display: contents;\n", + "}\n", + "\n", + ".xr-section-item input {\n", + " display: none;\n", + "}\n", + "\n", + ".xr-section-item input + label {\n", + " color: var(--xr-disabled-color);\n", + "}\n", + "\n", + ".xr-section-item input:enabled + label {\n", + " cursor: pointer;\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-section-item input:enabled + label:hover {\n", + " color: var(--xr-font-color0);\n", + "}\n", + "\n", + ".xr-section-summary {\n", + " grid-column: 1;\n", + " color: var(--xr-font-color2);\n", + " font-weight: 500;\n", + "}\n", + "\n", + ".xr-section-summary > span {\n", + " display: inline-block;\n", + " padding-left: 0.5em;\n", + "}\n", + "\n", + ".xr-section-summary-in:disabled + label {\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-section-summary-in + label:before {\n", + " display: inline-block;\n", + " content: '►';\n", + " font-size: 11px;\n", + " width: 15px;\n", + " text-align: center;\n", + "}\n", + "\n", + ".xr-section-summary-in:disabled + label:before {\n", + " color: var(--xr-disabled-color);\n", + "}\n", + "\n", + ".xr-section-summary-in:checked + label:before {\n", + " content: '▼';\n", + "}\n", + "\n", + ".xr-section-summary-in:checked + label > span {\n", + " display: none;\n", + "}\n", + "\n", + ".xr-section-summary,\n", + ".xr-section-inline-details {\n", + " padding-top: 4px;\n", + " padding-bottom: 4px;\n", + "}\n", + "\n", + ".xr-section-inline-details {\n", + " grid-column: 2 / -1;\n", + "}\n", + "\n", + ".xr-section-details {\n", + " display: none;\n", + " grid-column: 1 / -1;\n", + " margin-bottom: 5px;\n", + "}\n", + "\n", + ".xr-section-summary-in:checked ~ .xr-section-details {\n", + " display: contents;\n", + "}\n", + "\n", + ".xr-array-wrap {\n", + " grid-column: 1 / -1;\n", + " display: grid;\n", + " grid-template-columns: 20px auto;\n", + "}\n", + "\n", + ".xr-array-wrap > label {\n", + " grid-column: 1;\n", + " vertical-align: top;\n", + "}\n", + "\n", + ".xr-preview {\n", + " color: var(--xr-font-color3);\n", + "}\n", + "\n", + ".xr-array-preview,\n", + ".xr-array-data {\n", + " padding: 0 5px !important;\n", + " grid-column: 2;\n", + "}\n", + "\n", + ".xr-array-data,\n", + ".xr-array-in:checked ~ .xr-array-preview {\n", + " display: none;\n", + "}\n", + "\n", + ".xr-array-in:checked ~ .xr-array-data,\n", + ".xr-array-preview {\n", + " display: inline-block;\n", + "}\n", + "\n", + ".xr-dim-list {\n", + " display: inline-block !important;\n", + " list-style: none;\n", + " padding: 0 !important;\n", + " margin: 0;\n", + "}\n", + "\n", + ".xr-dim-list li {\n", + " display: inline-block;\n", + " padding: 0;\n", + " margin: 0;\n", + "}\n", + "\n", + ".xr-dim-list:before {\n", + " content: '(';\n", + "}\n", + "\n", + ".xr-dim-list:after {\n", + " content: ')';\n", + "}\n", + "\n", + ".xr-dim-list li:not(:last-child):after {\n", + " content: ',';\n", + " padding-right: 5px;\n", + "}\n", + "\n", + ".xr-has-index {\n", + " font-weight: bold;\n", + "}\n", + "\n", + ".xr-var-list,\n", + ".xr-var-item {\n", + " display: contents;\n", + "}\n", + "\n", + ".xr-var-item > div,\n", + ".xr-var-item label,\n", + ".xr-var-item > .xr-var-name span {\n", + " background-color: var(--xr-background-color-row-even);\n", + " margin-bottom: 0;\n", + "}\n", + "\n", + ".xr-var-item > .xr-var-name:hover span {\n", + " padding-right: 5px;\n", + "}\n", + "\n", + ".xr-var-list > li:nth-child(odd) > div,\n", + ".xr-var-list > li:nth-child(odd) > label,\n", + ".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n", + " background-color: var(--xr-background-color-row-odd);\n", + "}\n", + "\n", + ".xr-var-name {\n", + " grid-column: 1;\n", + "}\n", + "\n", + ".xr-var-dims {\n", + " grid-column: 2;\n", + "}\n", + "\n", + ".xr-var-dtype {\n", + " grid-column: 3;\n", + " text-align: right;\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-var-preview {\n", + " grid-column: 4;\n", + "}\n", + "\n", + ".xr-index-preview {\n", + " grid-column: 2 / 5;\n", + " color: var(--xr-font-color2);\n", + "}\n", + "\n", + ".xr-var-name,\n", + ".xr-var-dims,\n", + ".xr-var-dtype,\n", + ".xr-preview,\n", + ".xr-attrs dt {\n", + " white-space: nowrap;\n", + " overflow: hidden;\n", + " text-overflow: ellipsis;\n", + " padding-right: 10px;\n", + "}\n", + "\n", + ".xr-var-name:hover,\n", + ".xr-var-dims:hover,\n", + ".xr-var-dtype:hover,\n", + ".xr-attrs dt:hover {\n", + " overflow: visible;\n", + " width: auto;\n", + " z-index: 1;\n", + "}\n", + "\n", + ".xr-var-attrs,\n", + ".xr-var-data,\n", + ".xr-index-data {\n", + " display: none;\n", + " background-color: var(--xr-background-color) !important;\n", + " padding-bottom: 5px !important;\n", + "}\n", + "\n", + ".xr-var-attrs-in:checked ~ .xr-var-attrs,\n", + ".xr-var-data-in:checked ~ .xr-var-data,\n", + ".xr-index-data-in:checked ~ .xr-index-data {\n", + " display: block;\n", + "}\n", + "\n", + ".xr-var-data > table {\n", + " float: right;\n", + "}\n", + "\n", + ".xr-var-name span,\n", + ".xr-var-data,\n", + ".xr-index-name div,\n", + ".xr-index-data,\n", + ".xr-attrs {\n", + " padding-left: 25px !important;\n", + "}\n", + "\n", + ".xr-attrs,\n", + ".xr-var-attrs,\n", + ".xr-var-data,\n", + ".xr-index-data {\n", + " grid-column: 1 / -1;\n", + "}\n", + "\n", + "dl.xr-attrs {\n", + " padding: 0;\n", + " margin: 0;\n", + " display: grid;\n", + " grid-template-columns: 125px auto;\n", + "}\n", + "\n", + ".xr-attrs dt,\n", + ".xr-attrs dd {\n", + " padding: 0;\n", + " margin: 0;\n", + " float: left;\n", + " padding-right: 10px;\n", + " width: auto;\n", + "}\n", + "\n", + ".xr-attrs dt {\n", + " font-weight: normal;\n", + " grid-column: 1;\n", + "}\n", + "\n", + ".xr-attrs dt:hover span {\n", + " display: inline-block;\n", + " background: var(--xr-background-color);\n", + " padding-right: 10px;\n", + "}\n", + "\n", + ".xr-attrs dd {\n", + " grid-column: 2;\n", + " white-space: pre-wrap;\n", + " word-break: break-all;\n", + "}\n", + "\n", + ".xr-icon-database,\n", + ".xr-icon-file-text2,\n", + ".xr-no-icon {\n", + " display: inline-block;\n", + " vertical-align: middle;\n", + " width: 1em;\n", + " height: 1.5em !important;\n", + " stroke-width: 0;\n", + " stroke: currentColor;\n", + " fill: currentColor;\n", + "}\n", + "</style><pre class='xr-text-repr-fallback'><xarray.Dataset>\n", + "Dimensions: (time: 14965, y: 584, x: 284, nv: 2)\n", + "Coordinates:\n", + " lat (y, x) float32 dask.array<chunksize=(584, 284), meta=np.ndarray>\n", + " lon (y, x) float32 dask.array<chunksize=(584, 284), meta=np.ndarray>\n", + " * time (time) datetime64[ns] 1980-01-01T12:00:00 ... 20...\n", + " * x (x) float32 -5.802e+06 -5.801e+06 ... -5.519e+06\n", + " * y (y) float32 -3.9e+04 -4e+04 ... -6.21e+05 -6.22e+05\n", + "Dimensions without coordinates: nv\n", + "Data variables:\n", + " dayl (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " lambert_conformal_conic int16 ...\n", + " prcp (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " srad (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " swe (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " time_bnds (time, nv) datetime64[ns] dask.array<chunksize=(365, 2), meta=np.ndarray>\n", + " tmax (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " tmin (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " vp (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " yearday (time) int16 dask.array<chunksize=(365,), meta=np.ndarray>\n", + "Attributes:\n", + " Conventions: CF-1.6\n", + " Version_data: Daymet Data Version 4.0\n", + " Version_software: Daymet Software Version 4.0\n", + " citation: Please see http://daymet.ornl.gov/ for current Daymet ...\n", + " references: Please see http://daymet.ornl.gov/ for current informa...\n", + " source: Daymet Software Version 4.0\n", + " start_year: 1980</pre><div class='xr-wrap' style='display:none'><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-a731acd5-9697-4ac5-80b6-ebbd45114a89' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-a731acd5-9697-4ac5-80b6-ebbd45114a89' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span class='xr-has-index'>time</span>: 14965</li><li><span class='xr-has-index'>y</span>: 584</li><li><span class='xr-has-index'>x</span>: 284</li><li><span>nv</span>: 2</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-e4d98b9b-bd70-405e-bab0-2a04238e740f' class='xr-section-summary-in' type='checkbox' checked><label for='section-e4d98b9b-bd70-405e-bab0-2a04238e740f' class='xr-section-summary' >Coordinates: <span>(5)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>lat</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(584, 284), meta=np.ndarray></div><input id='attrs-a43cb02b-5554-476d-9d9b-b991b2d2f96f' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-a43cb02b-5554-476d-9d9b-b991b2d2f96f' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e393fcc8-dcde-4436-a3d1-06d2c70577c1' class='xr-var-data-in' type='checkbox'><label for='data-e393fcc8-dcde-4436-a3d1-06d2c70577c1' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>latitude coordinate</dd><dt><span>standard_name :</span></dt><dd>latitude</dd><dt><span>units :</span></dt><dd>degrees_north</dd></dl></div><div class='xr-var-data'><table>\n", + " <tr>\n", + " <td>\n", + " <table style=\"border-collapse: collapse;\">\n", + " <thead>\n", + " <tr>\n", + " <td> </td>\n", + " <th> Array </th>\n", + " <th> Chunk </th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " \n", + " <tr>\n", + " <th> Bytes </th>\n", + " <td> 647.88 kiB </td>\n", + " <td> 647.88 kiB </td>\n", + " </tr>\n", + " \n", + " <tr>\n", + " <th> Shape </th>\n", + " <td> (584, 284) </td>\n", + " <td> (584, 284) </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Dask graph </th>\n", + " <td colspan=\"2\"> 1 chunks in 2 graph layers </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Data type </th>\n", + " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", + " </tr>\n", + " </tbody>\n", + " </table>\n", + " </td>\n", + " <td>\n", + " <svg width=\"108\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"58\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"0\" y1=\"120\" x2=\"58\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n", + " <line x1=\"58\" y1=\"0\" x2=\"58\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"0.0,0.0 58.35616438356165,0.0 58.35616438356165,120.0 0.0,120.0\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"29.178082\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >284</text>\n", + " <text x=\"78.356164\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,78.356164,60.000000)\">584</text>\n", + "</svg>\n", + " </td>\n", + " </tr>\n", + "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>lon</span></div><div class='xr-var-dims'>(y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(584, 284), meta=np.ndarray></div><input id='attrs-377b5edc-5590-4731-ba95-85a10f012366' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-377b5edc-5590-4731-ba95-85a10f012366' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4a893d05-78b0-4bbc-a1cb-06411d7a9a75' class='xr-var-data-in' type='checkbox'><label for='data-4a893d05-78b0-4bbc-a1cb-06411d7a9a75' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>longitude coordinate</dd><dt><span>standard_name :</span></dt><dd>longitude</dd><dt><span>units :</span></dt><dd>degrees_east</dd></dl></div><div class='xr-var-data'><table>\n", + " <tr>\n", + " <td>\n", + " <table style=\"border-collapse: collapse;\">\n", + " <thead>\n", + " <tr>\n", + " <td> </td>\n", + " <th> Array </th>\n", + " <th> Chunk </th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " \n", + " <tr>\n", + " <th> Bytes </th>\n", + " <td> 647.88 kiB </td>\n", + " <td> 647.88 kiB </td>\n", + " </tr>\n", + " \n", + " <tr>\n", + " <th> Shape </th>\n", + " <td> (584, 284) </td>\n", + " <td> (584, 284) </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Dask graph </th>\n", + " <td colspan=\"2\"> 1 chunks in 2 graph layers </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Data type </th>\n", + " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", + " </tr>\n", + " </tbody>\n", + " </table>\n", + " </td>\n", + " <td>\n", + " <svg width=\"108\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"58\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"0\" y1=\"120\" x2=\"58\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n", + " <line x1=\"58\" y1=\"0\" x2=\"58\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"0.0,0.0 58.35616438356165,0.0 58.35616438356165,120.0 0.0,120.0\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"29.178082\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >284</text>\n", + " <text x=\"78.356164\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,78.356164,60.000000)\">584</text>\n", + "</svg>\n", + " </td>\n", + " </tr>\n", + "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>time</span></div><div class='xr-var-dims'>(time)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>1980-01-01T12:00:00 ... 2020-12-...</div><input id='attrs-f3559545-e652-4750-a4d7-e478c3f14bfa' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-f3559545-e652-4750-a4d7-e478c3f14bfa' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-be78e090-d45d-4fff-bb33-2d903debf187' class='xr-var-data-in' type='checkbox'><label for='data-be78e090-d45d-4fff-bb33-2d903debf187' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>bounds :</span></dt><dd>time_bnds</dd><dt><span>long_name :</span></dt><dd>24-hour day based on local time</dd><dt><span>standard_name :</span></dt><dd>time</dd></dl></div><div class='xr-var-data'><pre>array(['1980-01-01T12:00:00.000000000', '1980-01-02T12:00:00.000000000',\n", + " '1980-01-03T12:00:00.000000000', ..., '2020-12-28T12:00:00.000000000',\n", + " '2020-12-29T12:00:00.000000000', '2020-12-30T12:00:00.000000000'],\n", + " dtype='datetime64[ns]')</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>x</span></div><div class='xr-var-dims'>(x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>-5.802e+06 ... -5.519e+06</div><input id='attrs-1fa385a8-3063-4ed3-bca3-9f9d1f500319' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-1fa385a8-3063-4ed3-bca3-9f9d1f500319' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d68ca218-70f9-47dd-aac0-c22e081f42d5' class='xr-var-data-in' type='checkbox'><label for='data-d68ca218-70f9-47dd-aac0-c22e081f42d5' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>x coordinate of projection</dd><dt><span>standard_name :</span></dt><dd>projection_x_coordinate</dd><dt><span>units :</span></dt><dd>m</dd></dl></div><div class='xr-var-data'><pre>array([-5802250., -5801250., -5800250., ..., -5521250., -5520250., -5519250.],\n", + " dtype=float32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>y</span></div><div class='xr-var-dims'>(y)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>-3.9e+04 -4e+04 ... -6.22e+05</div><input id='attrs-cddf79f0-aac0-4223-ba18-abe7f3267cbc' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-cddf79f0-aac0-4223-ba18-abe7f3267cbc' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-16c60314-98d5-4e6a-a166-a56c2f1f87ac' class='xr-var-data-in' type='checkbox'><label for='data-16c60314-98d5-4e6a-a166-a56c2f1f87ac' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>y coordinate of projection</dd><dt><span>standard_name :</span></dt><dd>projection_y_coordinate</dd><dt><span>units :</span></dt><dd>m</dd></dl></div><div class='xr-var-data'><pre>array([ -39000., -40000., -41000., ..., -620000., -621000., -622000.],\n", + " dtype=float32)</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-7d17997b-9f0b-42df-aefb-74407560376e' class='xr-section-summary-in' type='checkbox' checked><label for='section-7d17997b-9f0b-42df-aefb-74407560376e' class='xr-section-summary' >Data variables: <span>(10)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>dayl</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(365, 584, 284), meta=np.ndarray></div><input id='attrs-62e66874-14aa-487b-a70d-1c218d329328' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-62e66874-14aa-487b-a70d-1c218d329328' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-07f6706e-e458-475c-9e7a-ca994474b6da' class='xr-var-data-in' type='checkbox'><label for='data-07f6706e-e458-475c-9e7a-ca994474b6da' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: mean</dd><dt><span>grid_mapping :</span></dt><dd>lambert_conformal_conic</dd><dt><span>long_name :</span></dt><dd>daylength</dd><dt><span>units :</span></dt><dd>s</dd></dl></div><div class='xr-var-data'><table>\n", + " <tr>\n", + " <td>\n", + " <table style=\"border-collapse: collapse;\">\n", + " <thead>\n", + " <tr>\n", + " <td> </td>\n", + " <th> Array </th>\n", + " <th> Chunk </th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " \n", + " <tr>\n", + " <th> Bytes </th>\n", + " <td> 9.25 GiB </td>\n", + " <td> 230.93 MiB </td>\n", + " </tr>\n", + " \n", + " <tr>\n", + " <th> Shape </th>\n", + " <td> (14965, 584, 284) </td>\n", + " <td> (365, 584, 284) </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Dask graph </th>\n", + " <td colspan=\"2\"> 41 chunks in 2 graph layers </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Data type </th>\n", + " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", + " </tr>\n", + " </tbody>\n", + " </table>\n", + " </td>\n", + " <td>\n", + " <svg width=\"159\" height=\"153\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"10\" y1=\"32\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"32\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"36\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"39\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"20\" y2=\"43\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"46\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"27\" y2=\"50\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"30\" y2=\"53\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"58\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"62\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"65\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"46\" y2=\"69\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"49\" y2=\"72\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"53\" y2=\"76\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"81\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"84\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"88\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"68\" y2=\"91\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"71\" y2=\"94\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"75\" y2=\"98\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,103.57118128081974 10.0,32.98294598670209\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"38\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"42\" y2=\"3\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"45\" y2=\"6\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"49\" y2=\"10\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"52\" y2=\"13\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"55\" y2=\"17\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"59\" y2=\"20\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"64\" y2=\"25\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"68\" y2=\"29\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"71\" y2=\"32\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"74\" y2=\"36\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"78\" y2=\"39\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"81\" y2=\"43\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"86\" y2=\"48\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"90\" y2=\"51\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"93\" y2=\"55\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"97\" y2=\"58\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"100\" y2=\"61\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"104\" y2=\"65\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"38\" y1=\"0\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 38.73682138919514,0.0 109.3250566833128,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"103\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + " <line x1=\"109\" y1=\"70\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"80.58823529411765,70.58823529411765 109.3250566833128,70.58823529411765 109.3250566833128,103.57118128081974 80.58823529411765,103.57118128081974\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"94.956646\" y=\"123.571181\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >284</text>\n", + " <text x=\"129.325057\" y=\"87.079708\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,129.325057,87.079708)\">584</text>\n", + " <text x=\"35.294118\" y=\"88.277064\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,88.277064)\">14965</text>\n", + "</svg>\n", + " </td>\n", + " </tr>\n", + "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>lambert_conformal_conic</span></div><div class='xr-var-dims'>()</div><div class='xr-var-dtype'>int16</div><div class='xr-var-preview xr-preview'>...</div><input id='attrs-928f259b-ea3a-4156-a3c3-c019c4482780' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-928f259b-ea3a-4156-a3c3-c019c4482780' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-4cd63b44-01b3-4595-9c11-c9114868dbd6' class='xr-var-data-in' type='checkbox'><label for='data-4cd63b44-01b3-4595-9c11-c9114868dbd6' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>false_easting :</span></dt><dd>0.0</dd><dt><span>false_northing :</span></dt><dd>0.0</dd><dt><span>grid_mapping_name :</span></dt><dd>lambert_conformal_conic</dd><dt><span>inverse_flattening :</span></dt><dd>298.257223563</dd><dt><span>latitude_of_projection_origin :</span></dt><dd>42.5</dd><dt><span>longitude_of_central_meridian :</span></dt><dd>-100.0</dd><dt><span>semi_major_axis :</span></dt><dd>6378137.0</dd><dt><span>standard_parallel :</span></dt><dd>[25.0, 60.0]</dd></dl></div><div class='xr-var-data'><pre>[1 values with dtype=int16]</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>prcp</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(365, 584, 284), meta=np.ndarray></div><input id='attrs-2d9e3b11-5a56-43a0-b141-e052f3d302f6' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-2d9e3b11-5a56-43a0-b141-e052f3d302f6' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-b9a34fb6-8306-4813-8dfa-84918d498e9c' class='xr-var-data-in' type='checkbox'><label for='data-b9a34fb6-8306-4813-8dfa-84918d498e9c' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: mean time: sum</dd><dt><span>grid_mapping :</span></dt><dd>lambert_conformal_conic</dd><dt><span>long_name :</span></dt><dd>daily total precipitation</dd><dt><span>units :</span></dt><dd>mm/day</dd></dl></div><div class='xr-var-data'><table>\n", + " <tr>\n", + " <td>\n", + " <table style=\"border-collapse: collapse;\">\n", + " <thead>\n", + " <tr>\n", + " <td> </td>\n", + " <th> Array </th>\n", + " <th> Chunk </th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " \n", + " <tr>\n", + " <th> Bytes </th>\n", + " <td> 9.25 GiB </td>\n", + " <td> 230.93 MiB </td>\n", + " </tr>\n", + " \n", + " <tr>\n", + " <th> Shape </th>\n", + " <td> (14965, 584, 284) </td>\n", + " <td> (365, 584, 284) </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Dask graph </th>\n", + " <td colspan=\"2\"> 41 chunks in 2 graph layers </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Data type </th>\n", + " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", + " </tr>\n", + " </tbody>\n", + " </table>\n", + " </td>\n", + " <td>\n", + " <svg width=\"159\" height=\"153\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"10\" y1=\"32\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"32\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"36\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"39\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"20\" y2=\"43\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"46\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"27\" y2=\"50\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"30\" y2=\"53\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"58\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"62\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"65\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"46\" y2=\"69\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"49\" y2=\"72\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"53\" y2=\"76\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"81\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"84\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"88\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"68\" y2=\"91\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"71\" y2=\"94\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"75\" y2=\"98\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,103.57118128081974 10.0,32.98294598670209\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"38\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"42\" y2=\"3\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"45\" y2=\"6\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"49\" y2=\"10\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"52\" y2=\"13\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"55\" y2=\"17\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"59\" y2=\"20\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"64\" y2=\"25\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"68\" y2=\"29\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"71\" y2=\"32\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"74\" y2=\"36\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"78\" y2=\"39\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"81\" y2=\"43\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"86\" y2=\"48\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"90\" y2=\"51\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"93\" y2=\"55\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"97\" y2=\"58\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"100\" y2=\"61\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"104\" y2=\"65\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"38\" y1=\"0\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 38.73682138919514,0.0 109.3250566833128,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"103\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + " <line x1=\"109\" y1=\"70\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"80.58823529411765,70.58823529411765 109.3250566833128,70.58823529411765 109.3250566833128,103.57118128081974 80.58823529411765,103.57118128081974\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"94.956646\" y=\"123.571181\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >284</text>\n", + " <text x=\"129.325057\" y=\"87.079708\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,129.325057,87.079708)\">584</text>\n", + " <text x=\"35.294118\" y=\"88.277064\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,88.277064)\">14965</text>\n", + "</svg>\n", + " </td>\n", + " </tr>\n", + "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>srad</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(365, 584, 284), meta=np.ndarray></div><input id='attrs-f0148ab8-dcd7-461a-8326-a67d53ff98fe' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-f0148ab8-dcd7-461a-8326-a67d53ff98fe' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-d8e39ebf-8cd7-4268-90f5-c9d712903733' class='xr-var-data-in' type='checkbox'><label for='data-d8e39ebf-8cd7-4268-90f5-c9d712903733' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: mean time: mean</dd><dt><span>grid_mapping :</span></dt><dd>lambert_conformal_conic</dd><dt><span>long_name :</span></dt><dd>daylight average incident shortwave radiation</dd><dt><span>units :</span></dt><dd>W/m2</dd></dl></div><div class='xr-var-data'><table>\n", + " <tr>\n", + " <td>\n", + " <table style=\"border-collapse: collapse;\">\n", + " <thead>\n", + " <tr>\n", + " <td> </td>\n", + " <th> Array </th>\n", + " <th> Chunk </th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " \n", + " <tr>\n", + " <th> Bytes </th>\n", + " <td> 9.25 GiB </td>\n", + " <td> 230.93 MiB </td>\n", + " </tr>\n", + " \n", + " <tr>\n", + " <th> Shape </th>\n", + " <td> (14965, 584, 284) </td>\n", + " <td> (365, 584, 284) </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Dask graph </th>\n", + " <td colspan=\"2\"> 41 chunks in 2 graph layers </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Data type </th>\n", + " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", + " </tr>\n", + " </tbody>\n", + " </table>\n", + " </td>\n", + " <td>\n", + " <svg width=\"159\" height=\"153\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"10\" y1=\"32\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"32\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"36\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"39\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"20\" y2=\"43\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"46\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"27\" y2=\"50\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"30\" y2=\"53\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"58\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"62\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"65\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"46\" y2=\"69\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"49\" y2=\"72\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"53\" y2=\"76\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"81\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"84\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"88\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"68\" y2=\"91\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"71\" y2=\"94\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"75\" y2=\"98\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,103.57118128081974 10.0,32.98294598670209\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"38\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"42\" y2=\"3\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"45\" y2=\"6\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"49\" y2=\"10\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"52\" y2=\"13\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"55\" y2=\"17\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"59\" y2=\"20\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"64\" y2=\"25\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"68\" y2=\"29\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"71\" y2=\"32\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"74\" y2=\"36\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"78\" y2=\"39\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"81\" y2=\"43\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"86\" y2=\"48\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"90\" y2=\"51\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"93\" y2=\"55\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"97\" y2=\"58\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"100\" y2=\"61\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"104\" y2=\"65\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"38\" y1=\"0\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 38.73682138919514,0.0 109.3250566833128,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"103\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + " <line x1=\"109\" y1=\"70\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"80.58823529411765,70.58823529411765 109.3250566833128,70.58823529411765 109.3250566833128,103.57118128081974 80.58823529411765,103.57118128081974\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"94.956646\" y=\"123.571181\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >284</text>\n", + " <text x=\"129.325057\" y=\"87.079708\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,129.325057,87.079708)\">584</text>\n", + " <text x=\"35.294118\" y=\"88.277064\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,88.277064)\">14965</text>\n", + "</svg>\n", + " </td>\n", + " </tr>\n", + "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>swe</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(365, 584, 284), meta=np.ndarray></div><input id='attrs-067479fb-22a3-4024-b0f2-2fd8d84bd2b9' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-067479fb-22a3-4024-b0f2-2fd8d84bd2b9' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-2de818fc-aaf8-4c7b-b4a1-507440c95f56' class='xr-var-data-in' type='checkbox'><label for='data-2de818fc-aaf8-4c7b-b4a1-507440c95f56' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: mean time: mean</dd><dt><span>grid_mapping :</span></dt><dd>lambert_conformal_conic</dd><dt><span>long_name :</span></dt><dd>snow water equivalent</dd><dt><span>units :</span></dt><dd>kg/m2</dd></dl></div><div class='xr-var-data'><table>\n", + " <tr>\n", + " <td>\n", + " <table style=\"border-collapse: collapse;\">\n", + " <thead>\n", + " <tr>\n", + " <td> </td>\n", + " <th> Array </th>\n", + " <th> Chunk </th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " \n", + " <tr>\n", + " <th> Bytes </th>\n", + " <td> 9.25 GiB </td>\n", + " <td> 230.93 MiB </td>\n", + " </tr>\n", + " \n", + " <tr>\n", + " <th> Shape </th>\n", + " <td> (14965, 584, 284) </td>\n", + " <td> (365, 584, 284) </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Dask graph </th>\n", + " <td colspan=\"2\"> 41 chunks in 2 graph layers </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Data type </th>\n", + " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", + " </tr>\n", + " </tbody>\n", + " </table>\n", + " </td>\n", + " <td>\n", + " <svg width=\"159\" height=\"153\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"10\" y1=\"32\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"32\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"36\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"39\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"20\" y2=\"43\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"46\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"27\" y2=\"50\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"30\" y2=\"53\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"58\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"62\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"65\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"46\" y2=\"69\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"49\" y2=\"72\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"53\" y2=\"76\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"81\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"84\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"88\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"68\" y2=\"91\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"71\" y2=\"94\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"75\" y2=\"98\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,103.57118128081974 10.0,32.98294598670209\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"38\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"42\" y2=\"3\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"45\" y2=\"6\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"49\" y2=\"10\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"52\" y2=\"13\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"55\" y2=\"17\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"59\" y2=\"20\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"64\" y2=\"25\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"68\" y2=\"29\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"71\" y2=\"32\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"74\" y2=\"36\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"78\" y2=\"39\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"81\" y2=\"43\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"86\" y2=\"48\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"90\" y2=\"51\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"93\" y2=\"55\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"97\" y2=\"58\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"100\" y2=\"61\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"104\" y2=\"65\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"38\" y1=\"0\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 38.73682138919514,0.0 109.3250566833128,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"103\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + " <line x1=\"109\" y1=\"70\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"80.58823529411765,70.58823529411765 109.3250566833128,70.58823529411765 109.3250566833128,103.57118128081974 80.58823529411765,103.57118128081974\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"94.956646\" y=\"123.571181\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >284</text>\n", + " <text x=\"129.325057\" y=\"87.079708\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,129.325057,87.079708)\">584</text>\n", + " <text x=\"35.294118\" y=\"88.277064\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,88.277064)\">14965</text>\n", + "</svg>\n", + " </td>\n", + " </tr>\n", + "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>time_bnds</span></div><div class='xr-var-dims'>(time, nv)</div><div class='xr-var-dtype'>datetime64[ns]</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(365, 2), meta=np.ndarray></div><input id='attrs-6335acb9-9d63-4ef0-9d33-287bea4aa01a' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-6335acb9-9d63-4ef0-9d33-287bea4aa01a' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-5dd7d33b-c7fe-44d5-877f-27529a67843c' class='xr-var-data-in' type='checkbox'><label for='data-5dd7d33b-c7fe-44d5-877f-27529a67843c' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><table>\n", + " <tr>\n", + " <td>\n", + " <table style=\"border-collapse: collapse;\">\n", + " <thead>\n", + " <tr>\n", + " <td> </td>\n", + " <th> Array </th>\n", + " <th> Chunk </th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " \n", + " <tr>\n", + " <th> Bytes </th>\n", + " <td> 233.83 kiB </td>\n", + " <td> 5.70 kiB </td>\n", + " </tr>\n", + " \n", + " <tr>\n", + " <th> Shape </th>\n", + " <td> (14965, 2) </td>\n", + " <td> (365, 2) </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Dask graph </th>\n", + " <td colspan=\"2\"> 41 chunks in 2 graph layers </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Data type </th>\n", + " <td colspan=\"2\"> datetime64[ns] numpy.ndarray </td>\n", + " </tr>\n", + " </tbody>\n", + " </table>\n", + " </td>\n", + " <td>\n", + " <svg width=\"75\" height=\"170\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"25\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"0\" y1=\"5\" x2=\"25\" y2=\"5\" />\n", + " <line x1=\"0\" y1=\"11\" x2=\"25\" y2=\"11\" />\n", + " <line x1=\"0\" y1=\"17\" x2=\"25\" y2=\"17\" />\n", + " <line x1=\"0\" y1=\"23\" x2=\"25\" y2=\"23\" />\n", + " <line x1=\"0\" y1=\"29\" x2=\"25\" y2=\"29\" />\n", + " <line x1=\"0\" y1=\"35\" x2=\"25\" y2=\"35\" />\n", + " <line x1=\"0\" y1=\"43\" x2=\"25\" y2=\"43\" />\n", + " <line x1=\"0\" y1=\"49\" x2=\"25\" y2=\"49\" />\n", + " <line x1=\"0\" y1=\"55\" x2=\"25\" y2=\"55\" />\n", + " <line x1=\"0\" y1=\"61\" x2=\"25\" y2=\"61\" />\n", + " <line x1=\"0\" y1=\"67\" x2=\"25\" y2=\"67\" />\n", + " <line x1=\"0\" y1=\"73\" x2=\"25\" y2=\"73\" />\n", + " <line x1=\"0\" y1=\"81\" x2=\"25\" y2=\"81\" />\n", + " <line x1=\"0\" y1=\"87\" x2=\"25\" y2=\"87\" />\n", + " <line x1=\"0\" y1=\"93\" x2=\"25\" y2=\"93\" />\n", + " <line x1=\"0\" y1=\"99\" x2=\"25\" y2=\"99\" />\n", + " <line x1=\"0\" y1=\"105\" x2=\"25\" y2=\"105\" />\n", + " <line x1=\"0\" y1=\"111\" x2=\"25\" y2=\"111\" />\n", + " <line x1=\"0\" y1=\"120\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"120\" style=\"stroke-width:2\" />\n", + " <line x1=\"25\" y1=\"0\" x2=\"25\" y2=\"120\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"0.0,0.0 25.412616514582485,0.0 25.412616514582485,120.0 0.0,120.0\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"12.706308\" y=\"140.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >2</text>\n", + " <text x=\"45.412617\" y=\"60.000000\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,45.412617,60.000000)\">14965</text>\n", + "</svg>\n", + " </td>\n", + " </tr>\n", + "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>tmax</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(365, 584, 284), meta=np.ndarray></div><input id='attrs-55e78fb6-8a30-46e8-8b48-5946ce7c85d4' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-55e78fb6-8a30-46e8-8b48-5946ce7c85d4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-20416fcd-e39e-469a-9f29-e80639142c9c' class='xr-var-data-in' type='checkbox'><label for='data-20416fcd-e39e-469a-9f29-e80639142c9c' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: mean time: maximum</dd><dt><span>grid_mapping :</span></dt><dd>lambert_conformal_conic</dd><dt><span>long_name :</span></dt><dd>daily maximum temperature</dd><dt><span>units :</span></dt><dd>degrees C</dd></dl></div><div class='xr-var-data'><table>\n", + " <tr>\n", + " <td>\n", + " <table style=\"border-collapse: collapse;\">\n", + " <thead>\n", + " <tr>\n", + " <td> </td>\n", + " <th> Array </th>\n", + " <th> Chunk </th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " \n", + " <tr>\n", + " <th> Bytes </th>\n", + " <td> 9.25 GiB </td>\n", + " <td> 230.93 MiB </td>\n", + " </tr>\n", + " \n", + " <tr>\n", + " <th> Shape </th>\n", + " <td> (14965, 584, 284) </td>\n", + " <td> (365, 584, 284) </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Dask graph </th>\n", + " <td colspan=\"2\"> 41 chunks in 2 graph layers </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Data type </th>\n", + " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", + " </tr>\n", + " </tbody>\n", + " </table>\n", + " </td>\n", + " <td>\n", + " <svg width=\"159\" height=\"153\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"10\" y1=\"32\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"32\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"36\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"39\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"20\" y2=\"43\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"46\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"27\" y2=\"50\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"30\" y2=\"53\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"58\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"62\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"65\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"46\" y2=\"69\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"49\" y2=\"72\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"53\" y2=\"76\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"81\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"84\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"88\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"68\" y2=\"91\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"71\" y2=\"94\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"75\" y2=\"98\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,103.57118128081974 10.0,32.98294598670209\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"38\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"42\" y2=\"3\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"45\" y2=\"6\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"49\" y2=\"10\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"52\" y2=\"13\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"55\" y2=\"17\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"59\" y2=\"20\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"64\" y2=\"25\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"68\" y2=\"29\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"71\" y2=\"32\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"74\" y2=\"36\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"78\" y2=\"39\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"81\" y2=\"43\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"86\" y2=\"48\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"90\" y2=\"51\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"93\" y2=\"55\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"97\" y2=\"58\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"100\" y2=\"61\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"104\" y2=\"65\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"38\" y1=\"0\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 38.73682138919514,0.0 109.3250566833128,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"103\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + " <line x1=\"109\" y1=\"70\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"80.58823529411765,70.58823529411765 109.3250566833128,70.58823529411765 109.3250566833128,103.57118128081974 80.58823529411765,103.57118128081974\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"94.956646\" y=\"123.571181\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >284</text>\n", + " <text x=\"129.325057\" y=\"87.079708\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,129.325057,87.079708)\">584</text>\n", + " <text x=\"35.294118\" y=\"88.277064\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,88.277064)\">14965</text>\n", + "</svg>\n", + " </td>\n", + " </tr>\n", + "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>tmin</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(365, 584, 284), meta=np.ndarray></div><input id='attrs-9d21ba60-8080-4dec-b2b1-20af950a3835' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-9d21ba60-8080-4dec-b2b1-20af950a3835' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-cbdcf1e6-02c0-442a-81ce-c9bc22bd7a95' class='xr-var-data-in' type='checkbox'><label for='data-cbdcf1e6-02c0-442a-81ce-c9bc22bd7a95' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: mean time: minimum</dd><dt><span>grid_mapping :</span></dt><dd>lambert_conformal_conic</dd><dt><span>long_name :</span></dt><dd>daily minimum temperature</dd><dt><span>units :</span></dt><dd>degrees C</dd></dl></div><div class='xr-var-data'><table>\n", + " <tr>\n", + " <td>\n", + " <table style=\"border-collapse: collapse;\">\n", + " <thead>\n", + " <tr>\n", + " <td> </td>\n", + " <th> Array </th>\n", + " <th> Chunk </th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " \n", + " <tr>\n", + " <th> Bytes </th>\n", + " <td> 9.25 GiB </td>\n", + " <td> 230.93 MiB </td>\n", + " </tr>\n", + " \n", + " <tr>\n", + " <th> Shape </th>\n", + " <td> (14965, 584, 284) </td>\n", + " <td> (365, 584, 284) </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Dask graph </th>\n", + " <td colspan=\"2\"> 41 chunks in 2 graph layers </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Data type </th>\n", + " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", + " </tr>\n", + " </tbody>\n", + " </table>\n", + " </td>\n", + " <td>\n", + " <svg width=\"159\" height=\"153\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"10\" y1=\"32\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"32\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"36\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"39\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"20\" y2=\"43\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"46\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"27\" y2=\"50\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"30\" y2=\"53\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"58\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"62\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"65\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"46\" y2=\"69\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"49\" y2=\"72\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"53\" y2=\"76\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"81\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"84\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"88\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"68\" y2=\"91\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"71\" y2=\"94\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"75\" y2=\"98\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,103.57118128081974 10.0,32.98294598670209\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"38\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"42\" y2=\"3\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"45\" y2=\"6\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"49\" y2=\"10\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"52\" y2=\"13\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"55\" y2=\"17\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"59\" y2=\"20\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"64\" y2=\"25\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"68\" y2=\"29\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"71\" y2=\"32\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"74\" y2=\"36\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"78\" y2=\"39\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"81\" y2=\"43\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"86\" y2=\"48\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"90\" y2=\"51\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"93\" y2=\"55\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"97\" y2=\"58\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"100\" y2=\"61\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"104\" y2=\"65\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"38\" y1=\"0\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 38.73682138919514,0.0 109.3250566833128,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"103\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + " <line x1=\"109\" y1=\"70\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"80.58823529411765,70.58823529411765 109.3250566833128,70.58823529411765 109.3250566833128,103.57118128081974 80.58823529411765,103.57118128081974\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"94.956646\" y=\"123.571181\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >284</text>\n", + " <text x=\"129.325057\" y=\"87.079708\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,129.325057,87.079708)\">584</text>\n", + " <text x=\"35.294118\" y=\"88.277064\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,88.277064)\">14965</text>\n", + "</svg>\n", + " </td>\n", + " </tr>\n", + "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>vp</span></div><div class='xr-var-dims'>(time, y, x)</div><div class='xr-var-dtype'>float32</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(365, 584, 284), meta=np.ndarray></div><input id='attrs-416f797c-89d4-45a6-9627-e6f41041fc74' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-416f797c-89d4-45a6-9627-e6f41041fc74' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-24ccf3bc-c320-4194-a508-2e8e6cf4222b' class='xr-var-data-in' type='checkbox'><label for='data-24ccf3bc-c320-4194-a508-2e8e6cf4222b' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>cell_methods :</span></dt><dd>area: mean time: mean</dd><dt><span>grid_mapping :</span></dt><dd>lambert_conformal_conic</dd><dt><span>long_name :</span></dt><dd>daily average vapor pressure</dd><dt><span>units :</span></dt><dd>Pa</dd></dl></div><div class='xr-var-data'><table>\n", + " <tr>\n", + " <td>\n", + " <table style=\"border-collapse: collapse;\">\n", + " <thead>\n", + " <tr>\n", + " <td> </td>\n", + " <th> Array </th>\n", + " <th> Chunk </th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " \n", + " <tr>\n", + " <th> Bytes </th>\n", + " <td> 9.25 GiB </td>\n", + " <td> 230.93 MiB </td>\n", + " </tr>\n", + " \n", + " <tr>\n", + " <th> Shape </th>\n", + " <td> (14965, 584, 284) </td>\n", + " <td> (365, 584, 284) </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Dask graph </th>\n", + " <td colspan=\"2\"> 41 chunks in 2 graph layers </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Data type </th>\n", + " <td colspan=\"2\"> float32 numpy.ndarray </td>\n", + " </tr>\n", + " </tbody>\n", + " </table>\n", + " </td>\n", + " <td>\n", + " <svg width=\"159\" height=\"153\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"10\" y1=\"32\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"10\" y2=\"32\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"13\" y2=\"36\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"16\" y2=\"39\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"20\" y2=\"43\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"23\" y2=\"46\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"27\" y2=\"50\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"30\" y2=\"53\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"35\" y2=\"58\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"39\" y2=\"62\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"42\" y2=\"65\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"46\" y2=\"69\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"49\" y2=\"72\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"53\" y2=\"76\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"58\" y2=\"81\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"61\" y2=\"84\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"65\" y2=\"88\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"68\" y2=\"91\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"71\" y2=\"94\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"75\" y2=\"98\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 80.58823529411765,70.58823529411765 80.58823529411765,103.57118128081974 10.0,32.98294598670209\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"38\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"13\" y1=\"3\" x2=\"42\" y2=\"3\" />\n", + " <line x1=\"16\" y1=\"6\" x2=\"45\" y2=\"6\" />\n", + " <line x1=\"20\" y1=\"10\" x2=\"49\" y2=\"10\" />\n", + " <line x1=\"23\" y1=\"13\" x2=\"52\" y2=\"13\" />\n", + " <line x1=\"27\" y1=\"17\" x2=\"55\" y2=\"17\" />\n", + " <line x1=\"30\" y1=\"20\" x2=\"59\" y2=\"20\" />\n", + " <line x1=\"35\" y1=\"25\" x2=\"64\" y2=\"25\" />\n", + " <line x1=\"39\" y1=\"29\" x2=\"68\" y2=\"29\" />\n", + " <line x1=\"42\" y1=\"32\" x2=\"71\" y2=\"32\" />\n", + " <line x1=\"46\" y1=\"36\" x2=\"74\" y2=\"36\" />\n", + " <line x1=\"49\" y1=\"39\" x2=\"78\" y2=\"39\" />\n", + " <line x1=\"53\" y1=\"43\" x2=\"81\" y2=\"43\" />\n", + " <line x1=\"58\" y1=\"48\" x2=\"86\" y2=\"48\" />\n", + " <line x1=\"61\" y1=\"51\" x2=\"90\" y2=\"51\" />\n", + " <line x1=\"65\" y1=\"55\" x2=\"93\" y2=\"55\" />\n", + " <line x1=\"68\" y1=\"58\" x2=\"97\" y2=\"58\" />\n", + " <line x1=\"71\" y1=\"61\" x2=\"100\" y2=\"61\" />\n", + " <line x1=\"75\" y1=\"65\" x2=\"104\" y2=\"65\" />\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"10\" y1=\"0\" x2=\"80\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"38\" y1=\"0\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"10.0,0.0 38.73682138919514,0.0 109.3250566833128,70.58823529411765 80.58823529411765,70.58823529411765\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"109\" y2=\"70\" style=\"stroke-width:2\" />\n", + " <line x1=\"80\" y1=\"103\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"80\" y1=\"70\" x2=\"80\" y2=\"103\" style=\"stroke-width:2\" />\n", + " <line x1=\"109\" y1=\"70\" x2=\"109\" y2=\"103\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"80.58823529411765,70.58823529411765 109.3250566833128,70.58823529411765 109.3250566833128,103.57118128081974 80.58823529411765,103.57118128081974\" style=\"fill:#ECB172A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"94.956646\" y=\"123.571181\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >284</text>\n", + " <text x=\"129.325057\" y=\"87.079708\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(-90,129.325057,87.079708)\">584</text>\n", + " <text x=\"35.294118\" y=\"88.277064\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(45,35.294118,88.277064)\">14965</text>\n", + "</svg>\n", + " </td>\n", + " </tr>\n", + "</table></div></li><li class='xr-var-item'><div class='xr-var-name'><span>yearday</span></div><div class='xr-var-dims'>(time)</div><div class='xr-var-dtype'>int16</div><div class='xr-var-preview xr-preview'>dask.array<chunksize=(365,), meta=np.ndarray></div><input id='attrs-50b8f46f-16e7-491a-89f6-8a35873758a2' class='xr-var-attrs-in' type='checkbox' ><label for='attrs-50b8f46f-16e7-491a-89f6-8a35873758a2' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-e18bcca9-5e7c-4084-948b-2d984f58e047' class='xr-var-data-in' type='checkbox'><label for='data-e18bcca9-5e7c-4084-948b-2d984f58e047' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'><dt><span>long_name :</span></dt><dd>day of year (DOY) starting with day 1 on Januaray 1st</dd></dl></div><div class='xr-var-data'><table>\n", + " <tr>\n", + " <td>\n", + " <table style=\"border-collapse: collapse;\">\n", + " <thead>\n", + " <tr>\n", + " <td> </td>\n", + " <th> Array </th>\n", + " <th> Chunk </th>\n", + " </tr>\n", + " </thead>\n", + " <tbody>\n", + " \n", + " <tr>\n", + " <th> Bytes </th>\n", + " <td> 29.23 kiB </td>\n", + " <td> 730 B </td>\n", + " </tr>\n", + " \n", + " <tr>\n", + " <th> Shape </th>\n", + " <td> (14965,) </td>\n", + " <td> (365,) </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Dask graph </th>\n", + " <td colspan=\"2\"> 41 chunks in 2 graph layers </td>\n", + " </tr>\n", + " <tr>\n", + " <th> Data type </th>\n", + " <td colspan=\"2\"> int16 numpy.ndarray </td>\n", + " </tr>\n", + " </tbody>\n", + " </table>\n", + " </td>\n", + " <td>\n", + " <svg width=\"170\" height=\"75\" style=\"stroke:rgb(0,0,0);stroke-width:1\" >\n", + "\n", + " <!-- Horizontal lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"120\" y2=\"0\" style=\"stroke-width:2\" />\n", + " <line x1=\"0\" y1=\"25\" x2=\"120\" y2=\"25\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Vertical lines -->\n", + " <line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"25\" style=\"stroke-width:2\" />\n", + " <line x1=\"5\" y1=\"0\" x2=\"5\" y2=\"25\" />\n", + " <line x1=\"11\" y1=\"0\" x2=\"11\" y2=\"25\" />\n", + " <line x1=\"17\" y1=\"0\" x2=\"17\" y2=\"25\" />\n", + " <line x1=\"23\" y1=\"0\" x2=\"23\" y2=\"25\" />\n", + " <line x1=\"29\" y1=\"0\" x2=\"29\" y2=\"25\" />\n", + " <line x1=\"35\" y1=\"0\" x2=\"35\" y2=\"25\" />\n", + " <line x1=\"43\" y1=\"0\" x2=\"43\" y2=\"25\" />\n", + " <line x1=\"49\" y1=\"0\" x2=\"49\" y2=\"25\" />\n", + " <line x1=\"55\" y1=\"0\" x2=\"55\" y2=\"25\" />\n", + " <line x1=\"61\" y1=\"0\" x2=\"61\" y2=\"25\" />\n", + " <line x1=\"67\" y1=\"0\" x2=\"67\" y2=\"25\" />\n", + " <line x1=\"73\" y1=\"0\" x2=\"73\" y2=\"25\" />\n", + " <line x1=\"81\" y1=\"0\" x2=\"81\" y2=\"25\" />\n", + " <line x1=\"87\" y1=\"0\" x2=\"87\" y2=\"25\" />\n", + " <line x1=\"93\" y1=\"0\" x2=\"93\" y2=\"25\" />\n", + " <line x1=\"99\" y1=\"0\" x2=\"99\" y2=\"25\" />\n", + " <line x1=\"105\" y1=\"0\" x2=\"105\" y2=\"25\" />\n", + " <line x1=\"111\" y1=\"0\" x2=\"111\" y2=\"25\" />\n", + " <line x1=\"120\" y1=\"0\" x2=\"120\" y2=\"25\" style=\"stroke-width:2\" />\n", + "\n", + " <!-- Colored Rectangle -->\n", + " <polygon points=\"0.0,0.0 120.0,0.0 120.0,25.412616514582485 0.0,25.412616514582485\" style=\"fill:#8B4903A0;stroke-width:0\"/>\n", + "\n", + " <!-- Text -->\n", + " <text x=\"60.000000\" y=\"45.412617\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" >14965</text>\n", + " <text x=\"140.000000\" y=\"12.706308\" font-size=\"1.0rem\" font-weight=\"100\" text-anchor=\"middle\" transform=\"rotate(0,140.000000,12.706308)\">1</text>\n", + "</svg>\n", + " </td>\n", + " </tr>\n", + "</table></div></li></ul></div></li><li class='xr-section-item'><input id='section-e664dfeb-4f01-4315-aa9b-850e718bdc51' class='xr-section-summary-in' type='checkbox' ><label for='section-e664dfeb-4f01-4315-aa9b-850e718bdc51' class='xr-section-summary' >Indexes: <span>(3)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-index-name'><div>time</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-18ea4dc5-edb5-45dd-ac45-041d1f0d7f96' class='xr-index-data-in' type='checkbox'/><label for='index-18ea4dc5-edb5-45dd-ac45-041d1f0d7f96' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(DatetimeIndex(['1980-01-01 12:00:00', '1980-01-02 12:00:00',\n", + " '1980-01-03 12:00:00', '1980-01-04 12:00:00',\n", + " '1980-01-05 12:00:00', '1980-01-06 12:00:00',\n", + " '1980-01-07 12:00:00', '1980-01-08 12:00:00',\n", + " '1980-01-09 12:00:00', '1980-01-10 12:00:00',\n", + " ...\n", + " '2020-12-21 12:00:00', '2020-12-22 12:00:00',\n", + " '2020-12-23 12:00:00', '2020-12-24 12:00:00',\n", + " '2020-12-25 12:00:00', '2020-12-26 12:00:00',\n", + " '2020-12-27 12:00:00', '2020-12-28 12:00:00',\n", + " '2020-12-29 12:00:00', '2020-12-30 12:00:00'],\n", + " dtype='datetime64[ns]', name='time', length=14965, freq=None))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>x</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-b6d64f61-3575-4e01-8538-8f1cec12d48d' class='xr-index-data-in' type='checkbox'/><label for='index-b6d64f61-3575-4e01-8538-8f1cec12d48d' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Float64Index([-5802250.0, -5801250.0, -5800250.0, -5799250.0, -5798250.0,\n", + " -5797250.0, -5796250.0, -5795250.0, -5794250.0, -5793250.0,\n", + " ...\n", + " -5528250.0, -5527250.0, -5526250.0, -5525250.0, -5524250.0,\n", + " -5523250.0, -5522250.0, -5521250.0, -5520250.0, -5519250.0],\n", + " dtype='float64', name='x', length=284))</pre></div></li><li class='xr-var-item'><div class='xr-index-name'><div>y</div></div><div class='xr-index-preview'>PandasIndex</div><div></div><input id='index-4afb51cc-5a1d-4aac-bd43-bd88fbb9d63a' class='xr-index-data-in' type='checkbox'/><label for='index-4afb51cc-5a1d-4aac-bd43-bd88fbb9d63a' title='Show/Hide index repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-index-data'><pre>PandasIndex(Float64Index([ -39000.0, -40000.0, -41000.0, -42000.0, -43000.0, -44000.0,\n", + " -45000.0, -46000.0, -47000.0, -48000.0,\n", + " ...\n", + " -613000.0, -614000.0, -615000.0, -616000.0, -617000.0, -618000.0,\n", + " -619000.0, -620000.0, -621000.0, -622000.0],\n", + " dtype='float64', name='y', length=584))</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-a8d95791-72ea-4fbd-b8d6-5c4d9d458c26' class='xr-section-summary-in' type='checkbox' checked><label for='section-a8d95791-72ea-4fbd-b8d6-5c4d9d458c26' class='xr-section-summary' >Attributes: <span>(7)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>Conventions :</span></dt><dd>CF-1.6</dd><dt><span>Version_data :</span></dt><dd>Daymet Data Version 4.0</dd><dt><span>Version_software :</span></dt><dd>Daymet Software Version 4.0</dd><dt><span>citation :</span></dt><dd>Please see http://daymet.ornl.gov/ for current Daymet data citation information</dd><dt><span>references :</span></dt><dd>Please see http://daymet.ornl.gov/ for current information on Daymet references</dd><dt><span>source :</span></dt><dd>Daymet Software Version 4.0</dd><dt><span>start_year :</span></dt><dd>1980</dd></dl></div></li></ul></div></div>" + ], + "text/plain": [ + "<xarray.Dataset>\n", + "Dimensions: (time: 14965, y: 584, x: 284, nv: 2)\n", + "Coordinates:\n", + " lat (y, x) float32 dask.array<chunksize=(584, 284), meta=np.ndarray>\n", + " lon (y, x) float32 dask.array<chunksize=(584, 284), meta=np.ndarray>\n", + " * time (time) datetime64[ns] 1980-01-01T12:00:00 ... 20...\n", + " * x (x) float32 -5.802e+06 -5.801e+06 ... -5.519e+06\n", + " * y (y) float32 -3.9e+04 -4e+04 ... -6.21e+05 -6.22e+05\n", + "Dimensions without coordinates: nv\n", + "Data variables:\n", + " dayl (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " lambert_conformal_conic int16 ...\n", + " prcp (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " srad (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " swe (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " time_bnds (time, nv) datetime64[ns] dask.array<chunksize=(365, 2), meta=np.ndarray>\n", + " tmax (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " tmin (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " vp (time, y, x) float32 dask.array<chunksize=(365, 584, 284), meta=np.ndarray>\n", + " yearday (time) int16 dask.array<chunksize=(365,), meta=np.ndarray>\n", + "Attributes:\n", + " Conventions: CF-1.6\n", + " Version_data: Daymet Data Version 4.0\n", + " Version_software: Daymet Software Version 4.0\n", + " citation: Please see http://daymet.ornl.gov/ for current Daymet ...\n", + " references: Please see http://daymet.ornl.gov/ for current informa...\n", + " source: Daymet Software Version 4.0\n", + " start_year: 1980" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "store = fsspec.get_mapper(asset.href)\n", + "ds = xr.open_zarr(store, **asset.extra_fields[\"xarray:open_kwargs\"])\n", + "ds" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "7a2c1ad6-1059-4025-a083-ca33f5c03293", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'cell_methods': 'area: mean',\n", + " 'grid_mapping': 'lambert_conformal_conic',\n", + " 'long_name': 'daylength',\n", + " 'units': 's'}" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "ds.dayl.attrs" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a477fa2-7434-4dd0-abb3-0a97da444eec", + "metadata": {}, + "outputs": [], + "source": [] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "3cb5d979-0bcc-4e47-83d1-b1b106f66b7b", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "users-users-pangeo", + "language": "python", + "name": "conda-env-users-users-pangeo-py" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.10.11" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}