Skip to content

Commit 84bc983

Browse files
committed
added datasets & updates
- added NOAA NGS Emergency Response Imagery
1 parent e3492d1 commit 84bc983

File tree

10 files changed

+356
-0
lines changed

10 files changed

+356
-0
lines changed

awesome-gee-catalog-examples.zip

13.9 KB
Binary file not shown.
Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
// Load ICESAT CHM (Canopy Height Model) dataset
2+
var imageCollection = ee.ImageCollection("projects/sat-io/open-datasets/ICESAT/CHM_CONUS");
3+
4+
// Get the first image to inspect properties
5+
var firstImage = imageCollection.first();
6+
7+
// Print native resolution information
8+
print('Dataset Information:', {
9+
'Band Names': firstImage.bandNames(),
10+
'Projection': firstImage.projection(),
11+
'Native Resolution (meters)': firstImage.projection().nominalScale(),
12+
'Image Count': imageCollection.size()
13+
});
14+
15+
// Create mosaic from collection
16+
var chmMosaic = imageCollection.mosaic();
17+
18+
// Apply scale and offset
19+
var scale = 0.1;
20+
var offset = 0;
21+
var chmScaled = chmMosaic.multiply(scale).add(offset);
22+
23+
// Define color palette (green scale for canopy height)
24+
var palette = [
25+
"#ceecc7", "#aedea7", "#88cd86",
26+
"#5fb96b", "#37a055", "#1d843f", "#00682a", "#00441b"
27+
];
28+
29+
// Visualization parameters with 0-30m stretch
30+
var visParams = {
31+
min: 0,
32+
max: 30,
33+
palette: palette
34+
};
35+
36+
// Add layer to map
37+
Map.addLayer(chmScaled, visParams, 'Canopy Height Model');
38+
39+
// Center map on the data
40+
Map.setCenter(-99.75, 39.73,4)
41+
42+
// Add a legend with title
43+
var legend = ui.Panel({
44+
style: {
45+
position: 'bottom-left',
46+
padding: '8px 15px'
47+
}
48+
});
49+
50+
var legendTitle = ui.Label({
51+
value: 'Canopy Height (m)',
52+
style: {fontWeight: 'bold', fontSize: '14px', margin: '0 0 4px 0'}
53+
});
54+
legend.add(legendTitle);
55+
56+
// Create horizontal continuous color bar
57+
var lon = ee.Image.pixelLonLat().select('latitude');
58+
var gradient = lon.multiply((palette.length - 1) / 180.0).add(palette.length / 2);
59+
var legendImage = gradient.visualize({min: 0, max: palette.length - 1, palette: palette});
60+
61+
// Create thumbnail for the legend
62+
var thumbnail = ui.Thumbnail({
63+
image: legendImage,
64+
params: {bbox: [0, 0, 1, 0.1], dimensions: '200x20'},
65+
style: {stretch: 'horizontal', margin: '0px 8px'}
66+
});
67+
68+
legend.add(thumbnail);
69+
70+
// Add min and max labels
71+
var labelPanel = ui.Panel({
72+
widgets: [
73+
ui.Label('0 m', {margin: '4px 8px', fontSize: '12px'}),
74+
ui.Label('30 m', {margin: '4px 8px', fontSize: '12px', textAlign: 'right', stretch: 'horizontal'})
75+
],
76+
layout: ui.Panel.Layout.Flow('horizontal')
77+
});
78+
79+
legend.add(labelPanel);
80+
81+
Map.add(legend);
82+
var snazzy = require("users/aazuspan/snazzy:styles");
83+
snazzy.addStyle("https://snazzymaps.com/style/15/subtle-grayscale", "Greyscale");
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
// NOAA NGS Emergency Response Imagery - Hurricane Melissa
2+
// 15cm aerial resolution, 8-bit RGB imagery
3+
// Dataset: Hurricane Melissa 2025 - Jamaica
4+
5+
// Load the image collection
6+
var dataset = ee.ImageCollection('projects/sat-io/open-datasets/NOAA_EVENTS/2025_HURRICANE_MELISSA');
7+
8+
// Select RGB bands (ignore b4 alpha band)
9+
var collection = dataset.select(['b1', 'b2', 'b3']);
10+
11+
print('Total Images:', collection.size());
12+
13+
// RGB visualization parameters
14+
var rgbVis = {
15+
min: 0,
16+
max: 255,
17+
bands: ['b1', 'b2', 'b3']
18+
};
19+
20+
// Center on the collection
21+
Map.setCenter(-77.357, 18.1256, 9);
22+
23+
// Function to add date property
24+
function addDateProperty(image) {
25+
var date = ee.Date(image.get('system:time_start'));
26+
var dateString = date.format('YYYY-MM-dd');
27+
return image.set('date', dateString);
28+
}
29+
30+
var collectionWithDates = collection.map(addDateProperty);
31+
32+
// Get unique dates
33+
var dates = collectionWithDates.aggregate_array('date').distinct().sort();
34+
35+
print('Acquisition Dates:', dates);
36+
37+
// Add one layer for each date
38+
dates.evaluate(function(dateList) {
39+
dateList.forEach(function(date) {
40+
var dailyImages = collectionWithDates.filter(ee.Filter.eq('date', date));
41+
var mosaic = dailyImages.mosaic();
42+
43+
dailyImages.size().evaluate(function(count) {
44+
Map.addLayer(mosaic, rgbVis, date + ' (' + count + ' images)');
45+
});
46+
});
47+
});
48+
49+
var snazzy = require("users/aazuspan/snazzy:styles");
50+
snazzy.addStyle("https://snazzymaps.com/style/15/subtle-grayscale", "Greyscale");
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
// ===================================================================
2+
// Global Renewables Watch - Wind and Solar Energy Visualization
3+
// Dataset: Microsoft AI for Good & The Nature Conservancy
4+
// ===================================================================
5+
6+
// Load the datasets
7+
var wind = ee.FeatureCollection("projects/sat-io/open-datasets/GRW/WIND_V1");
8+
var solar = ee.FeatureCollection("projects/sat-io/open-datasets/GRW/SOLAR_V1");
9+
10+
// Print dataset information
11+
print('Wind Sample Property Names:', wind.first().propertyNames());
12+
print('Solar Sample Property Names:', solar.first().propertyNames());
13+
14+
// Add layers to map
15+
Map.addLayer(wind, {color:'#00e5ff'}, 'Wind Turbines', true, 0.6);
16+
Map.addLayer(solar, {color: '#ff9100'}, 'Solar Installations', true);
17+
18+
19+
// Create a chart showing growth over time (approximate based on construction year)
20+
var windChart = ui.Chart.feature.histogram({
21+
features: wind,
22+
property: 'construction_year'
23+
}).setOptions({
24+
title: 'Wind Turbine Construction Timeline',
25+
hAxis: {title: 'Construction Date'},
26+
vAxis: {title: 'Number of Turbines'},
27+
colors: ['#00f5ff']
28+
});
29+
30+
var solarChart = ui.Chart.feature.histogram({
31+
features: solar,
32+
property: 'construction_year'
33+
}).setOptions({
34+
title: 'Solar Installation Construction Timeline',
35+
hAxis: {title: 'Construction Date'},
36+
vAxis: {title: 'Number of Installations'},
37+
colors: ['#ffd700']
38+
});
39+
40+
print(windChart);
41+
print(solarChart);
42+
43+
// ===================================================================
44+
// MAP SETTINGS
45+
// ===================================================================
46+
47+
// Center on global view
48+
Map.setCenter(-6.0242, 36.5312, 8);
49+
50+
// Add layer control
51+
Map.setControlVisibility({all: true});
52+
53+
// Create legend
54+
var legend = ui.Panel({
55+
style: {
56+
position: 'bottom-left',
57+
padding: '8px 15px',
58+
backgroundColor: 'white'
59+
}
60+
});
61+
62+
var legendTitle = ui.Label({
63+
value: 'Global Renewables Watch',
64+
style: {
65+
fontWeight: 'bold',
66+
fontSize: '16px',
67+
margin: '0 0 4px 0'
68+
}
69+
});
70+
71+
var windLegend = ui.Label({
72+
value: '● Wind Turbines ('+wind.size().getInfo().toLocaleString()+')',
73+
style: {color: '#00e5ff', margin: '2px 0'}
74+
});
75+
76+
var solarLegend = ui.Label({
77+
value: '■ Solar Installations ('+solar.size().getInfo().toLocaleString()+')',
78+
style: {color: '#ff9100', margin: '2px 0'}
79+
});
80+
81+
var dataInfo = ui.Label({
82+
value: 'Data: 2017 Q4 - 2024 Q2',
83+
style: {fontSize: '11px', color: '#666', margin: '4px 0 0 0'}
84+
});
85+
86+
legend.add(legendTitle);
87+
legend.add(windLegend);
88+
legend.add(solarLegend);
89+
legend.add(dataInfo);
90+
91+
Map.add(legend);
92+
93+
94+
var snazzy = require("users/aazuspan/snazzy:styles");
95+
snazzy.addStyle("https://snazzymaps.com/style/38/shades-of-grey", "Greyscale");

