../../_images/logo_geostyler.png ../../_images/OSGeo_community.png

GeoStyler Quickstart

Dieses Quickstart beschreibt die grundlegenden Schritte, die notwendig sind, um mit GeoStyler zu arbeiten: Die Installation von GeoStyler, sowie das Hinzufügen einer ersten UI Komponente zu Ihrer react Anwendung.

A complete beginner tutorial can be found on localhost/geostyler.

GeoStyler ermöglicht es geographische Stilinformationen für Geodaten auf einfache Art und Weise im Web zu editieren. Die UI funktioniert Stilformat unabhängig und kann beispielsweise mit OpenLayers oder SLD genutzt werden.

GeoStyler installieren

Um GeoStyler zu verwenden muss node.js auf Ihrem System installiert sein. Anleitungen zur Installation von node.js können auf der node.js homepage gefunden werden.

Wir empfehlen GeoStyler für jedes Projekt separat zu installieren. Dieser Abschnitt beschreibt die dazu notwendigen Schritte.

Der einfachste Weg GeoStyler zu installieren ist mittels npm, was bei der Installation von node.js mitgeliefert wird. Führen Sie einfach folgenden Befehl auf root-Ebene des jeweiligen Projekts aus:

npm i geostyler

Bitte stellen Sie sicher, dass alle peer dependencies in den angegebenen Versionen installiert wurden:

npm i react react-dom antd ol

Denken Sie daran, die Parser zu installieren, die Sie verwenden möchten:

npm i geostyler-sld-parser

GeoStyler integrieren

Importieren Sie die GeoStyler Style Komponente folgendermaßen in Ihre Anwendung:

import { Style } from 'geostyler';

Die Style Komponente stellt eine Vielzahl an Stylingfunktionalität bereit.

Nach dem Importieren kann sie folgendermaßen in der render-Methode verwendet werden:

<Style
    compact={true}
/>

Die Style Komponente sollte jetzt im Browser sichtbar sein.

../../_images/quickstart_compact.png

geostyler-sld-parser integrieren

Um ein bestehendes SLD mittels GeoStyler zu editieren, müssen wir zunächst den geostyler-sld-parser importieren und instanziieren.

import SLDParser from 'geostyler-sld-parser';
const parser = new SLDParser();

Anschließend können wir ein existierendes SLD in das GeoStyler-lesbare Format überführen.

parser.readStyle('<?xml version="1.0" encoding="UTF-8"?>' +
                    '<sld:StyledLayerDescriptor xmlns:sld="http://www.opengis.net/sld" xmlns="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" version="1.0.0">' +
                        '<sld:NamedLayer>' +
                            '<sld:Name>Default Styler</sld:Name>' +
                            '<sld:UserStyle>' +
                                '<sld:Name>Default Styler</sld:Name>' +
                                '<sld:Title>Gravel_Program_2016</sld:Title>' +
                                '<sld:FeatureTypeStyle>' +
                                    '<sld:Name>name</sld:Name>' +
                                    '<sld:Rule>' +
                                    '<sld:MinScaleDenominator>1.0</sld:MinScaleDenominator>' +
                                    '<sld:MaxScaleDenominator>1.0E7</sld:MaxScaleDenominator>' +
                                    '<sld:LineSymbolizer>' +
                                        '<sld:Stroke>' +
                                            '<sld:CssParameter name="stroke">#8000FF</sld:CssParameter>' +
                                            '<sld:CssParameter name="stroke-width">3.000</sld:CssParameter>' +
                                        '</sld:Stroke>' +
                                    '</sld:LineSymbolizer>' +
                                    '</sld:Rule>' +
                                '</sld:FeatureTypeStyle>' +
                            '</sld:UserStyle>' +
                        '</sld:NamedLayer>' +
                    '</sld:StyledLayerDescriptor>')
    .then(style => console.log(style.output));

Um diesen Stil mit der UI zu verbinden, müssen wir ihn in einer state-Variablen speichern und ihn an unsere Style Komponente weitergeben. Nachdem myStyle als state-Variable definiert wurde, können wir sie wie folgt nutzen:

