Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin
h2.
scrollbar

Exercise

...

outline

...

The

...

goal

...

of

...

this

...

exercise

...

is

...

to

...

visualize

...

multiple

...

data

...

sets

...

on

...

one

...

single

...

map.

...

This

...

makes

...

it

...

possible

...

to

...

compare

...

different

...

data

...

sets

...

at

...

the

...

same

...

geospatial

...

location(s)

...

and/or

...

for

...

the

...

same

...

modelling

...

time

...

step(s).

...

With

...

this

...

exercise

...

it

...

should

...

be

...

possible

...

to

...

show,

...

as

...

an

...

example,

...

both

...

the

...

input

...

data

...

and

...

the

...

output

...

data

...

of

...

a

...

volume

...

model

...

in

...

one

...

single

...

map

...

view.

Create a new map layer provider

Add to the plugin project a new folder named Layers. In this folder, create a new class named VolumeModelLayerProvider.cs and adapt the contents as shown below:

Code Block




h2. Create a new map layer provider

Add to the plugin project a new folder named _Layers_. In this folder, create a new class named _VolumeModelLayerProvider.cs_ and adapt the contents as shown below:

{code}
using System.Collections.Generic;
using DelftTools.Shell.Gui;
using SharpMap.Api.Layers;
using SharpMap.Layers;

namespace DeltaShell.Plugins.VolumeModel.Layers
{
    public class VolumeModelMapLayerProvider : IMapLayerProvider
    {
        /// <summary>
        /// Defines that layers can be provided for volume models
        /// </summary>
        public bool CanCreateLayerFor(object data, object parentData)
        {
            return data is Models.VolumeModel;
        }

        /// <summary>
        /// Creates a volume model group layer
        /// </summary>
        public ILayer CreateLayer(object data, object parentData)
        {
            var volumeModel = data as Models.VolumeModel;
            if (volumeModel != null)
            {
                return new GroupLayer(volumeModel.Name);
            }

            return null;
        }

        /// <summary>
        /// Returns all children for which a child layer should be created in volume model group layers
        /// </summary>
        public IEnumerable<object> ChildLayerObjects(object data)
        {
            var volumeModel = data as Models.VolumeModel;
            if (volumeModel != null)
            {
                // In the end a child layer should be created for both the basin input data and the volume output data
                yield return volumeModel.Basin;
                yield return volumeModel.Volume;
            }
        }
    }
}

{code}

{info}

The map layer provider class is derived from the _IMapLayerProvider_ interface so that it can be registered in the gui plugin (see the next step).

The comments in the code explain the different parts of the provider implementation.
{info}
{note}
A description on the backgrounds and usage of (group) layers is not part of this tutorial.
{note}


h2. Register the map layer provider in the gui plugin class

Register the map layer provider in the gui plugin by adding the following code to _VolumeModelGuiPlugin.cs_:

{code}
Info

The map layer provider class is derived from the IMapLayerProvider interface so that it can be registered in the gui plugin (see the next step).

The comments in the code explain the different parts of the provider implementation.

Note

A description on the backgrounds and usage of (group) layers is not part of this tutorial.

Register the map layer provider in the gui plugin class

Register the map layer provider in the gui plugin by adding the following code to VolumeModelGuiPlugin.cs:

Code Block
using DeltaShell.Plugins.VolumeModel.Layers;

and

Code Block
{code}

and

{code}
        public override IMapLayerProvider MapLayerProvider
        {
            get { return new VolumeModelMapLayerProvider(); }
        }
{code}

Delta

...

Shell

...

should

...

now

...

be

...

able

...

to

...

open

...

a

...

map

...

view

...

for

...

volume

...

models,

...

containing

...

both

...

their

...

basin

...

input

...

data

...

and

...

their

...

volume

...

output

...

data

...

(if

...

present).

...

Exercise

...

results

...

Set

...

up

...

a

...

volume

...

model

...

as

...

described

...

in

...

the

...

results

...

of

...

a

...

previous

...

exercise

...

(

...

Create

...

a

...

simple

...

hydrological

...

model

...

).

...

After

...

creating

...

the

...

volume

...

model,

...

the

...

corresponding

...

map

...

view

...

should

...

have

...

been

...

opened

...

automatically.

...

 However,

...

the

...

data

...

will

...

not

...

be

...

immediately

...

shown

...

in

...

this

...

view,

...

even

...

after

...

running

...

the

...

volume

...

model.

...

Two

...

further

...

actions

...

are

...

required.

...

First

...

of

...

all,

...

the

...

input

...

of

...

the

...

volume

...

model

...

data

...

is

...

present,

...

but

...

the

...

map

...

is

...

zooming

...

into

...

a

...

different

...

area.

...

To

...

solve

...

this

...

problem,

...

open

...

the

...

Map

...

Ribbon

...

tab

...

and

...

click

...

the

...

Zoom

...

to

...

map

...

extent button:

Image Added

Secondly, the output data of the volume model is initially hidden. To solve this problem, expand the volume model group layer in the Map window and tick the check box of the Volume layer:

Image Added

Info

The order of the different data layers in a map view can be adjusted using the context menus in the Map window (right click on a data layer | Order | ... ).

Additionally, WMS layers can be included to help identifying the actual geographical location of map data. Follow these steps:

  1. Add a new WMS layer to the map using the Map window (click the Add New Wms Layer ... button). In the Open web link ... dialog, select Microsoft Bing Maps - Satellite Hybrid. A new map layer will be added to the view. However, this layer is initially projected using a different coordinate system than the one for the volume output data:

    Image Added


  2. Select the same coordinate systems for the different map layers in the Map window (right click on the map group layer | Change Map Coordinate System ...). In the corresponding dialog, look for the coordinate system WGS_1984_Web_Mercator and assign it to all layers in the group. The map view should now represent all layers using the same coordinate system. Zoom to the volume group layer (right click on the volume model group layer in the Map window | Zoom to Extend) to see all data at their appropriate location:

    Image Added



_ button: !zoomToExtents.png!\\ \\ Secondly, the output data of the volume model is initially hidden. To solve this problem,&nbsp;expand the volume model group layer in the _Map_ window and tick the check box of the _Volume_ layer: !layersCheckbox.png!\\ \\ {info} The order of the different data layers in a map view can be adjusted using the context menus in the _Map_ window (right click on a data layer \| Order \| ... ). Additionally, WMS layers can be included to help identifying the actual geographical location of map data. Follow these steps: # Add a new WMS layer to the map using the _Map_ window (click the _Add New Wms Layer ..._ button). In the _Open web link ..._ dialog, select _Microsoft Bing Maps - Satellite Hybrid_. A new map layer will be added to the view. However, this layer is initially projected using a different coordinate system than the one for the volume output data: \\ \\ !mapPositionWrong.png|border=1!\\ \\ \\ # Select the same coordinate systems for the different map layers in the _Map_ window (right click on the _map_ group layer \| Change Map Coordinate System ...). In the corresponding dialog, look for the coordinate system _WGS_1984_Web_Mercator_ and assign it to all layers in the group. The map view should now represent all layers using the same coordinate system. Zoom to the volume group layer (right click on the volume model&nbsp;group layer in the _Map_&nbsp;window&nbsp;\| Zoom to Extend)&nbsp;to see all data at their appropriate location: \\ \\ !mapPositionOK.png|border=1!\\ {info} \\ \\ VolumeModel.zipThe code results up until the end of this exercise can be downloaded here
scrollbar
Panel
borderStylenone
Align
centercenter