community_datasets.json

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24340,6 +24340,18 @@
2434024340
"thematic_group": "Global Events Layers",
2434124341
"thumbnail": "https://gee-community-catalog.org/thumbnails/maxar_opendata.png"
2434224342
},
24343+
{
24344+
"title": "NOAA NGS Emergency Response Imagery: Hurricane Melissa 2025",
24345+
"sample_code": "https://code.earthengine.google.com/?scriptPath=users/sat-io/awesome-gee-catalog-examples:global-events-layers/NOAA-NGS-ERI-IMAGERY",
24346+
"type": "image_collection",
24347+
"id": "projects/sat-io/open-datasets/NOAA_EVENTS/2025_HURRICANE_MELISSA",
24348+
"provider": "NOAA National Geodetic Survey",
24349+
"tags": "Emergency Response, Hurricane, Aerial Imagery, Natural Disasters, NOAA, NGS, Coastal Zones, Jamaica, Caribbean",
24350+
"license": "Creative Commons Zero v1.0 Universal",
24351+
"docs": "https://gee-community-catalog.org/projects/noaa_ngs_eri/",
24352+
"thematic_group": "Global Events Layers",
24353+
"thumbnail": "https://gee-community-catalog.org/thumbnails/noaa_ngs_eri.png"
24354+
},
2434324355
{
2434424356
"title": "OpenBuildingMap Global Building Footprints with Semantic Information Sample Grid",
2434524357
"sample_code": "https://code.earthengine.google.com/?scriptPath=users/sat-io/awesome-gee-catalog-examples:global-utilities-assets-amenities/OPEN-BUILDING-MAP",

docs/changelog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
#### updated 2025-12-14
77
- Added [ICESat-2 Derived Canopy Height Model (IS2CHM](https://gee-community-catalog.org/projects/is2chm/)
8+
- Added [NOAA NGS Emergency Response Imagery](https://gee-community-catalog.org/projects/noaa_ngs_eri)
89
- Updated [TIGER Roads Time Series now includes 2009-2025](https://gee-community-catalog.org/projects/tiger_roads)
910
- Updated Weekly updates to [USDM drought monitor](https://gee-community-catalog.org/projects/usdm/)
1011

docs/images/noaa_ngs_eri.gif

9.93 MB
Loading

docs/projects/noaa_ngs_eri.md

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# NOAA NGS Emergency Response Imagery
2+
3+
The NOAA National Geodetic Survey (NGS) Remote Sensing Division operates the Emergency Response Imagery (ERI) Program to rapidly acquire airborne imagery following natural disasters. Missions are prioritized to collect time-sensitive data over impacted coastal zones to support response, recovery, and situational awareness. Imagery is collected as soon as weather and flight conditions permit and released publicly as quickly as possible.
4+
5+
This aerial imagery was acquired by the NOAA Remote Sensing Division to support NOAA national security and emergency response requirements. The aerial imagery primarily supports NOAA interests including safety of navigation, HAZMAT and marine debris impacts, and coastal zone management activities. The data are not intended for mapping, charting, or navigation and are not suitable for litigation. The imagery is also used for research and development of airborne digital imagery standards.
6+
7+
#### Hurricane Melissa (2025)
8+
9+
Aerial imagery was acquired following Hurricane Melissa in targeted areas in Jamaica. The aerial photography missions were conducted by the NOAA Remote Sensing Division. The images were acquired using a Digital Sensor System (DSS) version 6.
10+
11+
12+
#### Sample Dataset Details (Hurricane Melissa)
13+
14+
<center>
15+
16+
| **Parameter** | **Details** |
17+
|------------------------------|--------------------------------------------------|
18+
| **Sensor** | Digital Sensor System (DSS) Version 6 |
19+
| **Platform** | Airplane |
20+
| **Spectral Information** | Natural color (RGB) |
21+
| **Ground Sample Distance** | Approximately 15–30 cm |
22+
| **Image Format** | 8-bit RGB |
23+
| **Image Tile Size** | Approximately 2.5 km by 2.5 km |
24+
| **Horizontal Accuracy** | Estimated 3–5 meters (minimal topographic relief)|
25+
| **Temporal Coverage** | 31 October 2025 - 6 November 2025 |
26+
27+
</center>
28+
29+
#### Citation
30+
31+
```
32+
National Geodetic Survey, 2025: 2025 NOAA NGS Emergency Response Imagery: Hurricane Melissa.
33+
https://www.fisheries.noaa.gov/inport/item/78480
34+
```
35+
36+
#### Use Constraints
37+
38+
Users should be aware that temporal changes may have occurred since data collection. The dataset may not represent current ground conditions and should not be used for critical applications or litigation.
39+
40+
![IS2CHM](../images/noaa_ngs_eri.gif)
41+
42+
#### Earth Engine Snippet
43+
44+
```js
45+
// Load the image collection
46+
var dataset = ee.ImageCollection('projects/sat-io/open-datasets/NOAA_EVENTS/2025_HURRICANE_MELISSA');
47+
48+
// Select RGB bands (ignore b4 alpha band)
49+
var collection = dataset.select(['b1', 'b2', 'b3']);
50+
51+
print('Total Images:', collection.size());
52+
53+
// RGB visualization parameters
54+
var rgbVis = {
55+
min: 0,
56+
max: 255,
57+
bands: ['b1', 'b2', 'b3']
58+
};
59+
60+
// Center on the collection
61+
Map.setCenter(-77.357, 18.1256, 9);
62+
63+
// Function to add date property
64+
function addDateProperty(image) {
65+
var date = ee.Date(image.get('system:time_start'));
66+
var dateString = date.format('YYYY-MM-dd');
67+
return image.set('date', dateString);
68+
}
69+
70+
var collectionWithDates = collection.map(addDateProperty);
71+
72+
// Get unique dates
73+
var dates = collectionWithDates.aggregate_array('date').distinct().sort();
74+
75+
print('Acquisition Dates:', dates);
76+
77+
// Add one layer for each date
78+
dates.evaluate(function(dateList) {
79+
dateList.forEach(function(date) {
80+
var dailyImages = collectionWithDates.filter(ee.Filter.eq('date', date));
81+
var mosaic = dailyImages.mosaic();
82+
83+
dailyImages.size().evaluate(function(count) {
84+
Map.addLayer(mosaic, rgbVis, date + ' (' + count + ' images)');
85+
});
86+
});
87+
});
88+
```
89+
90+
Sample Code: https://code.earthengine.google.com/?scriptPath=users/sat-io/awesome-gee-catalog-examples:global-events-layers/NOAA-NGS-ERI-IMAGERY
91+
92+
#### Additional Event Imagery
93+
94+
More emergency response imagery from other events will be continuously added to the NOAA_EVENTS folder. To discover all available event collections, you can list the assets programmatically
95+
96+
```js
97+
// List all available event imagery collections
98+
var collections = ee.data.listAssets("projects/sat-io/open-datasets/NOAA_EVENTS");
99+
print(collections['assets']);
100+
```
101+
102+
This will return all hurricane and disaster event imagery datasets currently available in the collection.
103+
104+
#### License
105+
106+
These data were produced by NOAA and are not subject to copyright protection in the United States. NOAA waives any potential copyright and related rights worldwide under the Creative Commons Zero 1.0 Universal Public Domain Dedication (CC0-1.0).
107+
108+
Keywords: Emergency Response, Hurricane, Aerial Imagery, Natural Disasters, NOAA, NGS, Coastal Zones, Jamaica, Caribbean
109+
110+
Provided by: NOAA National Geodetic Survey
111+
112+
Curated in GEE by: Samapriya Roy
113+
114+
Last updated: 2025-12-15

docs/thumbnails/noaa_ngs_eri.png

143 KB
Loading

mkdocs.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -487,6 +487,7 @@ nav:
487487
- "Global Events Layers":
488488
- Global large flood events (1985-2016): projects/flood.md
489489
- Global Landslide Catalog (1970-2019): projects/landslide.md
490+
- NOAA NGS Emergency Response Imagery: projects/noaa_ngs_eri.md
490491
- MAXAR Open Data Events: projects/maxar_opendata.md
491492
- Wyvern Open Data: projects/wyvern.md
492493
- Planet Tanager Open Data: projects/tanager.md

0 commit comments

Comments
 (0)