Layouts#

A layout represents the way in which the elements of a graph are arranged.

It is possible to use your own graph layout implementation, but there are also existing layouts in powsybl-diagram, ready to use.

Layouts for voltage levels#

Existing implementations#

PositionVoltageLevelLayout#

This layout positions the different elements inside a voltage level according to the following process:

The PositionVoltageLevelLayoutFactoryParameters class#

TODO

The PositionFinder class#

TODO

RandomVoltageLevelLayout#

With this layout, the graph node coordinates are randomly fixed:

  • Between 0 and width for the x coordinate;

  • Between 0 and height for the y coordinate. The width and height variables are provided by the user.

CgmesVoltageLevelLayout#

With this layout, the elements of the graph are arranged according to the data included in the CGMES DL profile.

Choosing a VoltageLevelLayout#

The voltageLevelLayoutFactoryCreator attribute in the SldParameters class is the customization parameter to use to choose a specific VoltageLevelLayout.

The VoltageLevelLayoutFactoryCreator creates a VoltageLevelLayoutFactory which in turn creates a VoltageLevelLayout.

Choose a specific PositionVoltageLevelLayout#

Static methods are available in the VoltageLevelLayoutFactoryCreator interface to help users manipulate those objects.

Some examples are shown below.

Example 1

PositionVoltageLevelLayout using default parameters:

VoltageLevelLayoutFactoryCreator voltageLevelLayoutFactoryCreator = VoltageLevelLayoutFactoryCreator.newPositionVoltageLevelLayoutFactoryCreator();
SldParameters sldParameters = new SldParameters().setVoltageLevelLayoutFactoryCreator(voltageLevelLayoutFactoryCreator);

Example 2

PositionVoltageLevelLayout with a chosen PositionFinder:

VoltageLevelLayoutFactoryCreator voltageLevelLayoutFactoryCreator = VoltageLevelLayoutFactoryCreator.newPositionVoltageLevelLayoutFactoryCreator(positionFinder);
SldParameters sldParameters = new SldParameters().setVoltageLevelLayoutFactoryCreator(voltageLevelLayoutFactoryCreator);

Example 3

PositionVoltageLevelLayout with chosen PositionVoltageLevelLayoutFactoryParameters:

VoltageLevelLayoutFactoryCreator voltageLevelLayoutFactoryCreator = VoltageLevelLayoutFactoryCreator.newPositionVoltageLevelLayoutFactoryCreator(positionVoltageLevelLayoutFactoryParameters);
SldParameters sldParameters = new SldParameters().setVoltageLevelLayoutFactoryCreator(voltageLevelLayoutFactoryCreator);

Example 4

PositionVoltageLevelLayout with a chosen PositionFinder and chosen PositionVoltageLevelLayoutFactoryParameters:

VoltageLevelLayoutFactoryCreator voltageLevelLayoutFactoryCreator = VoltageLevelLayoutFactoryCreator.newPositionVoltageLevelLayoutFactoryCreator(positionFinder, positionVoltageLevelLayoutFactoryParameters);
SldParameters sldParameters = new SldParameters().setVoltageLevelLayoutFactoryCreator(voltageLevelLayoutFactoryCreator);

Use the SmartVoltageLevelLayoutFactory#

The SmartVoltageLevelLayoutFactory picks the “best” VoltageLevelLayout according to the information available in the network.

There is also a static method in the VoltageLevelLayoutFactoryCreator interface to help users pick the SmartVoltageLevelLayoutFactory:

VoltageLevelLayoutFactoryCreator voltageLevelLayoutFactoryCreator = VoltageLevelLayoutFactoryCreator.newSmartVoltageLevelLayoutFactoryCreator();
SldParameters sldParameters = new SldParameters().setVoltageLevelLayoutFactoryCreator(voltageLevelLayoutFactoryCreator);

Layouts for substations#

TODO

Layouts for multi-substation graphs#

Multi-substation graphs can use a matrix-like layout for the different substations. See Zone Matrix Layout for more details.