boku-ilen / landscapelab

Geodata-driven Landscape Visualization built with Godot and Geodot
https://landscapelab.boku.ac.at/
Other
37 stars 12 forks source link

Documentation of a layer-based system #236

Open MathiasBaumgartinger opened 4 years ago

MathiasBaumgartinger commented 4 years ago

As mentioned in #235, we will restructure the the whole node-tree. In more detail, the new structure should have a layer-based system. A LayerContainer which will handle every additional geo-information. This can for instance be raster-data, such as vegetation (grass, trees, ...) but also vector-data, such as assets (existing wind-turbines).

Layers should also be able to be grouped (sublayers), for example there will be different street sublayers grouped in one street-layer. Layers will be instanced by a WorldConfigurator according to information from the configuration node (at issue #230). A layer's sole purpose will be display of geodata. It will access the geodata via a global distributor of geodata.

A general idea was to have super-class Layer and then distinguish between an ObjectLayer and an AreaLayer.

grafik

MathiasBaumgartinger commented 4 years ago

Further discussed resulted in following structure:

This will also be relevant for #237 and #235.

MathiasBaumgartinger commented 4 years ago

Classes are described as follows (in German):

Configurator (Superclass):

Layers (Singleton):

LayerConfigurator:

Layer:

GeoLayer:

LayerRenderers : Configurator:

LayerRenderer:

LayerUI : Configurator:

MathiasBaumgartinger commented 4 years ago

For a deeper understanding we have defined three "user-stories":

Scenario 1: Instance Layers on Startup

grafik

Scenario 2: Adding a 3D wind turbine object

grafik

Scenario 3: Creating a new raster layer through the U

grafik

MathiasBaumgartinger commented 4 years ago

d693969fcf29eb1c3e53e9921ead36e3b0677f32 provided a basic implementation for most of these classes.

kb173 commented 3 years ago

We should move these descriptions and images to the wiki.

kb173 commented 3 years ago

Same as #248: rather than the Wiki, we'll use Markdown documents within the project source for this.