mirror of
https://github.com/OpenSpace/OpenSpace.git
synced 2026-01-01 17:20:09 -06:00
Merge branch 'master' into project/climate
This commit is contained in:
35
Jenkinsfile
vendored
35
Jenkinsfile
vendored
@@ -110,12 +110,12 @@ linux_gcc_make: {
|
||||
cmakeCompileOptions += ' -DCMAKE_BUILD_TYPE=Release -DCMAKE_CXX_FLAGS:STRING="-DGLM_ENABLE_EXPERIMENTAL"';
|
||||
cmakeCompileOptions += ' -DOpenGL_GL_PREFERENCE:STRING=GLVND -DASSIMP_BUILD_MINIZIP=1';
|
||||
// Not sure why the linking of OpenSpaceTest takes so long
|
||||
compileHelper.build(compileHelper.Make(), compileHelper.Gcc(), cmakeCompileOptions, 'OpenSpace', 'build-make');
|
||||
compileHelper.build(compileHelper.Make(), compileHelper.Gcc(), cmakeCompileOptions, '', 'build-make');
|
||||
compileHelper.recordCompileIssues(compileHelper.Gcc());
|
||||
}
|
||||
stage('linux-gcc-make/test') {
|
||||
// testHelper.runUnitTests('build/OpenSpaceTest');
|
||||
// testHelper.runUnitTests('bin/codegentest')
|
||||
testHelper.runUnitTests('bin/OpenSpaceTest');
|
||||
testHelper.runUnitTests('bin/codegentest')
|
||||
}
|
||||
cleanWs()
|
||||
} // node('linux')
|
||||
@@ -132,11 +132,11 @@ linux_gcc_ninja: {
|
||||
def cmakeCompileOptions = moduleCMakeFlags();
|
||||
cmakeCompileOptions += '-DMAKE_BUILD_TYPE=Release';
|
||||
// Not sure why the linking of OpenSpaceTest takes so long
|
||||
compileHelper.build(compileHelper.Ninja(), compileHelper.Gcc(), cmakeCompileOptions, 'OpenSpace', 'build-ninja');
|
||||
compileHelper.build(compileHelper.Ninja(), compileHelper.Gcc(), cmakeCompileOptions, '', 'build-ninja');
|
||||
}
|
||||
stage('linux-gcc-ninja/test') {
|
||||
// testHelper.runUnitTests('build/OpenSpaceTest');
|
||||
// testHelper.runUnitTests('bin/codegentest')
|
||||
testHelper.runUnitTests('bin/OpenSpaceTest');
|
||||
testHelper.runUnitTests('bin/codegentest')
|
||||
}
|
||||
cleanWs()
|
||||
} // node('linux')
|
||||
@@ -153,12 +153,12 @@ linux_clang_make: {
|
||||
def cmakeCompileOptions = moduleCMakeFlags()
|
||||
cmakeCompileOptions += ' -DMAKE_BUILD_TYPE=Release'
|
||||
// Not sure why the linking of OpenSpaceTest takes so long
|
||||
compileHelper.build(compileHelper.Make(), compileHelper.Clang(), cmakeCompileOptions, 'OpenSpace', 'build-make');
|
||||
compileHelper.build(compileHelper.Make(), compileHelper.Clang(), cmakeCompileOptions, '', 'build-make');
|
||||
compileHelper.recordCompileIssues(compileHelper.Clang());
|
||||
}
|
||||
stage('linux-clang-make/test') {
|
||||
// testHelper.runUnitTests('build/OpenSpaceTest');
|
||||
// testHelper.runUnitTests('bin/codegentest')
|
||||
testHelper.runUnitTests('bin/OpenSpaceTest');
|
||||
testHelper.runUnitTests('bin/codegentest')
|
||||
}
|
||||
cleanWs()
|
||||
} // node('linux')
|
||||
@@ -175,11 +175,11 @@ linux_clang_ninja: {
|
||||
def cmakeCompileOptions = moduleCMakeFlags()
|
||||
cmakeCompileOptions += '-DMAKE_BUILD_TYPE=Release'
|
||||
// Not sure why the linking of OpenSpaceTest takes so long
|
||||
compileHelper.build(compileHelper.Ninja(), compileHelper.Clang(), cmakeCompileOptions, 'OpenSpace', 'build-ninja');
|
||||
compileHelper.build(compileHelper.Ninja(), compileHelper.Clang(), cmakeCompileOptions, '', 'build-ninja');
|
||||
}
|
||||
stage('linux-clang-ninja/test') {
|
||||
// testHelper.runUnitTests('build/OpenSpaceTest');
|
||||
// testHelper.runUnitTests('bin/codegentest')
|
||||
testHelper.runUnitTests('bin/OpenSpaceTest');
|
||||
testHelper.runUnitTests('bin/codegentest')
|
||||
}
|
||||
cleanWs()
|
||||
} // node('linux')
|
||||
@@ -197,8 +197,7 @@ windows_msvc: {
|
||||
compileHelper.recordCompileIssues(compileHelper.VisualStudio());
|
||||
}
|
||||
stage('windows-msvc/test') {
|
||||
// Currently, the unit tests are failing on Windows
|
||||
// testHelper.runUnitTests('bin\\Debug\\OpenSpaceTest')
|
||||
testHelper.runUnitTests('bin\\Debug\\OpenSpaceTest')
|
||||
testHelper.runUnitTests('bin\\Debug\\codegentest')
|
||||
}
|
||||
cleanWs()
|
||||
@@ -236,8 +235,8 @@ macos_make: {
|
||||
compileHelper.build(compileHelper.Make(), compileHelper.Clang(), moduleCMakeFlags(), '', 'build-make');
|
||||
}
|
||||
stage('macos-make/test') {
|
||||
// Currently, the unit tests are crashing on OS X
|
||||
// testHelper.runUnitTests('build/Debug/OpenSpaceTest')
|
||||
testHelper.runUnitTests('bin/Debug/OpenSpaceTest')
|
||||
testHelper.runUnitTests('bin/Debug/codegentest')
|
||||
}
|
||||
cleanWs()
|
||||
} // node('macos')
|
||||
@@ -254,8 +253,8 @@ macos_xcode: {
|
||||
compileHelper.build(compileHelper.Xcode(), compileHelper.Xcode(), moduleCMakeFlags(), '', 'build-xcode');
|
||||
}
|
||||
stage('macos-xcode/test') {
|
||||
// Currently, the unit tests are crashing on OS X
|
||||
// testHelper.runUnitTests('build/Debug/OpenSpaceTest')
|
||||
testHelper.runUnitTests('bin/Debug/OpenSpaceTest')
|
||||
testHelper.runUnitTests('bin/Debug/codegentest')
|
||||
}
|
||||
cleanWs()
|
||||
} // node('macos')
|
||||
|
||||
@@ -546,7 +546,7 @@ void ActionDialog::actionSaved() {
|
||||
// If we got this far, we have a new identifier and it is a new one, so we need to
|
||||
// update other keybinds now
|
||||
ghoul_assert(
|
||||
_keybindingWidgets.list->count() == _keybindingsData.size(),
|
||||
_keybindingWidgets.list->count() == static_cast<int>(_keybindingsData.size()),
|
||||
"The list and data got out of sync"
|
||||
);
|
||||
for (int i = 0; i < _keybindingWidgets.list->count(); ++i) {
|
||||
|
||||
@@ -419,15 +419,15 @@ void PropertiesDialog::selectLineFromScriptLog() {
|
||||
// openspace.setPropertyValue('prop', value);
|
||||
|
||||
if (text.startsWith("openspace.setPropertyValueSingle")) {
|
||||
using namespace std::string_view_literals;
|
||||
_commandCombo->setCurrentIndex(0);
|
||||
text = text.mid("openspace.setPropertyValueSingle"sv.size() + 1); // +1 for (
|
||||
std::string_view prefix = "openspace.setPropertyValueSingle";
|
||||
text = text.mid(static_cast<int>(prefix.size()) + 1); // +1 for (
|
||||
}
|
||||
else {
|
||||
// command == "openspace.setPropertyValue"
|
||||
using namespace std::string_view_literals;
|
||||
_commandCombo->setCurrentIndex(1);
|
||||
text = text.mid("openspace.setPropertyValue"sv.size() + 1); // +1 for (
|
||||
std::string_view prefix = "openspace.setPropertyValue";
|
||||
text = text.mid(static_cast<int>(prefix.size()) + 1); // +1 for (
|
||||
}
|
||||
|
||||
// Remove everything past the closing brace
|
||||
|
||||
Submodule apps/OpenSpace/ext/sgct updated: 15c2a977e1...9289476ad3
@@ -1138,10 +1138,21 @@ int main(int argc, char* argv[]) {
|
||||
std::filesystem::path base = configurationFilePath.parent_path();
|
||||
FileSys.registerPathToken("${BASE}", base);
|
||||
|
||||
// For now, we just initialize glfw since we can't execute anything meaningfully
|
||||
// after SGCT initializes glfw. There is a bit of startup delay because of this,
|
||||
// but it shouldn't be too bad
|
||||
glfwInit();
|
||||
GLFWmonitor* m = glfwGetPrimaryMonitor();
|
||||
const GLFWvidmode* mode = glfwGetVideoMode(m);
|
||||
glm::ivec2 size = glm::ivec2(mode->width, mode->height);
|
||||
glfwTerminate();
|
||||
|
||||
|
||||
// Loading configuration from disk
|
||||
LDEBUG("Loading configuration from disk");
|
||||
*global::configuration = configuration::loadConfigurationFromFile(
|
||||
configurationFilePath.string(),
|
||||
size,
|
||||
commandlineArguments.configurationOverride
|
||||
);
|
||||
|
||||
|
||||
@@ -77,6 +77,11 @@ int main(int argc, char** argv) {
|
||||
)
|
||||
);
|
||||
|
||||
ghoul::logging::LogManager::initialize(
|
||||
ghoul::logging::LogLevel::Debug,
|
||||
ghoul::logging::LogManager::ImmediateFlush::Yes
|
||||
);
|
||||
|
||||
commandlineParser.setCommandLine(arguments);
|
||||
commandlineParser.execute();
|
||||
|
||||
@@ -98,10 +103,6 @@ int main(int argc, char** argv) {
|
||||
|
||||
settings.changeHostPassword = defaultChangeHostPassword.str();
|
||||
}
|
||||
ghoul::logging::LogManager::initialize(
|
||||
ghoul::logging::LogLevel::Debug,
|
||||
ghoul::logging::LogManager::ImmediateFlush::Yes
|
||||
);
|
||||
LINFO(fmt::format("Connection password: {}", settings.password));
|
||||
LINFO(fmt::format("Host password: {}", settings.changeHostPassword));
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ local wmap = {
|
||||
Texture = textures .. "wmap_ilc_7yr_v4_200uK_RGB_sos.png",
|
||||
Orientation = "Both",
|
||||
MirrorTexture = true,
|
||||
UseAdditiveBlending = true,
|
||||
RenderBinMode = "PreDeferredTransparent",
|
||||
FadeInThreshold = 0.4
|
||||
},
|
||||
GUI = {
|
||||
@@ -55,7 +55,7 @@ local cbe = {
|
||||
Texture = textures .. "COBErect.png",
|
||||
Orientation = "Both",
|
||||
MirrorTexture = true,
|
||||
UseAdditiveBlending = true,
|
||||
RenderBinMode = "PreDeferredTransparent",
|
||||
FadeInThreshold = 0.4
|
||||
},
|
||||
GUI = {
|
||||
@@ -81,7 +81,7 @@ local planck = {
|
||||
Texture = textures .. "cmb4k.jpg",
|
||||
Orientation = "Both",
|
||||
MirrorTexture = true,
|
||||
UseAdditiveBlending = true,
|
||||
RenderBinMode = "PreDeferredTransparent",
|
||||
FadeInThreshold = 0.4
|
||||
},
|
||||
GUI = {
|
||||
@@ -107,7 +107,7 @@ local Halpha = {
|
||||
Opacity = 0.4,
|
||||
Texture = textures .. "mwHalpha-f.png",
|
||||
Orientation = "Inside",
|
||||
UseAdditiveBlending = true,
|
||||
RenderBinMode = "PreDeferredTransparent",
|
||||
MirrorTexture = true,
|
||||
FadeOutThreshold = 0.025,
|
||||
Background = true
|
||||
|
||||
@@ -26,7 +26,7 @@ local multiverse_planck_1 = {
|
||||
Texture = textures .. "cmb4k.jpg",
|
||||
Orientation = "Both",
|
||||
MirrorTexture = true,
|
||||
UseAdditiveBlending = true,
|
||||
RenderBinMode = "PreDeferredTransparent",
|
||||
FadeInThreshold = 0.4
|
||||
},
|
||||
GUI = {
|
||||
@@ -56,7 +56,7 @@ local multiverse_planck_2 = {
|
||||
Texture = textures .. "cmb4k.jpg",
|
||||
Orientation = "Both",
|
||||
MirrorTexture = true,
|
||||
UseAdditiveBlending = true,
|
||||
RenderBinMode = "PreDeferredTransparent",
|
||||
FadeInThreshold = 0.4
|
||||
},
|
||||
GUI = {
|
||||
@@ -86,7 +86,7 @@ local multiverse_planck_3 = {
|
||||
Texture = textures .. "cmb4k.jpg",
|
||||
Orientation = "Both",
|
||||
MirrorTexture = true,
|
||||
UseAdditiveBlending = true,
|
||||
RenderBinMode = "PreDeferredTransparent",
|
||||
FadeInThreshold = 0.4
|
||||
},
|
||||
GUI = {
|
||||
@@ -116,7 +116,7 @@ local multiverse_planck_4 = {
|
||||
Texture = textures .. "cmb4k.jpg",
|
||||
Orientation = "Both",
|
||||
MirrorTexture = true,
|
||||
UseAdditiveBlending = true,
|
||||
RenderBinMode = "PreDeferredTransparent",
|
||||
FadeInThreshold = 0.4
|
||||
},
|
||||
GUI = {
|
||||
|
||||
@@ -21,7 +21,7 @@ local sphere = {
|
||||
Opacity = 0.35,
|
||||
Texture = sphereTextures .. "DarkUniverse_mellinger_4k.jpg",
|
||||
Orientation = "Inside",
|
||||
UseAdditiveBlending = true,
|
||||
RenderBinMode = "PreDeferredTransparent",
|
||||
MirrorTexture = true,
|
||||
FadeOutThreshold = 0.0015,
|
||||
Background = true
|
||||
|
||||
@@ -19,7 +19,7 @@ local object = {
|
||||
Segments = 40,
|
||||
Opacity = 0.4,
|
||||
Texture = textures .. "eso0932a_blend.png",
|
||||
UseAdditiveBlending = true,
|
||||
RenderBinMode = "PreDeferredTransparent",
|
||||
Orientation = "Inside",
|
||||
MirrorTexture = true,
|
||||
FadeOutThreshold = 0.01,
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
asset.require("spice/base")
|
||||
local sunTransforms = asset.require("scene/solarsystem/sun/transforms")
|
||||
local mars = asset.require("scene/solarsystem/planets/mars/mars")
|
||||
|
||||
local models = asset.syncedResource({
|
||||
Name = "Insight Models Chutes",
|
||||
@@ -155,7 +156,7 @@ local RotationKeyframes = {
|
||||
|
||||
local InsightParent = {
|
||||
Identifier = "InsightParent",
|
||||
Parent = "Mars",
|
||||
Parent = mars.Identifier,
|
||||
Transform = {
|
||||
Translation ={
|
||||
Type = "TimelineTranslation",
|
||||
@@ -740,7 +741,7 @@ local Insight_Panels_Deployed_tex2 = {
|
||||
Start = panelDeployTime,
|
||||
},
|
||||
GUI = {
|
||||
Hidden = true,
|
||||
-- Hidden = true,
|
||||
Name = "Insight panels_deploy_tex2",
|
||||
Path = "/Solar System/Missions/Insight"
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ local JWSTBand = {
|
||||
DisableFadeInOut = true,
|
||||
Orientation = "Inside",
|
||||
Opacity = 0.05,
|
||||
UseAdditiveBlending = true,
|
||||
RenderBinMode = "PreDeferredTransparent",
|
||||
},
|
||||
Tag = { "mission_jwst_fov" },
|
||||
GUI = {
|
||||
|
||||
@@ -20,7 +20,7 @@ local L1 = {
|
||||
Parent = transforms.SolarSystemBarycenter.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
RenderableType = "Opaque",
|
||||
RenderBinMode = "Opaque",
|
||||
Billboard = true,
|
||||
Size = 700E5,
|
||||
Texture = circle .. "circle.png",
|
||||
|
||||
@@ -20,7 +20,7 @@ local L2Small = {
|
||||
Parent = transforms.SolarSystemBarycenter.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
RenderableType = "Opaque",
|
||||
RenderBinMode = "Opaque",
|
||||
Billboard = true,
|
||||
Size = 400E4,
|
||||
Texture = circle .. "circle.png",
|
||||
@@ -46,7 +46,7 @@ local L2 = {
|
||||
Parent = transforms.SolarSystemBarycenter.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
RenderableType = "Opaque",
|
||||
RenderBinMode = "Opaque",
|
||||
Billboard = true,
|
||||
Size = 700E5,
|
||||
Texture = circle .. "circle.png",
|
||||
|
||||
@@ -20,7 +20,7 @@ local L4 = {
|
||||
Parent = transforms.SolarSystemBarycenter.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
RenderableType = "Opaque",
|
||||
RenderBinMode = "Opaque",
|
||||
Billboard = true,
|
||||
Size = 800E6,
|
||||
Texture = circle .. "circle.png",
|
||||
|
||||
@@ -20,7 +20,7 @@ local L5 = {
|
||||
Parent = transforms.SolarSystemBarycenter.Identifier,
|
||||
Renderable = {
|
||||
Type = "RenderablePlaneImageLocal",
|
||||
RenderableType = "Opaque",
|
||||
RenderBinMode = "Opaque",
|
||||
Billboard = true,
|
||||
Size = 800E6,
|
||||
Texture = circle .. "circle.png",
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Carbon Monoxide - 2000"
|
||||
local Identifier = "noaa-sos-atmosphere-carbon_monoxide"
|
||||
local Description = [[ Carbon monoxide is known as "The Silent Killer" because it is a
|
||||
colorless, odorless, tasteless gas that is poisonous to humans and other oxygen breathing
|
||||
organisms. It is also naturally occurring in the atmosphere. Only in high concentrations
|
||||
is carbon monoxide deadly. At the Earth's surface the concentration of carbon monoxide is
|
||||
100 ppb (parts per billion), however, in urban areas it can get up to 10 ppm (parts per
|
||||
million) or 100 times higher. One of the main anthropogenic sources of carbon monoxide in
|
||||
the atmosphere is emissions from automobiles. In areas with heavy traffic the carbon
|
||||
monoxide can be measured at 50 ppm. The natural sources of carbon monoxide include
|
||||
volcanoes and brush burning. Between the anthropogenic and natural sources, scientists
|
||||
estimate that the annual production of carbon monoxide is 2-5 gigatons. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/carbon-monoxide-2000/"
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "1024.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Hurricane Season - 2004"
|
||||
local Identifier = "noaa-sos-atmosphere-2004_ir_hurricane"
|
||||
local Description = [[ The 2004 hurricane season started on July 31 with Hurricane Alex
|
||||
and continued all the way through to December 2 with Tropical Storm Otto. The season
|
||||
featured 15 tropical storms, 9 of which became hurricanes, and 6 of those were classified
|
||||
as major hurricanes. This over-active hurricane season tallied up a bill of $42 billion
|
||||
in damages, which at the time was record high. Florida took the brunt of the damage with
|
||||
4 major hurricanes making landfall in the state. Two of the hurricanes, Frances and
|
||||
Jeanne, landed in almost the same location on the east coast of Florida only 3 weeks
|
||||
apart. It is estimated that one in every five homes in Florida was damaged in the 2004
|
||||
hurricane season. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-2004/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "cylir_%Y%m%d_%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,76 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Hurricane Season - 2005"
|
||||
local Identifier = "noaa-sos-atmosphere-2005_hurricane-grayir"
|
||||
local Description = [[ "This hurricane season shattered records that have stood for
|
||||
decades - most named storms, most hurricanes and most category five storms. Arguably, it
|
||||
was the most devastating hurricane season the country has experienced in modern times,"
|
||||
said retired Navy Vice Adm. Conrad C. Lautenbacher, Jr., Ph.D., undersecretary of
|
||||
commerce for oceans and atmosphere and NOAA administrator. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-2005/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "ir_combined_%Y%m%d_%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-5.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-6.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-7.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-8.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-9.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-10.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-11.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-12.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-13.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-14.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-15.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-16.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-17.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Hurricane Season: Water Vapor and SST - 2005"
|
||||
local Identifier = "noaa-sos-atmosphere-2005_hurricane-wvsst"
|
||||
local Description = [[ "This hurricane season shattered records that have stood for
|
||||
decades - most named storms, most hurricanes and most category five storms. Arguably, it
|
||||
was the most devastating hurricane season the country has experienced in modern times,"
|
||||
said retired Navy Vice Adm. Conrad C. Lautenbacher, Jr., Ph.D., undersecretary of
|
||||
commerce for oceans and atmosphere and NOAA administrator. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-water-vapor-and-sst-2005/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "GI-WV-%y%j-%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Hurricane Season - 2012"
|
||||
local Identifier = "noaa-sos-atmosphere-2012_hurricane"
|
||||
local Description = [[ "It was an extremely devastating and destructive storm, hopefully
|
||||
one that people will only see once in their lifetime," National Weather Service
|
||||
meteorologist, Joe Pollina, said of Hurricane Sandy. The 2012 Atlantic Hurricane season
|
||||
was tied with 1887, 1995, 2010 and 2011 as the third most active year in recorded
|
||||
history, producing nineteen tropical cyclones and named storms, ten hurricanes and two
|
||||
major hurricanes. Annual Atlantic hurricane predictions by NOAA and Colorado State
|
||||
University fell short of the actual numbers despite raising their numbers after a record
|
||||
active start to the season, which began on June 1st and ended on November 30th. The
|
||||
Eastern Pacific season was moderately active. This dataset names all the Atlantic and
|
||||
Pacific named tropical storms and hurricanes in 2012 from the Linear IR Satellite data
|
||||
recorded by geostationary satellites. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-2012/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local namesDestination = syncedDirectory .. "names"
|
||||
local satDestination = syncedDirectory .. "sat"
|
||||
|
||||
|
||||
local layer_names = {
|
||||
Identifier = Identifier .. "-names",
|
||||
Name = Name .. " (Names)",
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = namesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_sat = {
|
||||
Identifier = Identifier .. "-sat",
|
||||
Name = Name .. " (Satellites)",
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = satDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "linear_rgb_cyl_%Y%m%d_%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(namesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name .. "Names")
|
||||
openspace.unzipFile(syncedDirectory .. "names.zip", namesDestination, true)
|
||||
end
|
||||
|
||||
if not openspace.directoryExists(satDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "sat-1.zip", satDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "sat-2.zip", satDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "sat-3.zip", satDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "sat-4.zip", satDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_names)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_sat)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_names)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_sat)
|
||||
end)
|
||||
|
||||
asset.export(layer_names)
|
||||
asset.export(layer_sat)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Aerosols: Black Carbon"
|
||||
local Identifier = "noaa-sos-atmosphere-aerosol-blackcarbon"
|
||||
local Description = [[ With so many uncertainties attached to climate change, it is
|
||||
important to look at all of the factors. As early as 1896, scientists have been analyzing
|
||||
the presence of black carbon in the atmosphere. This group of three datasets looks at the
|
||||
presence of aerosols in the Earth's atmosphere. The first dataset contains only black
|
||||
carbon optical thickness, the second has sulfate optical thickness and the third has a
|
||||
combination of both black carbon and sulfate optical thickness. The data is from January
|
||||
31, 2007 and extends out 120 hours through February 4, 2007. Black carbon is commonly
|
||||
known as soot. It is generated from burning fossil fuels and biomass fuels. Soot is the
|
||||
result of incomplete combustion, especially of coal, diesel fuels, biofuels and other
|
||||
biomass burnings. Sulfate is the result of sulfur dioxide and sulfur trioxide interacting
|
||||
with other compounds in the atmosphere. Sulfate aerosols in the atmosphere are associated
|
||||
with the combustion of fossil fuels and also the eruption of volcanoes like Mt.
|
||||
Pinatubo. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/aerosols-black-carbon/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048_png.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Aerosols: Black Carbon and Sulfate"
|
||||
local Identifier = "noaa-sos-atmosphere-aerosol-blackcarbon_and_sulfate"
|
||||
local Description = [[ With so many uncertainties attached to climate change, it is
|
||||
important to look at all of the factors. As early as 1896, scientists have been analyzing
|
||||
the presence of black carbon in the atmosphere. This group of three datasets looks at the
|
||||
presence of aerosols in the Earth's atmosphere. The first dataset contains only black
|
||||
carbon optical thickness, the second has sulfate optical thickness and the third has a
|
||||
combination of both black carbon and sulfate optical thickness. The data is from January
|
||||
31, 2007 and extends out 120 hours through February 4, 2007. Black carbon is commonly
|
||||
known as soot. It is generated from burning fossil fuels and biomass fuels. Soot is the
|
||||
result of incomplete combustion, especially of coal, diesel fuels, biofuels and other
|
||||
biomass burnings. Sulfate is the result of sulfur dioxide and sulfur trioxide interacting
|
||||
with other compounds in the atmosphere. Sulfate aerosols in the atmosphere are associated
|
||||
with the combustion of fossil fuels and also the eruption of volcanoes like Mt.
|
||||
Pinatubo. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/aerosols-black-carbon-and-sulfate/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048_png.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Aerosols: Sulfate"
|
||||
local Identifier = "noaa-sos-atmosphere-aerosol-sulfate"
|
||||
local Description = [[ With so many uncertainties attached to climate change, it is
|
||||
important to look at all of the factors. As early as 1896, scientists have been analyzing
|
||||
the presence of black carbon in the atmosphere. This group of three datasets looks at the
|
||||
presence of aerosols in the Earth's atmosphere. The first dataset contains only black
|
||||
carbon optical thickness, the second has sulfate optical thickness and the third has a
|
||||
combination of both black carbon and sulfate optical thickness. The data is from January
|
||||
31, 2007 and extends out 120 hours through February 4, 2007. Black carbon is commonly
|
||||
known as soot. It is generated from burning fossil fuels and biomass fuels. Soot is the
|
||||
result of incomplete combustion, especially of coal, diesel fuels, biofuels and other
|
||||
biomass burnings. Sulfate is the result of sulfur dioxide and sulfur trioxide interacting
|
||||
with other compounds in the atmosphere. Sulfate aerosols in the atmosphere are associated
|
||||
with the combustion of fossil fuels and also the eruption of volcanoes like Mt.
|
||||
Pinatubo. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/aerosols-sulfate/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048_png.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Air Traffic"
|
||||
local Identifier = "noaa-sos-atmosphere-air_traffic"
|
||||
local Description = [[ "On any given day, more than 87,000 flights are in the skies in
|
||||
the United States. Only one-third are commercial carriers, like American, United or
|
||||
Southwest. On an average day, air traffic controllers handle 28,537 commercial flights
|
||||
(major and regional airlines), 27,178 general aviation flights (private planes), 24,548
|
||||
air taxi flights (planes for hire), 5,260 military flights and 2,148 air cargo flights
|
||||
(Federal Express, UPS, etc.). At any given moment, roughly 5,000 planes are in the skies
|
||||
above the United States. In one year, controllers handle an average of 64 million
|
||||
takeoffs and landings." - From the National Air Traffic Controllers Association webpage ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/air-traffic/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Satellites: Paths and Positions"
|
||||
local Identifier = "noaa-sos-atmosphere-all_sats"
|
||||
local Description = [[ Satellites are a key tool for scientists to monitor and observe
|
||||
the Earth's atmosphere from space. Geostationary satellites orbit around the Earth at the
|
||||
same rate as the Earth rotates so that the satellites are over the same spot on Earth all
|
||||
the time. This allows them to collect a continuous stream of data for one location so
|
||||
that "movies" of the data can be made. The satellites are positioned 22,300 miles above
|
||||
the Earth's surface in order to view the Earth's full disk and to maintain their
|
||||
geostationary orbit. Geostationary satellites travel at about 7000mph in order to
|
||||
maintain their geostationary orbit. In addition to geostationary satellites, scientists
|
||||
also use polar orbiting satellites. These satellites circle the Earth, crossing the poles
|
||||
on each orbit. Typically, polar orbiting satellites are about 500 miles above the Earth's
|
||||
surface. The satellites travel at almost 17,000mph, allowing them to orbit the Earth in
|
||||
roughly 100 minutes. A polar orbiting satellite is able to cover the whole Earth in less
|
||||
than one day. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/satellites-paths-and-positions/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Polar Orbiting: Aqua Satellite and MODIS Swath"
|
||||
local Identifier = "noaa-sos-atmosphere-aqua_swath"
|
||||
local Description = [[ Satellites are important to scientists because the instruments on
|
||||
board can provide almost daily global coverage of the Earth that would otherwise not be
|
||||
available. There are six instruments on board NASA's Aqua satellite. One of them is
|
||||
MODIS, the Moderate Resolution Imaging Spectroradiometer. MODIS measures 36 spectral
|
||||
frequencies of light, which provide a wealth of information about the physical properties
|
||||
of the atmosphere and the biological and physical properties of the oceans and land. The
|
||||
Aqua satellite with MODIS attached was launched May 4, 2002. Since then, Aqua has been
|
||||
circling the Earth at an altitude of 438 miles (705 kilometers) every 99 minutes in a
|
||||
polar orbit passing within 10 degrees of each pole every orbit. The orbit is
|
||||
sun-synchronous, which means that the satellite passes over the same spot of the Earth at
|
||||
about the same local time everyday. Aqua crosses the equator from south to north at about
|
||||
1:30 pm local time. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-aqua-satellite-and-modis-swath/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Carbon Flux"
|
||||
local Identifier = "noaa-sos-atmosphere-carbonflux"
|
||||
local Description = [[ The Global Monitoring Division at NOAA diligently monitors carbon
|
||||
dioxide and other trace gases in the atmosphere. One of the methods they use to sample
|
||||
trace gases is collecting flasks of air from around the world that can be tested. They
|
||||
have several other means for collecting samples as well. In this data set, the NOAA GMD
|
||||
sampling network as of 2005 is portrayed. Circles are flask sampling locations, stars are
|
||||
aircraft sites (12 flasks per flight are filled) and ships, which are only visible as
|
||||
they race from Australia and New Zealand to the US west coast or Japan, or from Cape Town
|
||||
to the US east coast. The coloration in the dataset represents the fluxes constructed by
|
||||
the ocean, biosphere, and fossil fuel modules of the NOAA ESRL data assimilation system
|
||||
for CO2 and related trace gases. The data set shows daily average fluxes constructed from
|
||||
3-hour model output. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-aqua-satellite-and-modis-swath/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2160.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,112 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "CarbonTracker: Fixed Scale"
|
||||
local Identifier = "noaa-sos-atmosphere-carbontracker_2000_2100-fixed_scale"
|
||||
local Description = [[ "NOAA encourages science that adds benefit to society and the
|
||||
environment. CarbonTracker does both." said retired Navy Vice Admiral Conrad
|
||||
Lautenbacher, Ph.D., former undersecretary of commerce for oceans and atmosphere and NOAA
|
||||
administrator. CarbonTracker is a system to keep track of carbon dioxide uptake and
|
||||
release at the Earth's surface over time. It was developed by the Carbon Cycle Greenhouse
|
||||
Gases group at NOAA's Earth System Research Laboratory. As a scientific tool,
|
||||
CarbonTracker has helped improve the understanding of carbon uptake and release from the
|
||||
land and oceans, and how those sources and sinks are responding to the changing climate,
|
||||
increasing levels of atmospheric CO2 (the CO2 fertilization effect), and human management
|
||||
of land and oceans. CarbonTracker relies on the long-term monitoring of atmospheric CO2
|
||||
performed by the NOAA Global Monitoring Division and international partners. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/carbon-tracker-fixed-scale/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local fieldDestination = syncedDirectory .. "field"
|
||||
local obsDestination = syncedDirectory .. "obs"
|
||||
local colorbarDestination = syncedDirectory .. "colorbar"
|
||||
|
||||
|
||||
local layer_field = {
|
||||
Identifier = Identifier .. "-field",
|
||||
Name = Name .. " (Field)",
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = fieldDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "co2wx_%Y%m%d.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_obs = {
|
||||
Identifier = Identifier .. "-obs",
|
||||
Name = Name .. " (Observed)",
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = obsDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "co2wx_%Y%m%d.obs.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
-- @TODO: We need a temporal provider for ScreenSpaceImages to handle this
|
||||
TexturePath = colorbarDestination .. "/" .. "co2wx_20000101.cpt.png",
|
||||
FaceCamera = false,
|
||||
BackgroundColor = { 1.0, 1.0, 1.0, 1.0 },
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(fieldDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "field-1.zip", fieldDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "field-2.zip", fieldDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "field-3.zip", fieldDestination, true)
|
||||
end
|
||||
|
||||
if not openspace.directoryExists(obsDestination) then
|
||||
openspace.printInfo("Extracting " .. Name .. " Observed")
|
||||
openspace.unzipFile(syncedDirectory .. "obs.zip", obsDestination, true)
|
||||
end
|
||||
|
||||
if not openspace.directoryExists(colorbarDestination) then
|
||||
openspace.printInfo("Extracting " .. Name .. " Colorbar")
|
||||
openspace.unzipFile(syncedDirectory .. "colorbar.zip", colorbarDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_field)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_obs)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_field)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_obs)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer_field)
|
||||
asset.export(layer_obs)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,113 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "CarbonTracker: Sliding Scale"
|
||||
local Identifier = "noaa-sos-atmosphere-carbontracker_2000_2100-sliding_scale"
|
||||
local Description = [[ "NOAA encourages science that adds benefit to society and the
|
||||
environment. CarbonTracker does both." said retired Navy Vice Admiral Conrad
|
||||
Lautenbacher, Ph.D., former undersecretary of commerce for oceans and atmosphere and NOAA
|
||||
administrator. CarbonTracker is a system to keep track of carbon dioxide uptake and
|
||||
release at the Earth's surface over time. It was developed by the Carbon Cycle Greenhouse
|
||||
Gases group at NOAA's Earth System Research Laboratory. As a scientific tool,
|
||||
CarbonTracker has helped improve the understanding of carbon uptake and release from the
|
||||
land and oceans, and how those sources and sinks are responding to the changing climate,
|
||||
increasing levels of atmospheric CO2 (the CO2 fertilization effect), and human management
|
||||
of land and oceans. CarbonTracker relies on the long-term monitoring of atmospheric CO2
|
||||
performed by the NOAA Global Monitoring Division and international partners. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/carbon-tracker-sliding-scale/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local fieldDestination = syncedDirectory .. "field"
|
||||
local obsDestination = syncedDirectory .. "obs"
|
||||
local colorbarDestination = syncedDirectory .. "colorbar"
|
||||
|
||||
local layer_field = {
|
||||
Identifier = Identifier .. "-field",
|
||||
Name = Name .. " (Field)",
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = fieldDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "co2wx_%Y%m%d.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_obs = {
|
||||
Identifier = Identifier .. "-obs",
|
||||
Name = Name .. " (Observed)",
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = obsDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "co2wx_%Y%m%d.obs.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
-- @TODO: We need a temporal provider for ScreenSpaceImages to handle this
|
||||
TexturePath = colorbarDestination .. "/" .. "co2wx_20000101.cpt.png",
|
||||
FaceCamera = false,
|
||||
BackgroundColor = { 1.0, 1.0, 1.0, 1.0 },
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(fieldDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "field-1.zip", fieldDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "field-2.zip", fieldDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "field-3.zip", fieldDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "field-4.zip", fieldDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "field-5.zip", fieldDestination, true)
|
||||
end
|
||||
|
||||
if not openspace.directoryExists(obsDestination) then
|
||||
openspace.printInfo("Extracting " .. Name .. " Observed")
|
||||
openspace.unzipFile(syncedDirectory .. "obs.zip", obsDestination, true)
|
||||
end
|
||||
|
||||
if not openspace.directoryExists(colorbarDestination) then
|
||||
openspace.printInfo("Extracting " .. Name .. " Colorbar")
|
||||
openspace.unzipFile(syncedDirectory .. "colorbar.zip", colorbarDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_field)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_obs)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_field)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_obs)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer_field)
|
||||
asset.export(layer_obs)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Human Climate Niche - 2020 and 2070"
|
||||
local Identifier = "noaa-sos-atmosphere-climate_niche"
|
||||
local Description = [[ The human climate niche are areas on Earth where humans have
|
||||
historically lived due to favorable climate conditions related to temperature and
|
||||
precipitation. For the past 6000 years, humans have mostly lived in the same climate
|
||||
conditions as they do now. In addition to humans, this climate niche is also where the
|
||||
production of crops and livestock typically takes place. The optimal mean annual
|
||||
temperature of this identified niche is around 52 °F to 59 °F (~11 °C to 15 °C). But as
|
||||
the climate changes, the areas that fit within the human climate niche will change as
|
||||
well. This dataset identifies the current human climate niche, with land shaded to show
|
||||
which areas are more or less suitable for people, and then projects the future human
|
||||
climate niche in 2070 based on the climate projection scenario of RCP 8.5. Also included
|
||||
as an additional layer that can be turned on and off is a map that shows the areas where
|
||||
the mean annual temperature is greater than 84 °F (29 °C). Currently, only 0.8% of the
|
||||
global land surface has a mean annual temperature greater than 84 °F, but in 2070 that is
|
||||
projected to cover 19% of the global land and impact an estimated 3.5 billion people. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/human-climate-niche-2020-and-2070/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer_precip_2020 = {
|
||||
Identifier = Identifier .. "-2020",
|
||||
Name = Name .. " (2020)",
|
||||
FilePath = syncedDirectory .. "temp-precip-2020-current-4096.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_precip_2070 = {
|
||||
Identifier = Identifier .. "-2070",
|
||||
Name = Name .. " (2070)",
|
||||
FilePath = syncedDirectory .. "temp-precip-2070-rcp85-4096.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_mat_2020 = {
|
||||
Identifier = Identifier .. "-mat2020",
|
||||
Name = Name .. " (MAT 2020)",
|
||||
FilePath = syncedDirectory .. "MAT-29-2020-4096.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_mat_2070 = {
|
||||
Identifier = Identifier .. "-mat2070",
|
||||
Name = Name .. " (MAT 2070)",
|
||||
FilePath = syncedDirectory .. "MAT-29-2070-4096.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "niche-scale.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_precip_2020)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_precip_2070)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_mat_2020)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_mat_2070)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_precip_2020)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_precip_2070)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_mat_2020)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_mat_2070)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer_precip_2020)
|
||||
asset.export(layer_precip_2070)
|
||||
asset.export(layer_mat_2020)
|
||||
asset.export(layer_mat_2070)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Carbon Monoxide - 2008 - 2011"
|
||||
local Identifier = "noaa-sos-atmosphere-co_gmd"
|
||||
local Description = [[ Carbon Monoxide (CO) is a colorless, odorless gas existing in the
|
||||
atmosphere at levels between 40 and 150 parts per billion (ppb). About 40% of that is
|
||||
produced by burning (combustion) of fossil fuels (coal, oil and natural gas) and biomass
|
||||
(for example, wood in forest fires). CO is the primary consumer of oxidant OH, the
|
||||
"cleansing agent" of the atmosphere. For example, OH "cleanses the air" by converting
|
||||
atmospheric methane (CH4) to CO2, which reduces its global warming potential because
|
||||
methane is a stronger greenhouse gas. OH also breaks down a whole host of other compounds
|
||||
such as benzene, isoprene and halocarbons, which would otherwise give rise to smog and
|
||||
reduce air quality. Therefore, an excess of atmospheric CO leads to a reduction of OH's
|
||||
cleansing capacity. Another reason for measuring CO concentrations is that it is an
|
||||
indicator of combustion, such as forest fires and urban emissions. A large forest fire or
|
||||
emissions from heavy traffic can produce CO concentrations of 200 - 5000 ppb. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/carbon-monoxide-2008-2011/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "co_field_extended_%Y%m%d%H%M.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
BackgroundColor = { 1.0, 1.0, 1.0, 1.0 },
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "3600-1.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "3600-2.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "3600-3.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "3600-4.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "3600-5.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "3600-6.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Aerosols: FIM Chem Model"
|
||||
local Identifier = "noaa-sos-atmosphere-fim_chem"
|
||||
local Description = [[ The Flow Following Finite Volume Icosahedral Model (FIM) was
|
||||
developed by NOAA to produce weather forecasts. In fact, weather forecasts from the FIM
|
||||
model are available for SOS here. Building upon the success of the FIM model, the
|
||||
FIM-Chem model was created. The FIM-Chem is the FIM model with chemistry and aerosol
|
||||
modules added. Aerosols are one of the biggest uncertainties in climate models due to
|
||||
their varied affects on radiation and cloud physics. The FIM-Chem allows researchers to
|
||||
forecast and study the behavior of aerosols in the atmosphere, leading to the potential
|
||||
for better Earth system modeling for climate prediction. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/aerosols-fim-chem-model/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "composite.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Fossil Fuel: CO2 Release - 2011-2012"
|
||||
local Identifier = "noaa-sos-atmosphere-fossil_fuel"
|
||||
local Description = [[ This dataset shows the result of emitting carbon dioxide from
|
||||
fossil fuel burning into the atmosphere over two years. A computer model of the
|
||||
atmosphere called TM5 was used to create this powerful visualization. TM5 simulates the
|
||||
movement of atmospheric gases globally, using winds and atmospheric mixing as derived
|
||||
from the global weather forecast. The model has been used for the main greenhouse gases
|
||||
carbon dioxide (CO2), methane (CH4), and nitrous oxide (N2O), chemically active species
|
||||
such as ozone (O3), and various aerosols. Like CarbonTracker, a measurement and modeling
|
||||
system to keep track of carbon sources and sinks around the world, this dataset was
|
||||
developed by the Carbon Cycle Greenhouse Gases group at NOAA's Earth System Research
|
||||
Laboratory. Unlike CarbonTracker, this simulation does not use information from actual
|
||||
observations and instead visualizes the transport of fossil fuel emissions.
|
||||
Visualizations such as this dataset and CarbonTracker, aim to improve our understanding
|
||||
of atmospheric carbon and how various sources and sinks may respond to the changing
|
||||
climate, increasing levels of atmospheric CO2 (via the CO2 fertilization effect), and
|
||||
human management of global resources. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/fossil-fuel-co2-release-2011-2012/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "%Y%m%d_fossil.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "3100.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Fukushima Radioactive Aerosol Dispersion Model"
|
||||
local Identifier = "noaa-sos-atmosphere-fukushima"
|
||||
local Description = [[ The Hybrid Single-Particle Lagrangian Integrated Trajectory
|
||||
(HYSPLIT) model was developed by NOAA to follow the transport and dispersion of
|
||||
pollutants in the atmosphere. In HYSPLIT, the computation is composed of four components:
|
||||
transport by the mean wind, turbulent dispersion, scavenging and decay. A large number of
|
||||
pollutant particles, which by convention are called "particles" but are just
|
||||
computational "points" (particles or gases), are released at the source location and
|
||||
passively follow the wind. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/fukushima-radioactive-aerosol-dispersion-model/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2054.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Geostationary Satellites"
|
||||
local Identifier = "noaa-sos-atmosphere-geo_sat"
|
||||
local Description = [[ Geostationary satellites are a key tool for scientists to monitor
|
||||
and observe the Earth's atmosphere. They are called geostationary due to their movement.
|
||||
Geostationary satellites orbit around the Earth at the same rate as the Earth rotates so
|
||||
that the satellites are over the same spot on Earth all the time. This allows them to
|
||||
collect a continuous stream of data for one location so that "movies" of the data can be
|
||||
made. The satellites are positioned 22,300 miles above the Earth's surface in order to
|
||||
view the Earth's full disk and to maintain their geostationary orbit. Geostationary
|
||||
satellites travel at about 7000mph in order to maintain their geostationary orbit. Over
|
||||
the United States there are two such satellites, the GOES (Geostationary Operational
|
||||
Environmental Satellite) - East and GOES-West. There are many such satellites
|
||||
worldwide. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/geostationary-satellites/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Geostationary Satellites: Scanning Pattern"
|
||||
local Identifier = "noaa-sos-atmosphere-geo_scan"
|
||||
local Description = [[ Geostationary satellites are a key tool for scientists to monitor
|
||||
and observe the Earth's atmosphere. They are called geostationary due to their movement.
|
||||
Geostationary satellites orbit around the Earth at the same rate as the Earth rotates so
|
||||
that the satellites are over the same spot on Earth all the time. This allows them to
|
||||
collect a continuous stream of data for one location so that "movies" of the data can be
|
||||
made. The satellites are positioned 22,300 miles above the Earth's surface in order to
|
||||
view the Earth's full disk and to maintain their geostationary orbit. Geostationary
|
||||
satellites travel at about 7000mph in order to maintain their geostationary orbit. Over
|
||||
the United States there are two such satellites, the GOES (Geostationary Operational
|
||||
Environmental Satellite) - East and GOES-West. There are many such satellites
|
||||
worldwide. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/geostationary-satellites-scanning-pattern/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Temperature Anomaly: (NASA) - 1884 - 2012"
|
||||
local Identifier = "noaa-sos-atmosphere-giss_temp_anom"
|
||||
local Description = [[ These maps, developed by NASA's Goddard Institute for Space
|
||||
Studies (GISS), depict how much various regions of the world have warmed or cooled when
|
||||
compared with a base period of 1951-1980. They show temperature anomalies, or changes,
|
||||
not absolute temperature. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/temperature-anomaly-nasa-1884-2012/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2012.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Solar Insolation - Monthly (NASA)"
|
||||
local Identifier = "noaa-sos-atmosphere-globe-insolation"
|
||||
local Description = [[ These maps show where and how much sunlight fell on Earth's
|
||||
surface during each month in 2018. Scientists call this measure solar insolation. Knowing
|
||||
how much of the Sun's energy reaches the surface helps scientists understand weather and
|
||||
climate patterns as well as patterns of plant growth around our world. Solar insolation
|
||||
maps are also useful to engineers who design solar panels and batteries designed to
|
||||
convert energy from the Sun into electricity to power appliances in our homes and work
|
||||
places. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/solar-insolation-monthly-nasa/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "CERES_INSOL_M_%Y-%m.PNG"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
BackgroundColor = { 1.0, 1.0, 1.0, 1.0 },
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "1440.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Solar Rainfall - Monthly (NASA)"
|
||||
local Identifier = "noaa-sos-atmosphere-globe-rainfall"
|
||||
local Description = [[ Globally, rain is the main source of fresh water for plants and
|
||||
animals rainfall is essential for life across Earth's landscapes. In addition to moving
|
||||
tremendous amounts of water through Earth's atmosphere, rain clouds also move tremendous
|
||||
amounts of energy. When water evaporates from the surface and rises as vapor into the
|
||||
atmosphere, it carries heat from the sun-warmed surface with it. Later, when the water
|
||||
vapor condenses to form cloud droplets and rain, the heat is released into the
|
||||
atmosphere. This heating is a major part of Earth's energy budget and climate. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/rainfall-monthly-nasa/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "TRMM_3B43M_%Y-%m.PNG"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
BackgroundColor = { 1.0, 1.0, 1.0, 1.0 },
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "1440.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Hurricane Harvey: Clouds with Precipitation - 2017"
|
||||
local Identifier = "noaa-sos-atmosphere-harvey-clouds_precip"
|
||||
local Description = [[ Hurricane Harvey was an extremely destructive Atlantic hurricane
|
||||
which became the first major hurricane to make landfall in the U.S. since Wilma in 2005.
|
||||
In a four-day period, many areas of eastern Texas received over 40 inches of rain as the
|
||||
system meandered along the gulf coast causing catastrophic flooding. With a record of
|
||||
51.88 inches, Harvey is the wettest tropical hurricane on record in the contiguous U.S.
|
||||
The resulting floods inundated hundreds of thousands of homes, displaces more than
|
||||
30,000 people, and prompted more than 17,000 rescues. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-harvey-clouds-with-precipitation-2017/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "combined_image_%Y%m%d_%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar_rain = {
|
||||
Identifier = Identifier .. "-rain",
|
||||
Name = Name .. " (Rain)",
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "rainbar_white.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { -0.5, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
local colorbar_snow = {
|
||||
Identifier = Identifier .. "-snow",
|
||||
Name = Name .. " (Snow)",
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "snowbar_white.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.5, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar_rain);
|
||||
openspace.addScreenSpaceRenderable(colorbar_snow);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar_rain)
|
||||
openspace.removeScreenSpaceRenderable(colorbar_snow)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar_rain)
|
||||
asset.export(colorbar_snow)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Hurricane Season - 2017"
|
||||
local Identifier = "noaa-sos-atmosphere-hurricane_season_2017"
|
||||
local Description = [[ After a long lull in major hurricanes striking the U.S.
|
||||
(2005 - 2017), the 2017 season was an extremely destructive season, featuring 17 named
|
||||
storms in just the Atlantic Ocean, tying it with 1936 as the fifth-most active season
|
||||
since records began in 1851. All ten of the Atlantic hurricanes occurred in a row, the
|
||||
greatest number of consecutive hurricanes in the satellite era. In addition, it is by far
|
||||
the costliest season on record, with a preliminary total of over $368.66 billion (USD) in
|
||||
damages, which is more than double the cost of 2005's total, and nearly all of which was
|
||||
due to three of the season's major hurricanes — Harvey, Irma, and Maria. All three
|
||||
occurred within one month in August - September, sending disaster aide efforts reeling
|
||||
and calling on volunteers for help. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-2017/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "linear_rgb_cyl_%Y%m%d_%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Hurricane Season: Water Vapor and SST - 2017"
|
||||
local Identifier = "noaa-sos-atmosphere-hurricane_season_2017_wvsst"
|
||||
local Description = [[ After a long lull in major hurricanes striking the U.S.
|
||||
(2005 - 2017), the 2017 season was an extremely destructive season, featuring 17 named
|
||||
storms in just the Atlantic Ocean, tying it with 1936 as the fifth-most active season
|
||||
since records began in 1851. All ten of the Atlantic hurricanes occurred in a row, the
|
||||
greatest number of consecutive hurricanes in the satellite era. In addition, it is by far
|
||||
the costliest season on record, with a preliminary total of over $368.66 billion (USD) in
|
||||
damages, which is more than double the cost of 2005's total, and nearly all of which was
|
||||
due to three of the season's major hurricanes — Harvey, Irma, and Maria. All three
|
||||
occurred within one month in August - September, sending disaster aide efforts reeling
|
||||
and calling on volunteers for help. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-season-water-vapor-and-sst-2017/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "wvsst-%y%j-%H.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Hurricane Tracks: Cumulative - 1950 - 2020"
|
||||
local Identifier = "noaa-sos-atmosphere-hurricane_tracks-cumulative"
|
||||
local Description = [[ Tracking historical hurricanes is an important way for hurricane
|
||||
researchers to learn about the paths of future hurricanes. Because of this, records of
|
||||
hurricane paths are archived and studied. Not all hurricanes follow the same path, but
|
||||
there are certainly noticeable trends for hurricane paths. Many computer models that have
|
||||
been created to predict hurricane paths include the historical data in their models. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-tracks-cumulative-1950-2005/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "4096.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Hurricane Isaac - 2012"
|
||||
local Identifier = "noaa-sos-atmosphere-isaac"
|
||||
local Description = [[ Hurricane Isaac formed as a tropical depression east of the Lesser
|
||||
Antilles on August 21 and that same day was upgraded to a tropical storm. As a tropical
|
||||
storm Hurricane Isaac passed over Hispaniola and Cuba, killing many people. It them
|
||||
entered the Gulf of Mexico. Shortly before making landfall near the mouth of the
|
||||
Mississippi River, Tropical Storm Isaac strengthened and became Hurricane Isaac on August
|
||||
28. Isaac actually made landfall twice, briefly returning offshore after its first
|
||||
landfall before returning to land. Isaac was a very slow moving storm after landfall and
|
||||
brought significant amounts of rain to the southeastern United States. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/hurricane-isaac-2012/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local radarDestination = syncedDirectory .. "radar"
|
||||
local satDestination = syncedDirectory .. "sat"
|
||||
|
||||
local layer_radar = {
|
||||
Identifier = Identifier .. "-radar",
|
||||
Name = Name .. " (Radar)",
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = radarDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "%y%j%H%M.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_sat = {
|
||||
Identifier = Identifier .. "-sat",
|
||||
Name = Name .. " (Sat)",
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = satDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "linear_rgb_cyl_%Y%m%d_%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(radarDestination) then
|
||||
openspace.printInfo("Extracting " .. Name .. " Radar")
|
||||
openspace.unzipFile(syncedDirectory .. "radar.zip", radarDestination, true)
|
||||
end
|
||||
|
||||
if not openspace.directoryExists(satDestination) then
|
||||
openspace.printInfo("Extracting " .. Name .. " Sat")
|
||||
openspace.unzipFile(syncedDirectory .. "sat.zip", satDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_radar)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_sat)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_radar)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_sat)
|
||||
end)
|
||||
|
||||
asset.export(layer_radar)
|
||||
asset.export(layer_sat)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "International Space Station Track"
|
||||
local Identifier = "noaa-sos-atmosphere-iss_track"
|
||||
local Description = [[ The first piece of the International Space Station was sent into
|
||||
orbit in 1998. Following two more pieces, astronauts first entered the space station in
|
||||
November of 2000. Since then, the space station has been continuously inhabited by at
|
||||
least 2 people. The station is currently designed to house 3 crew members. The
|
||||
International Space Station is a cooperative space research facility being constructed
|
||||
cooperatively by many nations. Several space organizations had planned their own space
|
||||
stations and the groups decided to merge and work together. The original space station
|
||||
was a combination of NASA's Space Station Freedom, Russia's Mir-2, and the European
|
||||
Space Agency's Columbus. The project now involves NASA, the Russian Space agency, RKA;
|
||||
the European Space Agency, ESA; the Japanese Space agency, JAXA; and the Canadian Space
|
||||
agency, CSA. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/international-space-station-track/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "4096.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Land Surface Temperature - 1950 - 1999"
|
||||
local Identifier = "noaa-sos-atmosphere-land_temp"
|
||||
local Description = [[ The temperature of the air varies dramatically in both time and
|
||||
space. Because the Earth's rotational axis is at a 23° tilt, the Northern Hemisphere and
|
||||
Southern Hemisphere simultaneously experience opposite seasons. This dataset displays the
|
||||
gridded, monthly, historical terrestrial air temperature from 1950 - 1999. The original
|
||||
data is from the Global Historical Climatology Network, which is part of NOAA's National
|
||||
Climatic Data Center. The data was interpolated by the Center for Climatic Research at
|
||||
the University of Delaware. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/international-space-station-track/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "cyl_%Y_%m.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Lightning Flash Rate"
|
||||
local Identifier = "noaa-sos-atmosphere-lightning"
|
||||
local Description = [[ Typically, more than 2,000 thunderstorms are active throughout the
|
||||
world at a given moment, producing on the order of 100 flashes per second. NASA has two
|
||||
different sensors on satellites that measuring flash frequency, the Optical Transient
|
||||
Detector, OTD, and the Lightning Imaging Sensor, LIS. Data from the OTD from 1995 - 2000
|
||||
and the LIS from 1998 - 2005 has been combined and averaged to create an average annual
|
||||
lightning flash rate map. 11 year of data is included to remove any anomalies that might
|
||||
be present in just one year. The color variations in the map display the average annual
|
||||
number of lightning flashes per square kilometer. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/lightning-flash-rate/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "2048.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.jpg",
|
||||
FaceCamera = false,
|
||||
Scale = 0.05,
|
||||
CartesianPosition = { 0.75, 0.0, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Lightning Detection - Jun 2011 - Aug 2012"
|
||||
local Identifier = "noaa-sos-atmosphere-ltg_vaisala"
|
||||
local Description = [[ The Global Lightning Dataset GLD360 network detects between 1 and
|
||||
3 million lightning events around the world every day of the year. Lightning activity is
|
||||
not uniformly distributed across the globe. About ten times as many flashes occur over
|
||||
land than over the oceans, and the majority of global lightning is concentrated in the
|
||||
tropics. Over the course of a year, highest flash rate regions follow the inclination of
|
||||
the sun. The northern hemisphere sees more activity during June through August; the
|
||||
southern hemisphere has higher flash rates in January through March. These seasonal
|
||||
patterns can be clearly seen in these images, which show the total number of events
|
||||
detected in each month per square kilometer. The color scale ranges from less than .01
|
||||
lightning pulses per square kilometer in the corresponding month to over 20 pulses per
|
||||
square kilometer. Each color range corresponds to a factor of two of increase in the
|
||||
number of events. This dataset runs from June 2011 through August 2012. ]]
|
||||
local URL = "c"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "%Y_%m-1.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
Scale = 0.1,
|
||||
CartesianPosition = { 0.75, 0.0, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2160.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Polar Orbiting: NASA A-Train Satellites"
|
||||
local Identifier = "noaa-sos-atmosphere-nasa_sats"
|
||||
local Description = [[ In order to enable coordinated science observations, the Earth
|
||||
Observations System has created the A-Train. When finally completed in 2008, the A-Train
|
||||
will consist of 6 polar-orbiting satellites that travel just minutes apart in a line.
|
||||
Four of the satellites are NASA satellites, one is a French Centre National d'Etudes
|
||||
Spatiales (CNES) satellite, and the other is a joint satellite between NASA and CNES. The
|
||||
satellites have low polar orbits 438 miles (705 km) above Earth at an inclination of 98
|
||||
degrees. Together, their overlapping science instruments give a comprehensive picture of
|
||||
Earth weather and climate. The "A" in the A-Train is for "afternoon" because the lead
|
||||
satellite, Aqua, crosses the equator at the mean local time of approximately 1:30pm. Five
|
||||
of the satellites are currently in orbit, and the sixth satellite is scheduled to be
|
||||
launched in 2008. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-nasa-a-train-satellites/"
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,69 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Carbon Dioxide Concentration: GEOS-5 Model"
|
||||
local Identifier = "noaa-sos-atmosphere-nccs_models-carbon"
|
||||
local Description = [[ Models create a dynamic portrait of the Earth through numerical
|
||||
experiments that simulate our current knowledge of the dynamical and physical processes
|
||||
governing weather and climate variability. This new simulation of carbon dioxide in
|
||||
Earth's atmosphere provides an ultra-high-resolution look at how the key greenhouse gas
|
||||
moves around the globe and fluctuates in volume throughout the year. These three close-up
|
||||
views show how local geography affects the transport of carbon dioxide in the
|
||||
atmosphere. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/carbon-dioxide-concentration-geos-5-model/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
Scale = 0.4,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,99 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Atmospheric Chemistry: GEOS-5 Model"
|
||||
local Identifier = "noaa-sos-atmosphere-nccs_models-chem"
|
||||
local Description = [[ Models create a dynamic portrait of the Earth through numerical
|
||||
experiments that simulate our current knowledge of the dynamical and physical processes
|
||||
governing weather and climate variability. The simulation visualized here captures how
|
||||
winds lift up aerosols from the Earth's surface and transport them around the globe
|
||||
during the period September 1, 2006 to March 17, 2007. Such simulations allow scientists
|
||||
to identify the sources and pathways of these tiny particulates that influence weather
|
||||
and climate. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/atmospheric-chemistry-geos-5-model/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "chem_%Y-%m-%d_%H-%M.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local legend = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "geos-5-legend.jpg",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-1.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-2.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-3.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-4.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-5.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-6.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-7.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-8.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-9.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-10.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-11.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-12.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-13.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-14.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-15.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-16.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-17.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-18.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-19.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-20.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-21.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-22.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-23.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-24.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-25.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-26.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(legend);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(legend)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(legend)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Winds: GEOS-5 Model"
|
||||
local Identifier = "noaa-sos-atmosphere-nccs_models-winds"
|
||||
local Description = [[ Models create a dynamic portrait of the Earth through numerical
|
||||
experiments that simulate our current knowledge of the dynamical and physical processes
|
||||
governing weather and climate variability. The simulation visualized here captures the
|
||||
speed of winds at the tropopause, about 6-9 miles above the Earth's surface during the
|
||||
period September 1, 2006 to March 17, 2007. Such simulations allow scientists to view the
|
||||
intensity and turbulence of the polar and sub-tropic jet streams, which carry weather
|
||||
around the globe. Red, orange and yellow are used for the fastest moving air. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/winds-geos-5-model/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "winds_%Y-%m-%d_%H-%M.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-1.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-2.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-3.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-4.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-5.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-6.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-7.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-8.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-9.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-10.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-11.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-12.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-13.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-14.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-15.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-16.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-17.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-18.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-19.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-20.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-21.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-22.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-23.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-24.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-25.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4000-26.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,75 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Nitrogen Dioxide"
|
||||
local Identifier = "noaa-sos-atmosphere-no2_omsi"
|
||||
local Description = [[ Nitrogen dioxide (NO2) is a key component of urban air pollution.
|
||||
The nitrogen oxides ("NOx" of which NO2 is one component) are emitted from any combustion
|
||||
process. Coal- and gas-fired power plants and vehicles constitute the major anthropogenic
|
||||
(human-produced) sources. Forest fires and lightning are natural sources of NO2, but
|
||||
globally it is clear that anthropogenic sources dominate. High levels of NO2 are
|
||||
significant as they are associated with: 1) haze that reduces visibility; 2) irritation
|
||||
of the eyes, nose, throat, and lungs; 3) acid rain; 4) reduced terrestrial plant growth;
|
||||
5) oxygen-depleting algal blooms; and 6) corrosion of building materials. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/nitrogen-dioxide/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "NO2monthlymean_%Y%m.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "color_bar.jpg",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2880.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Polar Orbiting: NOAA Satellite Tracks"
|
||||
local Identifier = "noaa-sos-atmosphere-noaa_sat-tracks"
|
||||
local Description = [[ NOAA has four POES, Polar Operational Environmental Satellites,
|
||||
currently in orbit. The satellites are named chronologically, based on launch date. NOAA
|
||||
15 was launched in 1998, NOAA 16 was launched in 2000, NOAA 17 was launched in 2002 and
|
||||
NOAA 18 was launched in 2005. In May and August of 2007 two older satellites, NOAA 14 and
|
||||
NOAA 12 respectively, were decommissioned. These satellites orbit the Earth in such a way
|
||||
that they pass over the poles. Each orbit takes approximately 102.1 minutes, allowing the
|
||||
satellites to circle the Earth about 14.1 times each day. The polar orbit enables the
|
||||
satellites to collect daily global data for land, ocean, and atmospheric applications.
|
||||
This data is used a large variety of environmental monitoring applications such as
|
||||
weather analysis and forecasting, climate research and prediction, global sea surface
|
||||
temperature measurements, ocean dynamics research, global vegetation analysis and many
|
||||
other applications. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-noaa-satellite-tracks/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "4096.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Temperature Anomaly: Yearly - 500 - 2006 (Paleoclimate Evidence)"
|
||||
local Identifier = "noaa-sos-atmosphere-pclim"
|
||||
local Description = [[ This animation shows annual average temperature anomalies
|
||||
(departure from normal) over the globe for the past 1,500 years compared to the average
|
||||
temperature (normal) from 1961-1990. This data collected from over 1,000 paleoclimate
|
||||
proxies. Areas shaded red are warmer than normal while areas shaded blue are cooler than
|
||||
normal. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/temperature-anomaly-yearly-500-2006-paleoclimate-evidence/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.jpg",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "raw.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Polar Orbiting: NOAA-17 Satellite Coverage"
|
||||
local Identifier = "noaa-sos-atmosphere-poes_sat"
|
||||
local Description = [[ Satellites allow scientists to observe the Earth from above the
|
||||
atmosphere. The National Oceanic and Atmospheric Administration, NOAA, has several
|
||||
different types of satellites, including geostationary and polar orbiting satellites.
|
||||
These datasets show the path of Polar-orbiting Operational Environmental Satellites, or
|
||||
POES for short. NOAA has two POES in operation currently, a morning and afternoon
|
||||
satellite. The morning satellite crosses the equator on the sun-light side of the Earth
|
||||
in the morning, and the afternoon satellite crosses in the afternoon. Both satellites
|
||||
orbit the Earth 14.1 times per day. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-noaa-17-satellite-coverage/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "poes_cover_%Y%j%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Precipitable Water - Antarctic Expedition - 1902 - 1903"
|
||||
local Identifier = "noaa-sos-atmosphere-reanalysis-antarctic"
|
||||
local Description = [[ Until 2010, the longest globally-complete estimate of the
|
||||
four-dimensional atmospheric circulation was from a dataset produced jointly by NOAA's
|
||||
National Centers for Environmental Prediction and the National Center for Atmospheric
|
||||
Research: the NCEP-NCAR Reanalysis. This dataset of computer-generated weather map
|
||||
reconstructions or "reanalyses" starts from 1948, leaving many important climate events
|
||||
such as 1930's Dust Bowl drought uncovered. To expand the coverage of global gridded
|
||||
reanalyses, the 20th Century Reanalysis Project is an effort led by NOAA's Earth System
|
||||
Research Laboratory Physical Sciences Division and the University of Colorado CIRES
|
||||
Climate Diagnostics Center to produce a reanalysis dataset spanning the entire twentieth
|
||||
century, assimilating only surface observations of synoptic pressure, monthly sea surface
|
||||
temperature and sea ice distribution. The pressure observations have been assembled
|
||||
through international cooperation under the auspices of the Atmospheric Circulation
|
||||
Reconstructions over the Earth initiative, ACRE, and working groups of the Global Climate
|
||||
Observing System and World Climate Research Program. The Project uses a
|
||||
recently-developed Ensemble Filter data assimilation method which directly yields each
|
||||
six-hourly reanalysis field or weather map as the most likely state of the global
|
||||
atmosphere, and also estimates uncertainty in that map. This dataset will provide the
|
||||
first estimates of global tropospheric variability spanning 1871 to present at six-hourly
|
||||
temporal resolution and 2 degree longitude by 2 degree latitude resolution. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/precipitable-water-antarctic-expedition-1902-1903/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
BackgroundColor = { 1.0, 1.0, 1.0, 1.0 },
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Precipitable Water - El Nino - 1917 - 1919"
|
||||
local Identifier = "noaa-sos-atmosphere-reanalysis-elnino"
|
||||
local Description = [[ Until 2010, the longest globally-complete estimate of the
|
||||
four-dimensional atmospheric circulation was from a dataset produced jointly by NOAA's
|
||||
National Centers for Environmental Prediction and the National Center for Atmospheric
|
||||
Research: the NCEP-NCAR Reanalysis. This dataset of computer-generated weather map
|
||||
reconstructions or "reanalyses" starts from 1948, leaving many important climate events
|
||||
such as 1930's Dust Bowl drought uncovered. To expand the coverage of global gridded
|
||||
reanalyses, the 20th Century Reanalysis Project is an effort led by NOAA's Earth System
|
||||
Research Laboratory Physical Sciences Division and the University of Colorado CIRES
|
||||
Climate Diagnostics Center to produce a reanalysis dataset spanning the entire twentieth
|
||||
century, assimilating only surface observations of synoptic pressure, monthly sea surface
|
||||
temperature and sea ice distribution. The pressure observations have been assembled
|
||||
through international cooperation under the auspices of the Atmospheric Circulation
|
||||
Reconstructions over the Earth initiative, ACRE, and working groups of the Global Climate
|
||||
Observing System and World Climate Research Program. The Project uses a
|
||||
recently-developed Ensemble Filter data assimilation method which directly yields each
|
||||
six-hourly reanalysis field or weather map as the most likely state of the global
|
||||
atmosphere, and also estimates uncertainty in that map. This dataset will provide the
|
||||
first estimates of global tropospheric variability spanning 1871 to present at six-hourly
|
||||
temporal resolution and 2 degree longitude by 2 degree latitude resolution. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/precipitable-water-el-nino-1917-1919/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
BackgroundColor = { 1.0, 1.0, 1.0, 1.0 },
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Precipitable Water - Galveston Hurricane - 1900"
|
||||
local Identifier = "noaa-sos-atmosphere-reanalysis-hurricane"
|
||||
local Description = [[ Until 2010, the longest globally-complete estimate of the
|
||||
four-dimensional atmospheric circulation was from a dataset produced jointly by NOAA's
|
||||
National Centers for Environmental Prediction and the National Center for Atmospheric
|
||||
Research: the NCEP-NCAR Reanalysis. This dataset of computer-generated weather map
|
||||
reconstructions or "reanalyses" starts from 1948, leaving many important climate events
|
||||
such as 1930's Dust Bowl drought uncovered. To expand the coverage of global gridded
|
||||
reanalyses, the 20th Century Reanalysis Project is an effort led by NOAA's Earth System
|
||||
Research Laboratory Physical Sciences Division and the University of Colorado CIRES
|
||||
Climate Diagnostics Center to produce a reanalysis dataset spanning the entire twentieth
|
||||
century, assimilating only surface observations of synoptic pressure, monthly sea surface
|
||||
temperature and sea ice distribution. The pressure observations have been assembled
|
||||
through international cooperation under the auspices of the Atmospheric Circulation
|
||||
Reconstructions over the Earth initiative, ACRE, and working groups of the Global Climate
|
||||
Observing System and World Climate Research Program. The Project uses a
|
||||
recently-developed Ensemble Filter data assimilation method which directly yields each
|
||||
six-hourly reanalysis field or weather map as the most likely state of the global
|
||||
atmosphere, and also estimates uncertainty in that map. This dataset will provide the
|
||||
first estimates of global tropospheric variability spanning 1871 to present at six-hourly
|
||||
temporal resolution and 2 degree longitude by 2 degree latitude resolution. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/precipitable-water-galveston-hurricane-1900/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
BackgroundColor = { 1.0, 1.0, 1.0, 1.0 },
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048_png.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Hurricane Sandy: Linear IR - Oct. 2012"
|
||||
local Identifier = "noaa-sos-atmosphere-sandy"
|
||||
local Description = [[ Hurricane Sandy was a memorable and disastrous storm that hit the
|
||||
Caribbean islands and the Mid-Atlantic States in October of 2012.It was the second
|
||||
costliest storm in U.S. history, after Hurricane Katrina. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/precipitable-water-galveston-hurricane-1900/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "linear_rgb_cyl_%Y%m%d_%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Polar Orbiting: NOAA-17 and NOAA-18"
|
||||
local Identifier = "noaa-sos-atmosphere-sunsync_sat"
|
||||
local Description = [[ Satellites allow scientists to observe the Earth from above the
|
||||
atmosphere. The National Oceanic and Atmospheric Administration, NOAA, has several
|
||||
different types of satellites, including geostationary and polar orbiting satellites.
|
||||
These datasets show the path of Polar-orbiting Operational Environmental Satellites, or
|
||||
POES for short. NOAA has two POES in operation currently, a morning and afternoon
|
||||
satellite. The morning satellite crosses the equator on the sun-light side of the Earth
|
||||
in the morning, and the afternoon satellite crosses in the afternoon. Both satellites
|
||||
orbit the Earth 14.1 times per day. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/polar-orbiting-noaa-17-and-noaa-18/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "sunsync_%Y%j%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Temperature Anomaly: Yearly (NOAA) - 1880 - Present"
|
||||
local Identifier = "noaa-sos-atmosphere-temp_anom"
|
||||
local Description = [[ This animation shows Earth's surface temperature from 1880 through
|
||||
2019 compared to the 20th century average. Maps are based on data from NOAA's National
|
||||
Climatic Data Center. In 2016, the combined land and ocean surface temperature was 1.69°F
|
||||
(0.94°C) above the 20th century average, making the year the warmest since records began
|
||||
in 1880. This is the third consecutive year a new global annual temperature record has
|
||||
been set. The first eight months of 2016 set monthly temperatures records and the last
|
||||
four months were ranked among the top five for each month's temperature records. To date,
|
||||
all 16 years of the 21st century rank among the seventeen warmest on record (1998 is
|
||||
currently the eighth warmest.) The five warmest years have all occurred since 2010. 2017
|
||||
was the third warmest, slightly cooler than the previous two. 2018 was the fourth
|
||||
warmest. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/temperature-anomaly-yearly-noaa-1880-present/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "ANOM.yearly.%Y.color.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
BackgroundColor = { 1.0, 1.0, 1.0, 1.0 },
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096_new.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Tropical Widening"
|
||||
local Identifier = "noaa-sos-atmosphere-tropical_widening"
|
||||
local Description = [[ This dataset was developed as part of the EarthNow project, and
|
||||
shows the changes in the tropical zone boundaries over the last three decades. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/tropical-widening/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "2048.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.jpg",
|
||||
FaceCamera = false,
|
||||
Scale = 0.175,
|
||||
CartesianPosition = { 0.0, -0.3, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Typhoon Haiyan: Water Vapor and SST - Oct - Nov 2013"
|
||||
local Identifier = "noaa-sos-atmosphere-typhoon_haiyan-wvsst"
|
||||
local Description = [[ Typhoon Haiyan, also known in the Phillippines as Typhoon Yolanda,
|
||||
may be the strongest recorded tropical cyclone to make landfall with sustained speeds up
|
||||
to 195 mph. If confirmed, it would beat the previous record holder, Hurricane Camille
|
||||
(1969). This dataset is taken from the Real-Time Linear IR satellite dataset and
|
||||
Real-time: SST from October 30th to November 12th, 2013. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/typhoon-haiyan-water-vapor-and-sst-oct-nov-2013/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local track = {
|
||||
Identifier = Identifier .. "-track",
|
||||
Name = Name .. " (Track)",
|
||||
FilePath = syncedDirectory .. "track.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", track)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", track)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(track)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Typhoon Haiyan - Oct - Nov 2013"
|
||||
local Identifier = "noaa-sos-atmosphere-typhoon_haiyan"
|
||||
local Description = [[ Typhoon Haiyan, also known in the Phillippines as Typhoon Yolanda,
|
||||
may be the strongest recorded tropical cyclone to make landfall with sustained speeds up
|
||||
to 195 mph. If confirmed, it would beat the previous record holder, Hurricane Camille
|
||||
(1969). This dataset is taken from the Real-Time Linear IR satellite dataset from October
|
||||
30th to November 12th, 2013. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/typhoon-haiyan-oct-nov-2013/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "linear_rgb_cyl_%Y%m%d_%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local track = {
|
||||
Identifier = Identifier .. "-track",
|
||||
Name = Name .. " (Track)",
|
||||
FilePath = syncedDirectory .. "track.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", track)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", track)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(track)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Volcanic Ash Eruption: Iceland"
|
||||
local Identifier = "noaa-sos-atmosphere-volcano_ash"
|
||||
local Description = [[ Eyjafjallajokull, a glacier covered volcano in southern Iceland,
|
||||
erupted explosively on April 14, 2010. The name Eyjafjallajokull is Icelandic for
|
||||
"island-mountain glacier." The volcano initially erupted on March 20, but this original
|
||||
eruption was much smaller and only caused a brief evacuation of the local area. The April
|
||||
14 event was 10 to 20 times more powerful and had international impacts. Locally, the
|
||||
eruption and resulting lava melted the surrounding glacier, causing major flooding.
|
||||
Internationally, air traffic was impacted for several days following the eruption. The
|
||||
volcano ejected ash over 30,000ft into the atmosphere, causing significant disruptions to
|
||||
the European and Trans-Atlantic air travel. Airspace over much of northern Europe was
|
||||
closed from April 15 through April 23 for concerns over the abrasive volcanic ash causing
|
||||
engine failures. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/volcanic-ash-eruption-iceland/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2992.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "NOAA Science on a Sphere. Agriculture: Cropland Intensity"
|
||||
local Identifier = "noaa-sos-land-agriculture-cropland"
|
||||
local Description = [[ These visualizations, created by the University of Minnesota's
|
||||
Institute on the Environment, show the global land use intensity for pastureland and
|
||||
cropland. Cropland is land devoted to growing plants for humans use for food, material,
|
||||
or fuel. Pastureland is land used for raising and grazing animals. Altogether, cropland
|
||||
covers about 16 million square kilometers, an area of land approximately the size of
|
||||
South America. Global pastureland occupies more than 30 million square kilometers, about
|
||||
the area of Africa. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/agriculture-cropland-intensity/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "4096.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_countries = {
|
||||
Identifier = Identifier .. "-countries",
|
||||
Name = Name .. " (w/ countries)",
|
||||
FilePath = syncedDirectory .. "4096_countries.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local legend = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "legend.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_countries)
|
||||
openspace.addScreenSpaceRenderable(legend);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_countries)
|
||||
openspace.removeScreenSpaceRenderable(legend)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(layer_countries)
|
||||
asset.export(legend)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "NOAA Science on a Sphere. Agriculture: Pastureland Intensity"
|
||||
local Identifier = "noaa-sos-land-agriculture-pastureland"
|
||||
local Description = [[ These visualizations, created by the University of Minnesota's
|
||||
Institute on the Environment, show the global land use intensity for pastureland and
|
||||
cropland. Cropland is land devoted to growing plants for humans use for food, material,
|
||||
or fuel. Pastureland is land used for raising and grazing animals. Altogether, cropland
|
||||
covers about 16 million square kilometers, an area of land approximately the size of
|
||||
South America. Global pastureland occupies more than 30 million square kilometers, about
|
||||
the area of Africa. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/agriculture-pastureland-intensity/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "4096.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_countries = {
|
||||
Identifier = Identifier .. "-countries",
|
||||
Name = Name .. " (w/ countries)",
|
||||
FilePath = syncedDirectory .. "4096_countries.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local legend = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "legend.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_countries)
|
||||
openspace.addScreenSpaceRenderable(legend);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_countries)
|
||||
openspace.removeScreenSpaceRenderable(legend)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(layer_countries)
|
||||
asset.export(legend)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
local Name = "NOAA Science on a Sphere. Bird Migration Patterns - Western Hemisphere"
|
||||
local Identifier = "noaa-sos-land-birds"
|
||||
local Description = [[ This dataset shows the migration of 118 species of terrestrial
|
||||
bird populations in the Western Hemisphere. Each dot represents the estimated location of
|
||||
the center of each species' population for each day of the year. These estimations come
|
||||
from millions of observations from the eBird citizen-science database. eBird is a
|
||||
real-time, online checklist program, launched in 2002 by the Cornell Lab of Ornithology
|
||||
and National Audubon Society, that allows birdwatchers to enter their observations. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/bird-migration-patterns-western-hemisphere/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "birds.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "NOAA Science on a Sphere. Blue Marble: without Clouds"
|
||||
local Identifier = "noaa-sos-land-blue_marble-blue_marble"
|
||||
local Description = [[ The Blue Marble is an incredibly detailed, true-color depiction of
|
||||
the Earth. NASA is responsible for this dataset made from a compilation of satellite
|
||||
images throughout 2001. Most of the information came from NASA's MODIS, the Moderate
|
||||
Resolution Imaging Spectroradiometer, which is attached to the Terra satellite 435 miles
|
||||
above Earth. The background image of the land and oceans was created using data from June
|
||||
through September of 2001. This could not be done in a single day or even a week because
|
||||
on any given day clouds are blocking a significant portion of the surface. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/blue-marble-without-clouds/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "4096.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Blue Marble: with Topography - Seasonal"
|
||||
local Identifier = "noaa-sos-land-blue_marble-next_gen-topo"
|
||||
local Description = [[ The Blue Marble is an incredibly detailed, true-color depiction of
|
||||
the Earth. The Blue Marble Next Generation is an update on the original that has greater
|
||||
detail. "The original Blue Marble was a composite of four months of MODIS observations
|
||||
with a spatial resolution (level of detail) of 1 square kilometer per pixel. Blue Marble:
|
||||
Next Generation offers a years worth of monthly composites at a spatial resolution of
|
||||
500 meters.". ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/blue-marble-with-topography-seasonal/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "world.%Y%m.3x5400x2700.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "5400.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Blue Marble: with Topography and Bathymetry"
|
||||
local Identifier = "noaa-sos-land-blue_marble-next_gen-topo_bathy"
|
||||
local Description = [[ The Blue Marble is an incredibly detailed, true-color depiction of
|
||||
the Earth. The Blue Marble Next Generation is an update on the original that has greater
|
||||
detail. "The original Blue Marble was a composite of four months of MODIS observations
|
||||
with a spatial resolution (level of detail) of 1 square kilometer per pixel. Blue Marble:
|
||||
Next Generation offers a years worth of monthly composites at a spatial resolution of
|
||||
500 meters.". ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/blue-marble-with-topography-seasonal/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "world.topo.bathy.%Y%m.3x5400x2700.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "5400.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,66 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Blue Marble and Nighttime Lights"
|
||||
local Identifier = "noaa-sos-land-bluemarble_nightlights"
|
||||
local Description = [[ This dataset shows the Earth with daytime and nighttime views of
|
||||
the Earth, to demonstrate how only half of the Earth is illumintated at one time. The
|
||||
Blue Marble is an incredibly detailed, true-color depiction of the Earth, and is shown on
|
||||
the daylight side of the Earth in this dataset. NASA is responsible for The Blue Marble,
|
||||
made from a compilation of satellite images throughout 2001. Most of the information came
|
||||
from NASA's MODIS, the Moderate Resolution Imaging Spectroradiometer, which is attached
|
||||
to the Terra satellite 435 miles above Earth. The background image of the land and oceans
|
||||
was created using data from June through September of 2001. This could not be done in a
|
||||
single day or even a week because on any given day clouds are blocking a significant
|
||||
portion of the surface. The cloud image is a composite of three days worth of data. The
|
||||
first two days of data were collected in the visible wavelength and the third day was
|
||||
needed to get a view of the clouds over the poles using thermal infrared imagery. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/blue-marble-and-nighttime-lights/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-1.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-2.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-3.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-4.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-5.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "4096-6.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Blue Marble - Seasonal"
|
||||
local Identifier = "noaa-sos-land-seasonal_blue_marble"
|
||||
local Description = [[ The Blue Marble is an incredibly detailed, true-color depiction of
|
||||
the Earth. NASA is responsible for this dataset made from a compilation of satellite
|
||||
images throughout 2001. Most of the information came from NASA's MODIS, the Moderate
|
||||
Resolution Imaging Spectroradiometer, which is attached to the Terra satellite 435 miles
|
||||
above Earth. The background image of the land and oceans was created using data from June
|
||||
through September of 2001. This could not be done in a single day or even a week because
|
||||
on any given day clouds are blocking a significant portion of the surface. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/blue-marble-seasonal/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "world%Y%jx4kx2k.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Dams and Reservoirs - 1800 - 2010"
|
||||
local Identifier = "noaa-sos-land-dams-global"
|
||||
local Description = [[ Humans have manipulated rivers for thousands of years, but over
|
||||
the last 200 years dams on rivers have become rampant. Reservoirs and dams are
|
||||
constructed for water storage, to reduce the risk of river flooding, and for the
|
||||
generation of power. They are one of the major footprints of humans on Earth and change
|
||||
the world's hydrological cycle. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/dams-and-reservoirs-1800-2010/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer_images = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_images)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_images)
|
||||
end)
|
||||
|
||||
asset.export(layer_images)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Dams and Reservoirs: Mississippi River - 1800 - 2010"
|
||||
local Identifier = "noaa-sos-land-dams-mississippi"
|
||||
local Description = [[ This dataset illustrates the construction of dams in the
|
||||
Mississippi River Basin from 1800 to the present. We display all dams listed in the
|
||||
Global Reservoir and Dam Database (GRanD). All dams that have a reservoir with a storage
|
||||
capacity of more than 0.1 cubic kilometers are included, and many smaller dams were added
|
||||
where data were available. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/dams-and-reservoirs-mississippi-river-1800-2010/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Dams and Reservoirs: Yangtze - 1800 - 2010"
|
||||
local Identifier = "noaa-sos-land-dams-yangtze"
|
||||
local Description = [[ Humans have manipulated rivers for thousands of years, but over
|
||||
the last 200 years dams on rivers have become rampant. Reservoirs and dams are
|
||||
constructed for water storage, to reduce the risk of river flooding, and for the
|
||||
generation of power. They are one of the major footprints of humans on Earth and change
|
||||
the world's hydrological cycle. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/dams-and-reservoirs-yangtze-1800-2010/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Day/Night Terminator (daily)"
|
||||
local Identifier = "noaa-sos-land-day_night-06z_only"
|
||||
local Description = [[ The line that separates day and night is called the terminator. It
|
||||
is also referred to as the "grey line" and the "twilight zone." It is a fuzzy line due to
|
||||
our atmosphere bending sunlight. In fact, the atmosphere bends sunlight by half a degree,
|
||||
which is about 37 miles (60 km). It is commonly thought that while half of the Earth is
|
||||
covered in darkness, the other half is covered in sunlight. This is actually not true
|
||||
because of the bending of the sunlight results in the land covered by sunlight having
|
||||
greater area than the land covered by darkness. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/daynight-terminator-daily/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "daynite_%Y%j%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Day/Night Terminator (hourly)"
|
||||
local Identifier = "noaa-sos-land-day_night-full_year"
|
||||
local Description = [[ The line that separates day and night is called the terminator. It
|
||||
is also referred to as the "grey line" and the "twilight zone." It is a fuzzy line due to
|
||||
our atmosphere bending sunlight. In fact, the atmosphere bends sunlight by half a degree,
|
||||
which is about 37 miles (60 km). It is commonly thought that while half of the Earth is
|
||||
covered in darkness, the other half is covered in sunlight. This is actually not true
|
||||
because of the bending of the sunlight results in the land covered by sunlight having
|
||||
greater area than the land covered by darkness. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/daynight-terminator-hourly/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "daynite_%Y%j%H%M.jpg"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048-1.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "2048-2.zip", imagesDestination, true)
|
||||
openspace.unzipFile(syncedDirectory .. "2048-3.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Day/Night Terminator (single day)"
|
||||
local Identifier = "noaa-sos-land-day_night-oneday"
|
||||
local Description = [[ The line that separates day and night is called the terminator. It
|
||||
is also referred to as the "grey line" and the "twilight zone." It is a fuzzy line due to
|
||||
our atmosphere bending sunlight. In fact, the atmosphere bends sunlight by half a degree,
|
||||
which is about 37 miles (60 km). It is commonly thought that while half of the Earth is
|
||||
covered in darkness, the other half is covered in sunlight. This is actually not true
|
||||
because of the bending of the sunlight results in the land covered by sunlight having
|
||||
greater area than the land covered by darkness. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/daynight-terminator-single-day/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "2048.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Nighttime Lights Comparison - 1992 and 2002"
|
||||
local Identifier = "noaa-sos-land-earth_night-1992_2002"
|
||||
local Description = [[ The data was recorded by the Defense Meteorological Satellite
|
||||
Program (DMSP) in the National Geophysical Data Center (NGDC), now part of NOAA National
|
||||
Centers for Environmental Information (NCEI). The data was collected using polar orbiting
|
||||
satellites that provide full cover of the globe twice a day. The satellites have an
|
||||
Operation Linescan system which allows them to detect low levels of visible-near infrared
|
||||
radiance at night. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights-comparison-1992-and-2002/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer_1992 = {
|
||||
Identifier = Identifier .. "-1992",
|
||||
Name = Name .. " (1992)",
|
||||
FilePath = syncedDirectory .. "Nightlights_1992.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_2002 = {
|
||||
Identifier = Identifier .. "-2002",
|
||||
Name = Name .. " (2002)",
|
||||
FilePath = syncedDirectory .. "Nightlights_2002.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_1992)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_2002)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_1992)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_2002)
|
||||
end)
|
||||
|
||||
asset.export(layer_1992)
|
||||
asset.export(layer_2002)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Nighttime Lights Comparison - 1992, 2000, and 2008"
|
||||
local Identifier = "noaa-sos-land-earth_night-1992_2008"
|
||||
local Description = [[ The data was recorded by the Defense Meteorological Satellite
|
||||
Program (DMSP) in the National Geophysical Data Center (NGDC), now part of NOAA National
|
||||
Centers for Environmental Information (NCEI). The data was collected using polar orbiting
|
||||
satellites that provide full cover of the globe twice a day. The satellites have an
|
||||
Operation Linescan system which allows them to detect low levels of visible-near
|
||||
infrared radiance at night. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights-comparison-1992-2000-and-2008/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "8000.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Nighttime Lights Comparison - 1992 and 2009"
|
||||
local Identifier = "noaa-sos-land-earth_night-1992_2009"
|
||||
local Description = [[ The data was recorded by the Defense Meteorological Satellite
|
||||
Program (DMSP) in the National Geophysical Data Center (NGDC), now part of NOAA National
|
||||
Centers for Environmental Information (NCEI). The data was collected using polar orbiting
|
||||
satellites that provide full cover of the globe twice a day. The satellites have an
|
||||
Operation Linescan system which allows them to detect low levels of visible-near infrared
|
||||
radiance at night. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights-comparison-1992-and-2009/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "5000.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "colorbar.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Nighttime Lights - 2012"
|
||||
local Identifier = "noaa-sos-land-earth_night-2012"
|
||||
local Description = [[ Earth at Night has been an SOS-user favorite dataset for many
|
||||
years. Black Marble 2012 is the newest version of the spectacular view of our planet from
|
||||
near-Earth orbit at night, which is the result of a partnership between NOAA, NASA, and
|
||||
the Department of Defense. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights-2012/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "3600.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Nighttime Lights (colorized)"
|
||||
local Identifier = "noaa-sos-land-earth_night-color_nightlights"
|
||||
local Description = [[ The data was recorded by the Defense Meteorological Satellite
|
||||
Program (DMSP) in the National Geophysical Data Center (NGDC), now part of NOAA National
|
||||
Centers for Environmental Information (NCEI). The data was collected using polar orbiting
|
||||
satellites that provide full cover of the globe twice a day. The satellites have an
|
||||
Operation Linescan system which allows them to detect low levels of visible-near infrared
|
||||
radiance at night. With this data, it is possible to detect clouds illuminated by
|
||||
moonlight, lights from cities and towns, industrial sites, gas flares, fires, lightning,
|
||||
and aurora. The Nighttime Lights of the World data set was complied from Defense
|
||||
Meteorological Satellite Program (DMSP) data spanning October 1994 - March 1995. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights-colorized/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "4096.png",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Nighttime Lights"
|
||||
local Identifier = "noaa-sos-land-earth_night-nightlights"
|
||||
local Description = [[ The data was recorded by the Defense Meteorological Satellite
|
||||
Program (DMSP) in the National Geophysical Data Center (NGDC), now part of NOAA National
|
||||
Centers for Environmental Information (NCEI). The data was collected using polar orbiting
|
||||
satellites that provide full cover of the globe twice a day. The satellites have an
|
||||
Operation Linescan system which allows them to detect low levels of visible-near infrared
|
||||
radiance at night. With this data, it is possible to detect clouds illuminated by
|
||||
moonlight, lights from cities and towns, industrial sites, gas flares, fires, lightning,
|
||||
and aurora. The Nighttime Lights of the World data set was complied from Defense
|
||||
Meteorological Satellite Program (DMSP) data spanning October 1994 - March 1995. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/nighttime-lights/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "4800.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,102 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Earthquakes: Cumulative - 1980 - 1995"
|
||||
local Identifier = "noaa-sos-land-earthquake-1980_1995_quakes"
|
||||
local Description = [[ It is estimated that there are 500,000 detectable earthquakes in
|
||||
the world each year. Of those, 100,000 can be felt and 100 of them cause damage. Anything
|
||||
that causes seismic waves to radiate throughout the Earth is an earthquake. The cause of
|
||||
earthquakes can be natural, such as one tectonic plate slipping below another, or
|
||||
anthropogenic (cause by humans), such as drilling for fossil fuels, extraction of
|
||||
minerals, huge explosions, and the collapse of large buildings. Because most natural
|
||||
earthquakes occur due to slipping plates, the boundaries between tectonic plates are "hot
|
||||
spots" for earthquakes. In the Pacific Ocean, the Pacific Plate is referred to as the
|
||||
Ring of Fire because this is one of the most active plates where earthquakes and
|
||||
volcanoes frequently occur. In order to rate the strength and magnitude of earthquakes,
|
||||
the Richter magnitude scale was created. It is a base-10 logarithm scale of ground motion
|
||||
100km from the epicenter. Every whole-number increase in magnitude means the amplitude of
|
||||
the seismic wave is ten times greater. 4.0 - 4.9 on the scale is considered light, with
|
||||
some shaking of indoor items and significant damage unlikely. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/earthquakes-cumulative-1980-1995/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local legend = {
|
||||
Identifier = Identifier .. "-legend",
|
||||
Name = Name .. " (Legend)",
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "legend.png",
|
||||
FaceCamera = false,
|
||||
Scale = 0.3,
|
||||
CartesianPosition = { 0.0, -0.6, -2.0 }
|
||||
}
|
||||
|
||||
local quakebar = {
|
||||
Identifier = Identifier .. "-quake",
|
||||
Name = Name .. " (Quake)",
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "quakebar.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.3, -2.0 }
|
||||
}
|
||||
|
||||
local quakebar_combined = {
|
||||
Identifier = Identifier .. "-combined",
|
||||
Name = Name .. " (Combined)",
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
Enabled = false,
|
||||
TexturePath = syncedDirectory .. "quakebar_combined.png",
|
||||
FaceCamera = false,
|
||||
Scale = 0.6,
|
||||
CartesianPosition = { 0.5, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "1024.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(legend);
|
||||
openspace.addScreenSpaceRenderable(quakebar);
|
||||
openspace.addScreenSpaceRenderable(quakebar_combined);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(legend)
|
||||
openspace.removeScreenSpaceRenderable(quakebar)
|
||||
openspace.removeScreenSpaceRenderable(quakebar_combined)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(legend)
|
||||
asset.export(quakebar)
|
||||
asset.export(quakebar_combined)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,103 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Earthquakes - 2001-2015"
|
||||
local Identifier = "noaa-sos-land-earthquake-2001_2015"
|
||||
local Description = [[ This animation shows every recorded earthquake in sequence as they
|
||||
occurred from January 1, 2001, through December 31, 2015, at a rate of 30 days per
|
||||
second. The earthquake hypocenters first appear as flashes then remain as colored circles
|
||||
before shrinking with time so as not to obscure subsequent earthquakes. The size of the
|
||||
circle represents the earthquake magnitude while the color represents its depth within
|
||||
the earth. At the end of the animation it will first show all quakes in this 15-year
|
||||
period. Next, it will show only those earthquakes greater than magnitude 6.5, the
|
||||
smallest earthquake size known to make a tsunami. Finally it will only show those
|
||||
earthquakes with magnitudes of magnitude 8.0 or larger, the "great" earthquakes most
|
||||
likely to pose a tsunami threat when they occur under the ocean or near a coastline and
|
||||
when they are shallow within the earth (less than 100 km or 60 mi. deep). ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/earthquakes-2001-2015/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer_allquakes = {
|
||||
Identifier = Identifier .. "-allquakes",
|
||||
Name = Name .. " (All Quakes)",
|
||||
FilePath = syncedDirectory .. "All_Quakes_2001-2015_4k.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_quake_basemap = {
|
||||
Identifier = Identifier .. "-quake-basemap",
|
||||
Name = Name .. " (Quake Basemap)",
|
||||
FilePath = syncedDirectory .. "quake_basemap_4k.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_tsunami_basemap = {
|
||||
Identifier = Identifier .. "-tsunami-basemap",
|
||||
Name = Name .. " (Tsunami Basemap)",
|
||||
FilePath = syncedDirectory .. "Tsunami_basemap_4k.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_quakes_gte6_5 = {
|
||||
Identifier = Identifier .. "-gte6_5",
|
||||
Name = Name .. " (GTE 6.5)",
|
||||
FilePath = syncedDirectory .. "Quakes_gte6.5_2001-2015_4k.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_quakes_gte8 = {
|
||||
Identifier = Identifier .. "-gte8",
|
||||
Name = Name .. " (GTE 8.0)",
|
||||
FilePath = syncedDirectory .. "Quakes_gte8_2001-2015_4k.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local legend = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "Earthquake_Legend.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_allquakes)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quake_basemap)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_tsunami_basemap)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quakes_gte6_5)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quakes_gte8)
|
||||
openspace.addScreenSpaceRenderable(legend);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_allquakes)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quake_basemap)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_tsunami_basemap)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quakes_gte6_5)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quakes_gte8)
|
||||
openspace.removeScreenSpaceRenderable(legend)
|
||||
end)
|
||||
|
||||
asset.export(layer_allquakes)
|
||||
asset.export(layer_quake_basemap)
|
||||
asset.export(layer_tsunami_basemap)
|
||||
asset.export(layer_quakes_gte6_5)
|
||||
asset.export(layer_quakes_gte8)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,104 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Earthquakes of the 20th Century"
|
||||
local Identifier = "noaa-sos-land-earthquakes_1901_2000"
|
||||
local Description = [[ This animation shows every recorded earthquake in sequence as they
|
||||
occurred from January 1, 1901, through December 31, 2000, at a rate of 1 year per second.
|
||||
The earthquake hypocenters first appear as flashes then remain as colored circles before
|
||||
shrinking with time so as not to obscure subsequent earthquakes. The size of the circle
|
||||
represents the earthquake magnitude while the color represents its depth within the
|
||||
earth. At the end of the animation it will first show all quakes in this 100-year period.
|
||||
Next, it will show only those earthquakes greater than magnitude 6.5, the smallest
|
||||
earthquake size known to make a tsunami. It will then show only those earthquakes with
|
||||
magnitudes of 8.0 or larger, the "great" earthquakes most likely to pose a tsunami
|
||||
threat when they occur under the ocean or near a coastline and when they are shallow
|
||||
within the earth (less than 100 km or 60 mi. deep). The animation concludes by showing
|
||||
the plate boundary faults responsible for the majority of all of these earthquakes. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/earthquakes-of-the-20th-century/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer_allquakes = {
|
||||
Identifier = Identifier .. "-allquakes",
|
||||
Name = Name .. " (All Quakes)",
|
||||
FilePath = syncedDirectory .. "All_Quakes_1901-2000_4k.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_quake_basemap = {
|
||||
Identifier = Identifier .. "-quake-basemap",
|
||||
Name = Name .. " (Quake Basemap)",
|
||||
FilePath = syncedDirectory .. "quake_basemap_4k.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_plate_boundaries = {
|
||||
Identifier = Identifier .. "-plate_boundaries",
|
||||
Name = Name .. " (Plate Boundaries)",
|
||||
FilePath = syncedDirectory .. "Plate_Boundaries_4k.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_quakes_gte6_5 = {
|
||||
Identifier = Identifier .. "-gte6_5",
|
||||
Name = Name .. " (GTE 6.5)",
|
||||
FilePath = syncedDirectory .. "Quakes_gte6.5_1901-2000_4k.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local layer_quakes_gte8 = {
|
||||
Identifier = Identifier .. "-gte8",
|
||||
Name = Name .. " (GTE 8.0)",
|
||||
FilePath = syncedDirectory .. "Quakes_gte8_1901-2000_4k.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local legend = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "Earthquake_Legend.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_allquakes)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quake_basemap)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_plate_boundaries)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quakes_gte6_5)
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_quakes_gte8)
|
||||
openspace.addScreenSpaceRenderable(legend);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_allquakes)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quake_basemap)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_plate_boundaries)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quakes_gte6_5)
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer_quakes_gte8)
|
||||
openspace.removeScreenSpaceRenderable(legend)
|
||||
end)
|
||||
|
||||
asset.export(layer_allquakes)
|
||||
asset.export(layer_quake_basemap)
|
||||
asset.export(layer_plate_boundaries)
|
||||
asset.export(layer_quakes_gte6_5)
|
||||
asset.export(layer_quakes_gte8)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Earthquakes and Eruptions - 1960 - 2010"
|
||||
local Identifier = "noaa-sos-land-earthquakes_and_eruptions"
|
||||
local Description = [[ Most of Earth's earthquakes and volcanic eruptions occur at the
|
||||
boundaries of the tectonic plates. This dataset shows all earthquakes of magnitude 5.0 or
|
||||
greater from 1960 through 2010. The earthquakes are illustrated with a large white dot at
|
||||
the time of the event. The size of the dot is proportional to the magnitude of the
|
||||
earthquake. A musical tone is generated for the larger events. The larger the earthquake,
|
||||
the lower the tone. The white dots eventually turn gray and slowly shrink to single-pixel
|
||||
dots. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/earthquakes-and-eruptions-1960-2010/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ImageSequenceTileLayer",
|
||||
FolderPath = imagesDestination,
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local legend = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "eqmaglegend.png",
|
||||
FaceCamera = false,
|
||||
CartesianPosition = { 0.0, -0.5, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(legend);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(legend)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(legend)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Earth's Magnetic Lines"
|
||||
local Identifier = "noaa-sos-land-earths_magnetism_magnetic_lines"
|
||||
local Description = [[ Earth is like a giant magnet with a North and South Pole. However,
|
||||
the magnetic North and South Pole are not aligned with the Geographic North and South
|
||||
Pole. The Geographic North Pole is defined by the latitude 90° N and is the axis of the
|
||||
Earth's rotation. The Magnetic North Pole is where the Earth's magnetic field points
|
||||
vertically downward. The Earth creates its own magnetic field from the electric currents
|
||||
created in the liquid iron-nickel core. In order to illustrate the earth's magnetic
|
||||
field, three datasets for Earth's Magnetism have been created. All of these datasets show
|
||||
the changes in the magnetic field from 1590 - 2010. The first dataset shows the magnetic
|
||||
field lines at the surface of the Earth. The magnetic poles are indicated by stars. The
|
||||
blue lines show where the magnetic field dips into the Earth and the red lines show where
|
||||
the magnetic field emerges from the Earth. Where the field lines are horizontal to the
|
||||
Earth, between the red and blue lines, is the magnetic equator shaded yellow. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/earths-magnetic-lines/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "%Y.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,67 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Earth's Magnetic Field (compass needles)"
|
||||
local Identifier = "noaa-sos-land-earths_magnetism_magnets"
|
||||
local Description = [[ Earth is like a giant magnet with a North and South Pole. However,
|
||||
the magnetic North and South Pole are not aligned with the Geographic North and South
|
||||
Pole. The Geographic North Pole is defined by the latitude 90° N and is the axis of the
|
||||
Earth's rotation. The Magnetic North Pole is where the Earth's magnetic field points
|
||||
vertically downward. The Earth creates its own magnetic field from the electric currents
|
||||
created in the liquid iron-nickel core. In order to illustrate the earth's magnetic
|
||||
field, three datasets for Earth's Magnetism have been created. All of these datasets show
|
||||
the changes in the magnetic field from 1590 - 2010. The first dataset shows the magnetic
|
||||
field lines at the surface of the Earth. The magnetic poles are indicated by stars. The
|
||||
blue lines show where the magnetic field dips into the Earth and the red lines show where
|
||||
the magnetic field emerges from the Earth. Where the field lines are horizontal to the
|
||||
Earth, between the red and blue lines, is the magnetic equator shaded yellow. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/earths-magnetic-field-compass-needles/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "%Y.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "ETOPO1: Topography and Bathymetry"
|
||||
local Identifier = "noaa-sos-land-etopo1"
|
||||
local Description = [[ ETOPO1 is a 1 arc-minute global relief model of Earth's surface
|
||||
that integrates land topography and ocean bathymetry. It was built from numerous global
|
||||
and regional data sets, and is available in "Ice Surface" (top of Antarctic and Greenland
|
||||
ice sheets) and "Bedrock" (base of the ice sheets) versions. The "Ice Surface" version is
|
||||
available for Science On a Sphere. This dataset is a higher resolution version of
|
||||
ETOPO2, which is a 2 arc-minute global relief model of Earth's surface. An arc-minute is
|
||||
1/60 of a degree. Scientists use high resolution maps like ETOPO1 to improve accuracy in
|
||||
tsunami forecasting, modeling, and warnings, and also to enhance ocean circulation
|
||||
modeling and Earth visualization. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/etopo1-topography-and-bathymetry/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "4096.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
local colorbar = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "ScreenSpaceImageLocal",
|
||||
TexturePath = syncedDirectory .. "etopo1_color_scale.png",
|
||||
FaceCamera = false,
|
||||
Scale = 0.1,
|
||||
CartesianPosition = { 0.5, 0.0, -2.0 }
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.addScreenSpaceRenderable(colorbar);
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
openspace.removeScreenSpaceRenderable(colorbar)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
asset.export(colorbar)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "ETOPO2: Topography and Bathymetry (bright colors)"
|
||||
local Identifier = "noaa-sos-land-etopo2-earth_bright"
|
||||
local Description = [[ Many datasets have been created by utilizing the ETOPO2 dataset,
|
||||
which was generated from digital databases of seafloor and land elevations on a 2-minute
|
||||
latitude/longitude grid (1 minute of latitude = 1 nautical mile, or 1.15 statute miles).
|
||||
The ETOPO2 is a combination of satellite altimetry observations, shipboard echo-sounding
|
||||
measurements, data from the Digital Bathymetric Data Base Variable Resolution and data
|
||||
from the GLOBE project which has a global digital elevation model. Earth Color Enhanced
|
||||
uses green, yellow, orange, red and white to denote increasing elevation of the land. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/etopo2-topography-and-bathymetry-bright-colors/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "10800.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "ETOPO2: Topography and Bathymetry (color enhanced)"
|
||||
local Identifier = "noaa-sos-land-etopo2-earth_color"
|
||||
local Description = [[ Many datasets have been created by utilizing the ETOPO2 dataset,
|
||||
which was generated from digital data bases of seafloor and land elevations on a 2-minute
|
||||
latitude/longitude grid (1 minute of latitude = 1 nautical mile, or 1.15 statute mile).
|
||||
The ETOPO2 is a combination of satellite altimetry observations, shipboard echo-sounding
|
||||
measurements, data from the Digital Bathymetric Data Base Variable Resolution and data
|
||||
from the GLOBE project which has a global digital elevation model. This dataset uses
|
||||
green, yellow, orange, red and white to denote increasing elevation of the land. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/etopo2-topography-and-bathymetry-color-enhanced/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "7200.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "ETOPO2: Topography and Bathymetry (shaded colors)"
|
||||
local Identifier = "noaa-sos-land-etopo2-earth_shaded"
|
||||
local Description = [[ Many datasets have been created by utilizing the ETOPO2 dataset.
|
||||
This dataset was generated from digital data bases of seafloor and land elevations on a
|
||||
2-minute latitude/longitude grid (1 minute of latitude = 1 nautical mile, or 1.15 statute
|
||||
mile). ETOPO2 is a combination of satellite altimetry observations, shipboard
|
||||
echo-sounding measurements, data from the Digital Bathymetric Data Base Variable
|
||||
Resolution and data from the GLOBE project which has a global digital elevation
|
||||
model. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/etopo2-topography-and-bathymetry-shaded-colors/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "5400.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "ETOPO2: Topography and Bathymetry (natural colors)"
|
||||
local Identifier = "noaa-sos-land-etopo2-earth_topo"
|
||||
local Description = [[ Many datasets have been created by utilizing the ETOPO2 dataset,
|
||||
which was generated from digital data bases of seafloor and land elevations on a 2-minute
|
||||
latitude/longitude grid (1 minute of latitude = 1 nautical mile, or 1.15 statute mile).
|
||||
The ETOPO2 is a combination of satellite altimetry observations, shipboard echo-sounding
|
||||
measurements, data from the Digital Bathymetric Data Base Variable Resolution and data
|
||||
from the GLOBE project which has a global digital elevation model. The topography and
|
||||
bathymetry side of the Hot Topo dataset was created with this digital data base, as well
|
||||
as the datasets EarthLiteColor, EarthOne, and Earth Land/Bathymetry. EarthOne and Earth
|
||||
Land/Bathymetry are shaded in relatively true color, while Hot Topo and EarthLiteColor
|
||||
use green, yellow, orange, red and white to denote increasing elevation of the land. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/etopo2-topography-and-bathymetry-natural-colors/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "4096.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "ETOPO2: Bathymetry"
|
||||
local Identifier = "noaa-sos-land-etopo2-landsat"
|
||||
local Description = [[ Many datasets have been created by utilizing the ETOPO2 dataset,
|
||||
which was generated from digital data bases of seafloor and land elevations on a 2-minute
|
||||
latitude/longitude grid (1 minute of latitude = 1 nautical mile, or 1.15 statute mile).
|
||||
The ETOPO2 is a combination of satellite altimetry observations, shipboard echo-sounding
|
||||
measurements, data from the Digital Bathymetric Data Base Variable Resolution and data
|
||||
from the GLOBE project which has a global digital elevation model. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/etopo2-bathymetry/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
FilePath = syncedDirectory .. "4096.jpg",
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
local globeIdentifier = asset.require("../../earth").Earth.Identifier
|
||||
|
||||
|
||||
local Name = "Fires - 2009"
|
||||
local Identifier = "noaa-sos-land-fire"
|
||||
local Description = [[ In order to monitor the fires occurring globally, a special sensor
|
||||
has been mounted on the Terra and Aqua satellites. The sensor, named the Moderate
|
||||
Resolution Imaging Spectroradiometer (MODIS), is able to provide daily satellite images
|
||||
of the Earth's landmasses in near real-time using the MODIS Rapid Response System. There
|
||||
are many uses for the data collected from MODIS, such as monitoring global fires by
|
||||
detecting the abnormally high temperature anomalies at the surface. When a location is
|
||||
much warmer than the surrounding area, it suggests the presence of a fire or a lava flow.
|
||||
It is important to know the size, location and intensity of fires because of the damage
|
||||
that they can cause, and also to help scientists understand the emissions from the fires
|
||||
and their short- and long-term effects on ecosystems. ]]
|
||||
local URL = "https://sos.noaa.gov/catalog/datasets/fires-2009/"
|
||||
|
||||
|
||||
local syncedDirectory = asset.syncedResource({
|
||||
Name = Name,
|
||||
Type = "HttpSynchronization",
|
||||
Identifier = Identifier,
|
||||
Version = 1
|
||||
})
|
||||
|
||||
local imagesDestination = syncedDirectory .. "images"
|
||||
|
||||
local layer = {
|
||||
Identifier = Identifier,
|
||||
Name = Name,
|
||||
Type = "TemporalTileLayer",
|
||||
Mode = "Folder",
|
||||
Folder = {
|
||||
Folder = imagesDestination,
|
||||
-- See https://en.cppreference.com/w/cpp/io/manip/get_time for an explanation of the
|
||||
-- time formatting string
|
||||
Format = "firemap.%Y%j-%Y%j.4096x2048.png"
|
||||
},
|
||||
Description = Description
|
||||
}
|
||||
|
||||
asset.onInitialize(function()
|
||||
if not openspace.directoryExists(imagesDestination) then
|
||||
openspace.printInfo("Extracting " .. Name)
|
||||
openspace.unzipFile(syncedDirectory .. "4096.zip", imagesDestination, true)
|
||||
end
|
||||
|
||||
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.onDeinitialize(function()
|
||||
openspace.globebrowsing.deleteLayer(globeIdentifier, "ColorLayers", layer)
|
||||
end)
|
||||
|
||||
asset.export(layer)
|
||||
|
||||
|
||||
asset.meta = {
|
||||
Name = Name,
|
||||
Version = "1.0",
|
||||
Description = Description .. "Data provided by the National Oceanic and Atmospheric Administration.",
|
||||
Author = "National Oceanic and Atmospheric Administration",
|
||||
URL = URL,
|
||||
License = "https://sos.noaa.gov/copyright/"
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user