Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
小 白蛋
OpenSpace
Commits
11139797
Unverified
Commit
11139797
authored
3 years ago
by
Alexander Bock
Committed by
GitHub
3 years ago
Browse files
Options
Download
Plain Diff
Merge pull request #1800 from OpenSpace/feature/tileproviders
Feature/tileproviders
parents
7c3d6b4c
ba16dfcc
Changes
45
Hide whitespace changes
Inline
Side-by-side
Showing
20 changed files
data/assets/examples/temperature_land_highres.asset
+33
-15
data/assets/examples/temperature_land_highres.asset
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/amsr2_gcom_w1_sea_ice_concentration_temporal.asset
+14
-8
...layers/amsr2_gcom_w1_sea_ice_concentration_temporal.asset
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/aqua_modis_temporal.asset
+14
-8
...lanets/earth/layers/colorlayers/aqua_modis_temporal.asset
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_viirs_combo.asset
+14
-8
...m/planets/earth/layers/colorlayers/esri_viirs_combo.asset
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_g1sst_sea_surface_temperature_temporal.asset
+14
-8
...rs/ghrsst_l4_g1sst_sea_surface_temperature_temporal.asset
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_mur_sea_surface_temperature_temporal.asset
+14
-8
...yers/ghrsst_l4_mur_sea_surface_temperature_temporal.asset
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/modis_terra_chlorophyll_a_temporal.asset
+11
-5
...yers/colorlayers/modis_terra_chlorophyll_a_temporal.asset
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/terra_modis_temporal.asset
+14
-8
...anets/earth/layers/colorlayers/terra_modis_temporal.asset
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/viirs_snpp_temporal.asset
+14
-8
...lanets/earth/layers/colorlayers/viirs_snpp_temporal.asset
data/assets/scene/solarsystem/planets/earth/layers/nightlayers/earth_at_night_temporal.asset
+14
-8
...ts/earth/layers/nightlayers/earth_at_night_temporal.asset
modules/globebrowsing/CMakeLists.txt
+20
-2
modules/globebrowsing/CMakeLists.txt
modules/globebrowsing/globebrowsingmodule.cpp
+20
-14
modules/globebrowsing/globebrowsingmodule.cpp
modules/globebrowsing/scripts/layer_support.lua
+30
-39
modules/globebrowsing/scripts/layer_support.lua
modules/globebrowsing/shaders/interpolate_fs.glsl
+5
-7
modules/globebrowsing/shaders/interpolate_fs.glsl
modules/globebrowsing/src/asynctiledataprovider.cpp
+0
-2
modules/globebrowsing/src/asynctiledataprovider.cpp
modules/globebrowsing/src/asynctiledataprovider.h
+0
-2
modules/globebrowsing/src/asynctiledataprovider.h
modules/globebrowsing/src/basictypes.h
+2
-4
modules/globebrowsing/src/basictypes.h
modules/globebrowsing/src/layer.cpp
+10
-10
modules/globebrowsing/src/layer.cpp
modules/globebrowsing/src/layer.h
+4
-5
modules/globebrowsing/src/layer.h
modules/globebrowsing/src/layeradjustment.h
+0
-2
modules/globebrowsing/src/layeradjustment.h
with
247 additions
and
171 deletions
+247
-171
data/assets/examples/temperature_land_highres.asset
+
33
-
15
View file @
11139797
...
...
@@ -7,28 +7,46 @@ local path = asset.syncedResource({
Version = 1
})
local layer = {
Identifier = "ERA5_Land_HighRes_Monthly_2M_Temperature_Temporal",
Name = "ERA5 Land HighRes Monthly 2M Temperature (Temporal)",
local layer
_prototype
= {
Identifier = "ERA5_Land_HighRes_Monthly_2M_Temperature_Temporal
_prototype
",
Name = "ERA5 Land HighRes Monthly 2M Temperature (Temporal)
[Prototype]
",
Type = "TemporalTileLayer",
FilePath =
"<OpenSpaceTemporalGDALDataset>" ..
"<OpenSpaceTimeStart>1981-01-01</OpenSpaceTimeStart>" ..
"<OpenSpaceTimeEnd>1990-10-01</OpenSpaceTimeEnd>" ..
"<OpenSpaceTimeResolution>1M</OpenSpaceTimeResolution>" ..
"<OpenSpaceTimeIdFormat>YYYY-MM-DD</OpenSpaceTimeIdFormat>" ..
"<OpenSpaceTransferFunction>" .. path .. "rainbow.png</OpenSpaceTransferFunction>" ..
"<OpenSpaceTimeInterpolation>linear</OpenSpaceTimeInterpolation>" ..
"<FilePath>" .. path .. "${OpenSpaceTimeId}-land.png</FilePath>" ..
"</OpenSpaceTemporalGDALDataset>",
Mode = "Prototyped",
Prototyped = {
Time = {
Start = "1981-01-01",
End = "1990-10-01"
},
TemporalResolution = "1M",
TimeFormat = "YYYY-MM-DD",
Prototype = path .. "${OpenSpaceTimeId}-land.png"
},
Interpolation = true,
Colormap = path .. "rainbow.png",
Description = [[ Temporal coverage: 01 Jan 1981 - 31 Dec 2020.]]
}
local layer_folder = {
Identifier = "ERA5_Land_HighRes_Monthly_2M_Temperature_Temporal_folder",
Name = "ERA5 Land HighRes Monthly 2M Temperature (Temporal) [Folder]",
Type = "TemporalTileLayer",
Mode = "Folder",
Folder = {
Folder = "C:/Development/sync/http/earth_textures_climate/1",
Format = "%Y-%m-%d-land.png"
},
Interpolation = true,
Colormap = path .. "rainbow.png",
Description = [[ Temporal coverage: 01 Jan 1981 - 31 Dec 2020.]]
}
asset.onInitialize(function ()
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer)
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_prototype)
openspace.globebrowsing.addLayer(globeIdentifier, "ColorLayers", layer_folder)
end)
asset.export("layer", layer)
asset.export("layer", layer_prototype)
asset.meta = {
Name = "Climate Earth Layers",
Version = "1.0",
...
...
This diff is collapsed.
Click to expand it.
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/amsr2_gcom_w1_sea_ice_concentration_temporal.asset
+
14
-
8
View file @
11139797
...
...
@@ -4,14 +4,20 @@ local layer = {
Identifier = "AMSR2_GCOM_W1_Sea_Ice_Concentration_Temporal",
Name = "AMSR2 GCOM W1 Sea Ice Concentration (Temporal)",
Type = "TemporalTileLayer",
FilePath = openspace.globebrowsing.createTemporalGibsGdalXml(
"AMSRU2_Sea_Ice_Concentration_12km",
"2012-05-08",
"Yesterday",
"1d",
"2km",
"png"
),
Mode = "Prototyped",
Prototyped = {
Time = {
Start = "2012-05-08",
End = "Yesterday"
},
TemporalResolution = "1d",
TimeFormat = "YYYY-MM-DD",
Prototype = openspace.globebrowsing.createTemporalGibsGdalXml(
"AMSRU2_Sea_Ice_Concentration_12km",
"2km",
"png"
)
},
Description = [[ Temporal coverage: 02 July 2012 - Present. The Advanced Microwave
Scanning Radiometer-E/Advanced Microwave Scanning Radiometer-2 (AMSR-E/AMSR2)
unified "Sea Ice Concentration (12 km)" layer displays the percent of sea ice
...
...
This diff is collapsed.
Click to expand it.
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/aqua_modis_temporal.asset
+
14
-
8
View file @
11139797
...
...
@@ -4,14 +4,20 @@ local layer = {
Identifier = "Aqua_Modis_Temporal",
Name = "Aqua Modis (Temporal)",
Type = "TemporalTileLayer",
FilePath = openspace.globebrowsing.createTemporalGibsGdalXml(
"MODIS_Aqua_CorrectedReflectance_TrueColor",
"2002-07-04",
"Yesterday",
"1d",
"250m",
"jpg"
),
Mode = "Prototyped",
Prototyped = {
Time = {
Start = "2002-07-04",
End = "Yesterday"
},
TemporalResolution = "1d",
TimeFormat = "YYYY-MM-DD",
Prototype = openspace.globebrowsing.createTemporalGibsGdalXml(
"MODIS_Aqua_CorrectedReflectance_TrueColor",
"250m",
"jpg"
)
},
Description = [[ Temporal coverage: 03 July 2002 - Present. True Color: Red = Band 1,
Green = Band 4, Blue = Band 3. These images are called true-color or natural color
because this combination of wavelengths is similar to what the human eye would see.
...
...
This diff is collapsed.
Click to expand it.
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/esri_viirs_combo.asset
+
14
-
8
View file @
11139797
...
...
@@ -13,14 +13,20 @@ local layer = {
Identifier = "Temporal_VIIRS_SNPP",
Name = "Temporal VIIRS SNPP",
Type = "TemporalTileLayer",
FilePath = openspace.globebrowsing.createTemporalGibsGdalXml(
"VIIRS_SNPP_CorrectedReflectance_TrueColor",
"2015-11-24",
"Today",
"1d",
"250m",
"jpg"
),
Mode = "Prototyped",
Prototyped = {
Time = {
Start = "2015-11-24",
End = "Today"
},
TemporalResolution = "1d",
TimeFormat = "YYYY-MM-DD",
Prototype = openspace.globebrowsing.createTemporalGibsGdalXml(
"VIIRS_SNPP_CorrectedReflectance_TrueColor",
"250m",
"jpg"
)
},
PadTiles = false
}
},
...
...
This diff is collapsed.
Click to expand it.
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_g1sst_sea_surface_temperature_temporal.asset
+
14
-
8
View file @
11139797
...
...
@@ -4,14 +4,20 @@ local layer = {
Identifier = "GHRSST_L4_G1SST_Sea_Surface_Temperature_Temporal",
Name = "GHRSST L4 G1SST Sea Surface Temperature (Temporal)",
Type = "TemporalTileLayer",
FilePath = openspace.globebrowsing.createTemporalGibsGdalXml(
"GHRSST_L4_G1SST_Sea_Surface_Temperature",
"2010-06-21",
"2019-12-08",
"1d",
"1km",
"png"
),
Mode = "Prototyped",
Prototyped = {
Time = {
Start = "2010-06-21",
End = "2019-12-08"
},
TemporalResolution = "1d",
TimeFormat = "YYYY-MM-DD",
Prototype = openspace.globebrowsing.createTemporalGibsGdalXml(
"GHRSST_L4_G1SST_Sea_Surface_Temperature",
"1km",
"png"
)
},
Description = [[ Temporal coverage: 21 June 2010 - 08 December 2019. The imagery
resolution is 1 km, and the temporal resolution is daily.]],
Author = "NASA EOSDIS Global Imagery Browse Services"
...
...
This diff is collapsed.
Click to expand it.
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/ghrsst_l4_mur_sea_surface_temperature_temporal.asset
+
14
-
8
View file @
11139797
...
...
@@ -4,14 +4,20 @@ local layer = {
Identifier = "GHRSST_L4_MUR_Sea_Surface_Temperature_Temporal",
Name = "GHRSST L4 MUR Sea Surface Temperature (Temporal)",
Type = "TemporalTileLayer",
FilePath = openspace.globebrowsing.createTemporalGibsGdalXml(
"GHRSST_L4_MUR_Sea_Surface_Temperature",
"2002-06-01",
"Yesterday",
"1d",
"1km",
"png"
),
Mode = "Prototyped",
Prototyped = {
Time = {
Start = "2002-06-01",
End = "Yesterday"
},
TemporalResolution = "1d",
TimeFormat = "YYYY-MM-DD",
Prototype = openspace.globebrowsing.createTemporalGibsGdalXml(
"GHRSST_L4_MUR_Sea_Surface_Temperature",
"1km",
"png"
)
},
Description = [[ Temporal coverage: 01 June 2002 - Present. The imagery resolution
is 1 km, and the temporal resolution is daily.]]
}
...
...
This diff is collapsed.
Click to expand it.
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/modis_terra_chlorophyll_a_temporal.asset
+
11
-
5
View file @
11139797
...
...
@@ -4,14 +4,20 @@ local layer = {
Identifier = "MODIS_Terra_Chlorophyll_A_Temporal",
Name = "MODIS Terra Chlorophyll A (Temporal)",
Type = "TemporalTileLayer",
FilePath = openspace.globebrowsing.createTemporalGibsGdalXml(
Mode = "Prototyped",
Prototyped = {
Time = {
Start = "2013-07-02",
End = "Yesterday"
},
TemporalResolution = "1d",
TimeFormat = "YYYY-MM-DD",
Prototype = openspace.globebrowsing.createTemporalGibsGdalXml(
"MODIS_Terra_Chlorophyll_A",
"2013-07-02",
"Yesterday",
"1d",
"1km",
"png"
),
)
},
Description = [[ Temporal coverage: 02 July 2013 - Present. The imagery resolution
is 1 km, and the temporal resolution is daily.]]
}
...
...
This diff is collapsed.
Click to expand it.
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/terra_modis_temporal.asset
+
14
-
8
View file @
11139797
...
...
@@ -4,14 +4,20 @@ local layer = {
Identifier = "Terra_Modis_Temporal",
Name = "Terra Modis (Temporal)",
Type = "TemporalTileLayer",
FilePath = openspace.globebrowsing.createTemporalGibsGdalXml(
"MODIS_Terra_CorrectedReflectance_TrueColor",
"2000-02-24",
"Yesterday",
"1d",
"250m",
"jpg"
),
Mode = "Prototyped",
Prototyped = {
Time = {
Start = "2000-02-24",
End = "Yesterday"
},
TemporalResolution = "1d",
TimeFormat = "YYYY-MM-DD",
Prototype = openspace.globebrowsing.createTemporalGibsGdalXml(
"MODIS_Terra_CorrectedReflectance_TrueColor",
"250m",
"jpg"
)
},
Description = [[ Temporal coverage: 02 July 2013 - Present. The imagery resolution
is 1 km, and the temporal resolution is daily.]]
}
...
...
This diff is collapsed.
Click to expand it.
data/assets/scene/solarsystem/planets/earth/layers/colorlayers/viirs_snpp_temporal.asset
+
14
-
8
View file @
11139797
...
...
@@ -4,14 +4,20 @@ local layer = {
Identifier = "VIIRS_SNPP_Temporal",
Name = "VIIRS SNPP (Temporal)",
Type = "TemporalTileLayer",
FilePath = openspace.globebrowsing.createTemporalGibsGdalXml(
"VIIRS_SNPP_CorrectedReflectance_TrueColor",
"2015-11-24",
"Yesterday",
"1d",
"250m",
"jpg"
),
Mode = "Prototyped",
Prototyped = {
Time = {
Start = "2015-11-24",
End = "Yesterday"
},
TemporalResolution = "1d",
TimeFormat = "YYYY-MM-DD",
Prototype = openspace.globebrowsing.createTemporalGibsGdalXml(
"VIIRS_SNPP_CorrectedReflectance_TrueColor",
"250m",
"jpg"
)
},
Description = [[ Temporal coverage: 11 November 2015 - Present. The imagery resolution
is 0.25 km, and the temporal resolution is daily.]]
}
...
...
This diff is collapsed.
Click to expand it.
data/assets/scene/solarsystem/planets/earth/layers/nightlayers/earth_at_night_temporal.asset
+
14
-
8
View file @
11139797
...
...
@@ -4,14 +4,20 @@ local layer = {
Identifier = "Earth_at_Night_Temporal",
Name = "Earth at Night (Temporal)",
Type = "TemporalTileLayer",
FilePath = openspace.globebrowsing.createTemporalGibsGdalXml(
"VIIRS_SNPP_DayNightBand_ENCC",
"2012-05-08",
"Yesterday",
"1d",
"500m",
"png"
),
Mode = "Prototyped",
Prototyped = {
Time = {
Start = "2012-05-08",
End = "Yesterday"
},
TemporalResolution = "1d",
TimeFormat = "YYYY-MM-DD",
Prototype = openspace.globebrowsing.createTemporalGibsGdalXml(
"VIIRS_SNPP_DayNightBand_ENCC",
"500m",
"png"
)
},
Description = [[ The VIIRS Nighttime Imagery (Day/Night Band, Enhanced Near Constant
Contrast) layer shows the Earth's surface and atmosphere using a sensor designed
to capture low-light emission sources, under varying illumination conditions. It
...
...
This diff is collapsed.
Click to expand it.
modules/globebrowsing/CMakeLists.txt
+
20
-
2
View file @
11139797
...
...
@@ -57,9 +57,18 @@ set(HEADER_FILES
src/skirtedgrid.h
src/tileindex.h
src/tileloadjob.h
src/tileprovider.h
src/tiletextureinitdata.h
src/timequantizer.h
src/tileprovider/defaulttileprovider.h
src/tileprovider/imagesequencetileprovider.h
src/tileprovider/singleimagetileprovider.h
src/tileprovider/sizereferencetileprovider.h
src/tileprovider/temporaltileprovider.h
src/tileprovider/texttileprovider.h
src/tileprovider/tileindextileprovider.h
src/tileprovider/tileprovider.h
src/tileprovider/tileproviderbyindex.h
src/tileprovider/tileproviderbylevel.h
)
set
(
SOURCE_FILES
...
...
@@ -87,9 +96,18 @@ set(SOURCE_FILES
src/skirtedgrid.cpp
src/tileindex.cpp
src/tileloadjob.cpp
src/tileprovider.cpp
src/tiletextureinitdata.cpp
src/timequantizer.cpp
src/tileprovider/defaulttileprovider.cpp
src/tileprovider/imagesequencetileprovider.cpp
src/tileprovider/singleimagetileprovider.cpp
src/tileprovider/sizereferencetileprovider.cpp
src/tileprovider/temporaltileprovider.cpp
src/tileprovider/texttileprovider.cpp
src/tileprovider/tileindextileprovider.cpp
src/tileprovider/tileprovider.cpp
src/tileprovider/tileproviderbyindex.cpp
src/tileprovider/tileproviderbylevel.cpp
)
source_group
(
"Source Files"
FILES
${
SOURCE_FILES
}
)
...
...
This diff is collapsed.
Click to expand it.
modules/globebrowsing/globebrowsingmodule.cpp
+
20
-
14
View file @
11139797
...
...
@@ -35,7 +35,15 @@
#include
<modules/globebrowsing/src/layeradjustment.h>
#include
<modules/globebrowsing/src/layermanager.h>
#include
<modules/globebrowsing/src/memoryawaretilecache.h>
#include
<modules/globebrowsing/src/tileprovider.h>
#include
<modules/globebrowsing/src/tileprovider/defaulttileprovider.h>
#include
<modules/globebrowsing/src/tileprovider/imagesequencetileprovider.h>
#include
<modules/globebrowsing/src/tileprovider/singleimagetileprovider.h>
#include
<modules/globebrowsing/src/tileprovider/sizereferencetileprovider.h>
#include
<modules/globebrowsing/src/tileprovider/temporaltileprovider.h>
#include
<modules/globebrowsing/src/tileprovider/tileindextileprovider.h>
#include
<modules/globebrowsing/src/tileprovider/tileprovider.h>
#include
<modules/globebrowsing/src/tileprovider/tileproviderbyindex.h>
#include
<modules/globebrowsing/src/tileprovider/tileproviderbylevel.h>
#include
<openspace/documentation/verifier.h>
#include
<openspace/engine/globalscallbacks.h>
#include
<openspace/navigation/navigationhandler.h>
...
...
@@ -236,7 +244,7 @@ void GlobeBrowsingModule::internalInitialize(const ghoul::Dictionary& dict) {
_tileCache
=
std
::
make_unique
<
cache
::
MemoryAwareTileCache
>
(
_tileCacheSizeMB
);
addPropertySubOwner
(
_tileCache
.
get
());
t
ile
p
rovider
::
initializeDefaultTile
();
T
ile
P
rovider
::
initializeDefaultTile
();
// Convert from MB to Bytes
GdalWrapper
::
create
(
...
...
@@ -249,10 +257,9 @@ void GlobeBrowsingModule::internalInitialize(const ghoul::Dictionary& dict) {
global
::
callback
::
deinitializeGL
->
emplace_back
([]()
{
ZoneScopedN
(
"GlobeBrowsingModule"
)
t
ile
p
rovider
::
deinitializeDefaultTile
();
T
ile
P
rovider
::
deinitializeDefaultTile
();
});
// Render
global
::
callback
::
render
->
emplace_back
([
&
]()
{
ZoneScopedN
(
"GlobeBrowsingModule"
)
...
...
@@ -279,46 +286,45 @@ void GlobeBrowsingModule::internalInitialize(const ghoul::Dictionary& dict) {
ghoul_assert
(
fRotation
,
"Rotation factory was not created"
);
fRotation
->
registerClass
<
globebrowsing
::
GlobeRotation
>
(
"GlobeRotation"
);
auto
fTileProvider
=
std
::
make_unique
<
ghoul
::
TemplateFactory
<
tileprovider
::
TileProvider
>>
();
auto
fTileProvider
=
std
::
make_unique
<
ghoul
::
TemplateFactory
<
TileProvider
>>
();
ghoul_assert
(
fTileProvider
,
"TileProvider factory was not created"
);
fTileProvider
->
registerClass
<
tileprovider
::
DefaultTileProvider
>
(
fTileProvider
->
registerClass
<
DefaultTileProvider
>
(
layergroupid
::
LAYER_TYPE_NAMES
[
static_cast
<
int
>
(
layergroupid
::
TypeID
::
DefaultTileLayer
)]
);
fTileProvider
->
registerClass
<
tileprovider
::
SingleImageProvider
>
(
fTileProvider
->
registerClass
<
SingleImageProvider
>
(
layergroupid
::
LAYER_TYPE_NAMES
[
static_cast
<
int
>
(
layergroupid
::
TypeID
::
SingleImageTileLayer
)]
);
fTileProvider
->
registerClass
<
tileprovider
::
ImageSequenceTileProvider
>
(
fTileProvider
->
registerClass
<
ImageSequenceTileProvider
>
(
layergroupid
::
LAYER_TYPE_NAMES
[
static_cast
<
int
>
(
layergroupid
::
TypeID
::
ImageSequenceTileLayer
)]
);
fTileProvider
->
registerClass
<
tileprovider
::
TemporalTileProvider
>
(
fTileProvider
->
registerClass
<
TemporalTileProvider
>
(
layergroupid
::
LAYER_TYPE_NAMES
[
static_cast
<
int
>
(
layergroupid
::
TypeID
::
TemporalTileLayer
)]
);
fTileProvider
->
registerClass
<
tileprovider
::
TileIndexTileProvider
>
(
fTileProvider
->
registerClass
<
TileIndexTileProvider
>
(
layergroupid
::
LAYER_TYPE_NAMES
[
static_cast
<
int
>
(
layergroupid
::
TypeID
::
TileIndexTileLayer
)]
);
fTileProvider
->
registerClass
<
tileprovider
::
SizeReferenceTileProvider
>
(
fTileProvider
->
registerClass
<
SizeReferenceTileProvider
>
(
layergroupid
::
LAYER_TYPE_NAMES
[
static_cast
<
int
>
(
layergroupid
::
TypeID
::
SizeReferenceTileLayer
)]
);
fTileProvider
->
registerClass
<
tileprovider
::
TileProviderByLevel
>
(
fTileProvider
->
registerClass
<
TileProviderByLevel
>
(
layergroupid
::
LAYER_TYPE_NAMES
[
static_cast
<
int
>
(
layergroupid
::
TypeID
::
ByLevelTileLayer
)]
);
fTileProvider
->
registerClass
<
tileprovider
::
TileProviderByIndex
>
(
fTileProvider
->
registerClass
<
TileProviderByIndex
>
(
layergroupid
::
LAYER_TYPE_NAMES
[
static_cast
<
int
>
(
layergroupid
::
TypeID
::
ByIndexTileLayer
)]
...
...
This diff is collapsed.
Click to expand it.
modules/globebrowsing/scripts/layer_support.lua
+
30
-
39
View file @
11139797
openspace
.
globebrowsing
.
documentation
=
{
{
Name
=
"createTemporalGibsGdalXml"
,
Arguments
=
"string, string, string, string, string, string, [string]"
,
Documentation
=
"Creates an XML configuration for a temporal GIBS dataset."
..
"Arguments are: Name, Start date, end date, time resolution, time format,"
..
"resolution, file format. The last parameter is the temporal format and "
..
"defaults to YYYY-MM-DD. For all specifications, see "
..
"https://wiki.earthdata.nasa.gov/display/GIBS/GIBS+Available+Imagery+Products"
..
"Usage:"
..
"openspace.globebrowsing.addLayer("
..
"
\"
Earth\"
,
" ..
"
\
"ColorLayers\"
,
" ..
"
{
" ..
"
Type
=
\
"TemporalTileLayer\"
,
" ..
"
Name
=
\
"MODIS_Terra_Chlorophyll_A\"
,
" ..
"
FilePath
=
openspace
.
globebrowsing
.
createTemporalGibsGdalXml
(
" ..
"
\
"MODIS_Terra_Chlorophyll_A\"
,
" ..
"
\
"2013-07-02\"
,
" ..
"
\
"Yesterday\"
,
" ..
"
\
"1d\"
,
" ..
"
\
"1km\"
,
" ..
"
\
"png\"" ..
"
)
" ..
"
}
" ..
"
)
"
Arguments
=
"string, string, string"
,
Documentation
=
[[
Creates an XML configuration for a temporal GIBS dataset to be used in
a TemporalTileprovider
]]
},
{
Name
=
"createGibsGdalXml"
,
...
...
@@ -40,7 +21,7 @@ openspace.globebrowsing.documentation = {
"
\
"ColorLayers\"
,
" ..
"
{
" ..
"
Name
=
\
"MODIS_Terra_Chlorophyll_A\"
,
" ..
"
FilePath
=
openspace
.
globebrowsing
.
create
Temporal
GibsGdalXml
(
" ..
"
FilePath
=
openspace
.
globebrowsing
.
createGibsGdalXml
(
" ..
"
\
"MODIS_Terra_Chlorophyll_A\"
,
" ..
"
\
"2013-07-02\"
,
" ..
"
\
"1km\"
,
" ..
...
...
@@ -111,21 +92,27 @@ openspace.globebrowsing.addGibsLayer = function(layer, resolution, format, start
if endDate == 'Present' then
endDate = ''
end
local xml = openspace.globebrowsing.createTemporalGibsGdalXml(layer, startDate, endDate, '1d', resolution, format)
openspace.globebrowsing.addLayer('Earth', 'ColorLayers', { Identifier = layer, Type = "
TemporalTileLayer
", FilePath = xml })
end
openspace.globebrowsing.createTemporalGibsGdalXml = function (layerName, startDate, endDate, timeResolution, resolution, format, temporalFormat)
temporalFormat = temporalFormat or 'YYYY-MM-DD'
local temporalTemplate =
"
<
OpenSpaceTemporalGDALDataset
>
" ..
"
<
OpenSpaceTimeStart
>
" .. startDate .. "
</
OpenSpaceTimeStart
>
" ..
"
<
OpenSpaceTimeEnd
>
" .. endDate .. "
</
OpenSpaceTimeEnd
>
" ..
"
<
OpenSpaceTimeResolution
>
" .. timeResolution .. "
</
OpenSpaceTimeResolution
>
" ..
"
<
OpenSpaceTimeIdFormat
>
" .. temporalFormat .. "
</
OpenSpaceTimeIdFormat
>
" ..
openspace.globebrowsing.createGibsGdalXml(layerName, "
$
{
OpenSpaceTimeId
}
", resolution, format) ..
"
</
OpenSpaceTemporalGDALDataset
>
"
return temporalTemplate
local layer = {
Identifier = layerName,
Type = "
TemporalTileLayer
",
Mode = "
Prototyped
",
Prototyped = {
Time = {
Start = startDate,
End = endDate
},
TemporalResolution = "
1
d
",
TimeFormat = "
YYYY
-
MM
-
DD
",
Prototype = openspace.globebrowsing.createTemporalGibsGdalXml(layerName, resolution, format)
}
}
openspace.globebrowsing.addLayer(
'Earth',
'ColorLayers',
layer
)
end
openspace.globebrowsing.createGibsGdalXml = function (layerName, date, resolution, format)
...
...
@@ -196,6 +183,10 @@ openspace.globebrowsing.createGibsGdalXml = function (layerName, date, resolutio
return
gdalWmsTemplate
end
openspace
.
globebrowsing
.
createTemporalGibsGdalXml
=
function
(
layerName
,
resolution
,
format
)
return
openspace
.
globebrowsing
.
createGibsGdalXml
(
layerName
,
"${OpenSpaceTimeId}"
,
resolution
,
format
)
end
openspace
.
globebrowsing
.
parseInfoFile
=
function
(
file
)
-- We are loading these values from an external info file and since we are switching
-- to a strict Lua, we need to predefine these global variables
...
...
This diff is collapsed.
Click to expand it.
modules/globebrowsing/shaders/interpolate_fs.glsl
+
5
-
7
View file @
11139797
...
...
@@ -26,25 +26,23 @@
uniform
sampler2D
prevTexture
;
uniform
sampler2D
nextTexture
;
uniform
sampler
2
D
colormapTexture
;
uniform
sampler
1
D
colormapTexture
;
uniform
float
blendFactor
;
in
vec2
texCoord
;
Fragment
getFragment
()
{
vec4
texel0
=
texture
2D
(
prevTexture
,
texCoord
);
vec4
texel1
=
texture
2D
(
nextTexture
,
texCoord
);
vec4
texel0
=
texture
(
prevTexture
,
texCoord
);
vec4
texel1
=
texture
(
nextTexture
,
texCoord
);
vec4
mixedTexture
=
mix
(
texel0
,
texel1
,
blendFactor
);
Fragment
frag
;
if
(
mixedTexture
.
r
>
0
.
999
)
{
vec2
position
=
vec2
(
mixedTexture
.
r
-
0
.
01
,
0
.
5
);
frag
.
color
=
texture2D
(
colormapTexture
,
position
);
frag
.
color
=
texture
(
colormapTexture
,
mixedTexture
.
r
-
0
.
01
);
}
else
{
vec2
position
=
vec2
(
mixedTexture
.
r
,
0
.
5
);
frag
.
color
=
texture2D
(
colormapTexture
,
position
);
frag
.
color
=
texture
(
colormapTexture
,
mixedTexture
.
r
);
}
frag
.
color
.
a
=
mixedTexture
.
a
;
...
...
This diff is collapsed.
Click to expand it.
modules/globebrowsing/src/asynctiledataprovider.cpp
+
0
-
2
View file @
11139797
...
...
@@ -50,8 +50,6 @@ AsyncTileDataProvider::AsyncTileDataProvider(std::string name,
performReset
(
ResetRawTileDataReader
::
No
);
}
AsyncTileDataProvider
::~
AsyncTileDataProvider
()
{}
// NOLINT
const
RawTileDataReader
&
AsyncTileDataProvider
::
rawTileDataReader
()
const
{
return
*
_rawTileDataReader
;
}
...
...
This diff is collapsed.
Click to expand it.
modules/globebrowsing/src/asynctiledataprovider.h
+
0
-
2
View file @
11139797
...
...
@@ -50,8 +50,6 @@ public:
AsyncTileDataProvider
(
std
::
string
name
,
std
::
unique_ptr
<
RawTileDataReader
>
rawTileDataReader
);
~
AsyncTileDataProvider
();
/**
* Creates a job which asynchronously loads a raw tile. This job is enqueued.
*/
...
...
This diff is collapsed.
Click to expand it.
modules/globebrowsing/src/basictypes.h
+
2
-
4
View file @
11139797
...
...
@@ -115,9 +115,8 @@ struct TileMetaData {
class
Tile
{
public:
/**
* Describe if this Tile is good for usage (OK) or otherwise
* the reason why it is not.
*/
* Describe if this Tile is good for usage (OK) or otherwise the reason why it is not.
*/
enum
class
Status
{
/**
* E.g when texture data is not currently in memory.
...
...
@@ -168,7 +167,6 @@ struct ChunkTile {
//using ChunkTilePile = std::vector<ChunkTile>;
// The ChunkTilePile either contains 1 or 3 ChunkTile, depending on if layer-blending is
// enabled. If it is enabled, we need the two adjacent levels, if it is not enabled, only
// the current layer is needed
...
...
This diff is collapsed.
Click to expand it.
modules/globebrowsing/src/layer.cpp
+
10
-
10
View file @
11139797
...
...
@@ -286,13 +286,13 @@ Layer::Layer(layergroupid::GroupID id, const ghoul::Dictionary& layerDict,
_reset
.
onChange
([
&
]()
{
if
(
_tileProvider
)
{
tile
p
rovider
::
reset
(
*
_tileProvider
);
_
tile
P
rovider
->
reset
();
}
});
_remove
.
onChange
([
&
]()
{
if
(
_tileProvider
)
{
tile
p
rovider
::
reset
(
*
_tileProvider
);
_
tile
P
rovider
->
reset
();
_parent
.
deleteLayer
(
identifier
());
}
});
...
...
@@ -360,13 +360,13 @@ void Layer::initialize() {
ZoneScoped
if
(
_tileProvider
)
{
tile
p
rovider
::
initialize
(
*
_tileProvider
);
_
tile
P
rovider
->
initialize
();
}
}
void
Layer
::
deinitialize
()
{
if
(
_tileProvider
)
{
tile
p
rovider
::
deinitialize
(
*
_tileProvider
);
_
tile
P
rovider
->
deinitialize
();
}
}
...
...
@@ -374,7 +374,7 @@ ChunkTilePile Layer::chunkTilePile(const TileIndex& tileIndex, int pileSize) con
ZoneScoped
if
(
_tileProvider
)
{
return
tile
p
rovider
::
chunkTilePile
(
*
_tileProvider
,
tileIndex
,
pileSize
);
return
_
tile
P
rovider
->
chunkTilePile
(
tileIndex
,
pileSize
);
}
else
{
ChunkTilePile
chunkTilePile
;
...
...
@@ -390,7 +390,7 @@ ChunkTilePile Layer::chunkTilePile(const TileIndex& tileIndex, int pileSize) con
Tile
::
Status
Layer
::
tileStatus
(
const
TileIndex
&
index
)
const
{
return
_tileProvider
?
tile
p
rovider
::
tileStatus
(
*
_tileProvider
,
index
)
:
_
tile
P
rovider
->
tileStatus
(
index
)
:
Tile
::
Status
::
Unavailable
;
}
...
...
@@ -404,7 +404,7 @@ layergroupid::BlendModeID Layer::blendMode() const {
TileDepthTransform
Layer
::
depthTransform
()
const
{
return
_tileProvider
?
tile
p
rovider
::
depthTransform
(
*
_tileProvider
)
:
_
tile
P
rovider
->
depthTransform
()
:
TileDepthTransform
{
1.
f
,
0.
f
};
}
...
...
@@ -416,7 +416,7 @@ bool Layer::enabled() const {
return
_enabled
;
}
tileprovider
::
TileProvider
*
Layer
::
tileProvider
()
const
{
TileProvider
*
Layer
::
tileProvider
()
const
{
return
_tileProvider
.
get
();
}
...
...
@@ -440,7 +440,7 @@ void Layer::update() {
ZoneScoped
if
(
_tileProvider
)
{
tile
p
rovider
::
update
(
*
_tileProvider
);
_
tile
P
rovider
->
update
();
}
}
...
...
@@ -483,7 +483,7 @@ void Layer::initializeBasedOnType(layergroupid::TypeID id, ghoul::Dictionary ini
std
::
string
name
=
initDict
.
value
<
std
::
string
>
(
KeyName
);
LDEBUG
(
"Initializing tile provider for layer: '"
+
name
+
"'"
);
}
_tileProvider
=
t
ile
p
rovider
::
createFromDictionary
(
id
,
std
::
move
(
initDict
));
_tileProvider
=
T
ile
P
rovider
::
createFromDictionary
(
id
,
std
::
move
(
initDict
));
break
;
}
case
layergroupid
::
TypeID
::
SolidColor
:
{
...
...
This diff is collapsed.
Click to expand it.
modules/globebrowsing/src/layer.h
+
4
-
5
View file @
11139797
...
...
@@ -30,7 +30,7 @@
#include
<modules/globebrowsing/src/basictypes.h>
#include
<modules/globebrowsing/src/layeradjustment.h>
#include
<modules/globebrowsing/src/layerrendersettings.h>
#include
<modules/globebrowsing/src/tileprovider.h>
#include
<modules/globebrowsing/src/tileprovider
/tileprovider
.h>
#include
<openspace/properties/optionproperty.h>
#include
<openspace/properties/scalar/boolproperty.h>
...
...
@@ -40,8 +40,7 @@ namespace openspace::globebrowsing {
struct
LayerGroup
;
struct
TileIndex
;
namespace
tileprovider
{
struct
TileProvider
;
}
struct
TileProvider
;
class
Layer
:
public
properties
::
PropertyOwner
{
public:
...
...
@@ -59,7 +58,7 @@ public:
TileDepthTransform
depthTransform
()
const
;
void
setEnabled
(
bool
enabled
);
bool
enabled
()
const
;
tileprovider
::
TileProvider
*
tileProvider
()
const
;
TileProvider
*
tileProvider
()
const
;
glm
::
vec3
solidColor
()
const
;
const
LayerRenderSettings
&
renderSettings
()
const
;
const
LayerAdjustment
&
layerAdjustment
()
const
;
...
...
@@ -89,7 +88,7 @@ private:
properties
::
StringProperty
_guiDescription
;
layergroupid
::
TypeID
_type
;
std
::
unique_ptr
<
tileprovider
::
TileProvider
>
_tileProvider
;
std
::
unique_ptr
<
TileProvider
>
_tileProvider
;
properties
::
Vec3Property
_solidColor
;
LayerRenderSettings
_renderSettings
;
LayerAdjustment
_layerAdjustment
;
...
...
This diff is collapsed.
Click to expand it.
modules/globebrowsing/src/layeradjustment.h
+
0
-
2
View file @
11139797
...
...
@@ -36,8 +36,6 @@ namespace openspace::documentation { struct Documentation; }
namespace
openspace
::
globebrowsing
{
namespace
tileprovider
{
struct
TileProvider
;
}
class
LayerAdjustment
:
public
properties
::
PropertyOwner
{
public:
LayerAdjustment
();
...
...
This diff is collapsed.
Click to expand it.
Prev
1
2
3
Next
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment