Skip to content

Commit 762c4fb

Browse files
Google Earth Engine Community Authorscopybara-github
authored andcommitted
Add Oya estimation dataset and catalog to the public catalog on earth engine.
for brempong PiperOrigin-RevId: 828446459
1 parent 500e094 commit 762c4fb

File tree

6 files changed

+236
-0
lines changed

6 files changed

+236
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
local id = 'global_precipitation_nowcast';
2+
local subdir = id;
3+
4+
local description = importstr 'description.md';
5+
local ee_const = import 'earthengine_const.libsonnet';
6+
local ee = import 'earthengine.libsonnet';
7+
8+
local basename = 'catalog';
9+
local base_filename = basename + '.json';
10+
local base_url = ee_const.catalog_base + subdir + '/';
11+
local parent_url = ee_const.catalog_base + 'catalog.json';
12+
local self_url = base_url + base_filename;
13+
14+
{
15+
stac_version: ee_const.stac_version,
16+
type: ee_const.stac_type.catalog,
17+
id: id,
18+
title: id,
19+
description: description,
20+
links: [
21+
ee.link.root(),
22+
ee.link.parent(parent_url),
23+
ee.link.self_link(self_url),
24+
ee.link.child_collection('projects_global_precipitation_nowcast_assets_global_estimation', base_url),
25+
],
26+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Dataset of Quasi-Global Precipitation Estimates.
Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
local id = 'projects/global_precipitation_nowcast/assets/global_estimation';
2+
local subdir = 'global_precipitation_nowcast';
3+
4+
local ee_const = import 'earthengine_const.libsonnet';
5+
local ee = import 'earthengine.libsonnet';
6+
local spdx = import 'spdx.libsonnet';
7+
local units = import 'units.libsonnet';
8+
9+
local license = spdx.cc_by_4_0;
10+
11+
local basename = std.strReplace(id, '/', '_');
12+
local self_ee_catalog_url = ee_const.ee_catalog_url + basename;
13+
14+
{
15+
'gee:user_uploaded': true,
16+
id: id,
17+
title: 'Oya: Quasi-Global Precipitation Estimates',
18+
description: |||
19+
Oya is a quasi-global, high-resolution precipitation estimation dataset
20+
derived from geostationary (GEO) satellite observations.
21+
22+
The Oya model utilizes the full spectrum of visible and infrared (VIS-IR)
23+
channels from a constellation of GEO satellites — including GOES-16/18,
24+
Meteosat-9/10, and Himawari-8/9 — to generate precipitation estimates
25+
covering 60°N to 60°S.
26+
27+
To address the inherent data imbalance between rain and no-rain events,
28+
Oya employs a two-stage deep learning approach. It combines two U-Net
29+
models: one specialized for precipitation detection and another for
30+
Quantitative Precipitation Estimation (QPE). The models are
31+
trained using high-resolution GPM Combined Radar-Radiometer Algorithm
32+
(CORRA) v07 data as ground truth and are pre-trained on IMERG-Final
33+
retrievals to enhance robustness.
34+
35+
Oya demonstrates superior performance compared to existing operational
36+
GEO-based baselines, such as the PERSIANN DynamicInfrared Rain Rate
37+
(PDIR-Now) and the Convective Rainfall Rate (CRR), across all precipitation
38+
intensities. It also outperforms Passive Microwave (PMW) based products like
39+
the Integrated Multisatellite Retrievals for GPM (IMERG) Early and is
40+
competitive with research-grade products like IMERG Final, which has a
41+
3.5-month latency. This dataset includes a half-hourly historical record
42+
generated from 2004 with a spatial resolution of 5km.
43+
44+
Accurate precipitation data is critical for applications in agriculture,
45+
water resource management, and disaster preparedness, particularly in
46+
regions where ground-based observation networks are sparse.
47+
48+
For more details, see the associated paper: "Oya: Deep Learning for Accurate
49+
Global Precipitation Estimation".
50+
|||,
51+
'gee:categories': ['precipitation'],
52+
53+
keywords: [
54+
'weather',
55+
'climate',
56+
'geophysical',
57+
'gpm',
58+
'precipitation',
59+
// 'half_hourly',
60+
],
61+
62+
providers: [
63+
ee.producer_provider('Google', 'https://research.google/'),
64+
ee.host_provider(self_ee_catalog_url),
65+
],
66+
extent: ee.extent_global('2004-01-01T00:00:00Z', null),
67+
68+
// Summaries contain additional information specific to the dataset type.
69+
summaries: {
70+
gsd: [5000],
71+
'eo:bands': [
72+
{
73+
name: 'precipitation',
74+
description: 'Precipitation estimate',
75+
'gee:units': 'mm/hr'
76+
},
77+
],
78+
'gee:visualizations': [
79+
{
80+
display_name: 'Precipitation retrieval (mm/hr)',
81+
// Do not use too many significant digits.
82+
lookat: {lon: 0, lat: 0, zoom: 3},
83+
image_visualization: {
84+
band_vis: {
85+
min: [0],
86+
max: [150],
87+
bands: ['precipitation'],
88+
}
89+
},
90+
},
91+
],
92+
'gee:schema': [
93+
{
94+
name: 'ingestion_time_utc',
95+
description: 'The time of ingestion.',
96+
type: ee_const.var_type.string,
97+
},
98+
],
99+
},
100+
'gee:interval': {
101+
type: 'cadence',
102+
unit: 'minute',
103+
interval: 30,
104+
},
105+
106+
'gee:terms_of_use': ee.gee_terms_of_use(license),
107+
'gee:status': 'beta',
108+
'gee:type': ee_const.gee_type.image_collection,
109+
license: license.id,
110+
links: ee.standardLinks(subdir, id),
111+
type: ee_const.stac_type.collection,
112+
stac_version: ee_const.stac_version,
113+
stac_extensions: [
114+
ee_const.ext_eo,
115+
],
116+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
var imageCollection = ee.ImageCollection(
2+
"projects/global-precipitation-nowcast/assets/global_estimation"
3+
);
4+
5+
// Select a single estimate.
6+
var singleEstimate = imageCollection.filterDate('2022-12-30T12-00').first();
7+
// mask to remove 0 values
8+
var masked = singleEstimate.selfMask();
9+
10+
11+
// Display on map.
12+
var visParams = {
13+
min: 0,
14+
max: 15,
15+
palette: [
16+
'000096','0064ff', '00b4ff', '33db80', '9beb4a',
17+
'ffeb00', 'ffb300', 'ff6400', 'eb1e00', 'af0000'
18+
]
19+
};
20+
21+
Map.addLayer(
22+
masked,
23+
visParams,
24+
"Preciptation retrieval for 2022-12-30T12-00 in mm/hr"
25+
);
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
var imageCollection = ee.ImageCollection(
2+
"projects/global-precipitation-nowcast/assets/global_estimation"
3+
);
4+
5+
// Select a single estimate.
6+
var single_estimate = imageCollection.filterDate('2022-12-30T12-00').first();
7+
// mask to remove 0 values
8+
var masked = single_estimate.selfMask();
9+
10+
var lon = 8;
11+
var lat = 2;
12+
Map.setCenter(lon, lat, 2);
13+
14+
// Degrees in EPSG:4326
15+
var lon_delta = 50;
16+
var lat_delta = 50;
17+
// Width and height of the thumbnail image.
18+
var pixels = 256;
19+
20+
var areaOfInterest = ee.Geometry.Rectangle(
21+
[lon - lon_delta, lat - lat_delta, lon + lon_delta, lat + lat_delta], null,
22+
false);
23+
24+
25+
// Display on map.
26+
var visParams = {
27+
min: 0,
28+
max: 15,
29+
palette: [
30+
'000096','0064ff', '00b4ff', '33db80', '9beb4a',
31+
'ffeb00', 'ffb300', 'ff6400', 'eb1e00', 'af0000'
32+
]
33+
};
34+
35+
var imageVisualized = masked.visualize(visParams);
36+
37+
var countryOutlines = ee.FeatureCollection('USDOS/LSIB_SIMPLE/2017');
38+
var outlinesStyle = {
39+
fillColor: 'FFFFFF',
40+
color: '000000',
41+
width: 2,
42+
};
43+
var countries = countryOutlines.style(outlinesStyle);
44+
var landWaterBackground = countries.visualize();
45+
46+
// Combine the precipitation visualization with the country outlines.
47+
var combinedVisual = landWaterBackground.blend(imageVisualized);
48+
49+
Map.addLayer(combinedVisual, {}, 'Precipitation with country boundaries');
50+
51+
var imageParams = {
52+
dimensions: [pixels, pixels],
53+
region: areaOfInterest,
54+
crs: 'EPSG:4326',
55+
format: 'png',
56+
};
57+
58+
print(ui.Thumbnail({image: combinedVisual, params: imageParams}));
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"id": "global_precipitation_nowcast",
3+
"homeBucket": "projects/global_precipitation_nowcast",
4+
"name": "Oya",
5+
"description": "Oya is a quasi-global, high-resolution precipitation estimation dataset derived from geostationary (GEO) satellite observations.",
6+
"type": "PUBLISHER",
7+
"link": "https://research.google",
8+
"contactDisplay": "oya-team@google.com",
9+
"contactLink": "mailto:oya-team@google.com"
10+
}

0 commit comments

Comments
 (0)