parser.readStyle('<?xml version="1.0" encoding="UTF-8"?>' +
                    '<sld:StyledLayerDescriptor xmlns:sld="http://www.opengis.net/sld" xmlns="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" version="1.0.0">' +
                        '<sld:NamedLayer>' +
                            '<sld:Name>Default Styler</sld:Name>' +
                            '<sld:UserStyle>' +
                                '<sld:Name>Default Styler</sld:Name>' +
                                '<sld:Title>Gravel_Program_2016</sld:Title>' +
                                '<sld:FeatureTypeStyle>' +
                                    '<sld:Name>name</sld:Name>' +
                                    '<sld:Rule>' +
                                    '<sld:MinScaleDenominator>1.0</sld:MinScaleDenominator>' +
                                    '<sld:MaxScaleDenominator>1.0E7</sld:MaxScaleDenominator>' +
                                    '<sld:LineSymbolizer>' +
                                        '<sld:Stroke>' +
                                            '<sld:CssParameter name="stroke">#8000FF</sld:CssParameter>' +
                                            '<sld:CssParameter name="stroke-width">3.000</sld:CssParameter>' +
                                        '</sld:Stroke>' +
                                    '</sld:LineSymbolizer>' +
                                    '</sld:Rule>' +
                                '</sld:FeatureTypeStyle>' +
                            '</sld:UserStyle>' +
                        '</sld:NamedLayer>' +
                    '</sld:StyledLayerDescriptor>')
    .then(style => this.setStyle({myStyle: style.output}));

// ...

<Style
    compact={true}
    style={myStyle}
/>

Die GeoStyler UI sollte jetzt dem im SLD definierten Stil entsprechen.

Um den editierten Stil als SLD von der Style Komponente zu erhalten, kann die writeStyle()-Methode des geostyler-sld-parsers innerhalb der onStyleChange()-Methode der Style Komponente verwendet werden.

parser.readStyle('<?xml version="1.0" encoding="UTF-8"?>' +
                    '<sld:StyledLayerDescriptor xmlns:sld="http://www.opengis.net/sld" xmlns="http://www.opengis.net/sld" xmlns:gml="http://www.opengis.net/gml" xmlns:ogc="http://www.opengis.net/ogc" version="1.0.0">' +
                        '<sld:NamedLayer>' +
                            '<sld:Name>Default Styler</sld:Name>' +
                            '<sld:UserStyle>' +
                                '<sld:Name>Default Styler</sld:Name>' +
                                '<sld:Title>Gravel_Program_2016</sld:Title>' +
                                '<sld:FeatureTypeStyle>' +
                                    '<sld:Name>name</sld:Name>' +
                                    '<sld:Rule>' +
                                    '<sld:MinScaleDenominator>1.0</sld:MinScaleDenominator>' +
                                    '<sld:MaxScaleDenominator>1.0E7</sld:MaxScaleDenominator>' +
                                    '<sld:LineSymbolizer>' +
                                        '<sld:Stroke>' +
                                            '<sld:CssParameter name="stroke">#8000FF</sld:CssParameter>' +
                                            '<sld:CssParameter name="stroke-width">3.000</sld:CssParameter>' +
                                        '</sld:Stroke>' +
                                    '</sld:LineSymbolizer>' +
                                    '</sld:Rule>' +
                                '</sld:FeatureTypeStyle>' +
                            '</sld:UserStyle>' +
                        '</sld:NamedLayer>' +
                    '</sld:StyledLayerDescriptor>')
    .then(style => this.setStyle({myStyle: style.output}));

// ...

<Style
    compact={true}
    style={myStyle}
    onStyleChange={gsStyle => {
        parser.writeStyle(gsStyle)
            .then(sld => console.log(sld.output));
    }}
/>

Was Sie noch ausprobieren können

Probieren Sie doch als nächsten Schritt eine OpenLayers Karte hinzuzufügen und die Style Komponente mit der Karte zu verknüpfen. Dadurch können Stiländerungen direkt in der Karte dargestellt werden.

Was kommt als Nächstes?

Weitere GeoStyler Informationen finden Sie hier: