Mercurial > gemma
changeset 4484:819eafe60f41
Merged
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Thu, 26 Sep 2019 12:16:23 +0200 |
parents | 778b13025244 (current diff) 43c52a2d4f17 (diff) |
children | 685a5fd3a2f3 |
files | |
diffstat | 9 files changed, 998 insertions(+), 13 deletions(-) [+] |
line wrap: on
line diff
--- a/README.md Thu Sep 26 11:32:33 2019 +0200 +++ b/README.md Thu Sep 26 12:16:23 2019 +0200 @@ -40,7 +40,8 @@ - You will need a PostgreSQL cluster with PostGIS. -- To install the **gemma** schema and roles use the script +- To install the **gemma** schema, roles and some default system configuration + use the script `./schema/install-db.sh`. - `./schema/install-db.sh --help` shows you available options. @@ -57,7 +58,7 @@ - Install and run GeoServer as described here: http://docs.geoserver.org/stable/en/user/installation/ -- Add tables you want to publish as OGC-Service Layers via GeoServer in +- Add addional tables you want to publish as OGC-Service Layers via GeoServer in the database. For example publish the bottleneck areas: ``` INSERT INTO sys_admin.published_services (name, as_wfs) VALUES @@ -92,6 +93,16 @@ ./cmd/gemma/gemma ``` +## Adding default style templates for geoserver + +- To add default style layers for geoserver run the script: + ``` + ./style-templates/upload-styles.sh + ``` + +- `./style-templates/upload-styles.sh --help` shows an overview of its options. + + ## Proxying OGC services through gemma - Add services you want to publish via gemma (e.g. for same-origin policy
--- a/client/src/components/Pdftool.vue Thu Sep 26 11:32:33 2019 +0200 +++ b/client/src/components/Pdftool.vue Thu Sep 26 12:16:23 2019 +0200 @@ -153,13 +153,12 @@ { type: "scalebar", position: "bottomright", - offset: { x: 2, y: 2 } + offset: { x: 1, y: 1 } }, { type: "textbox", position: "bottomleft", - offset: { x: 2, y: 2 }, - width: 60, + offset: { x: 1, y: 1 }, fontSize: 8, text: this.$gettext("Generated by") + " " + "{user}, {date}" }, @@ -168,6 +167,16 @@ position: "topleft", offset: { x: 6, y: 4 }, size: 2 + }, + { + type: "bottleneck", + position: "topright", + offset: { x: 2, y: 2 } + }, + { + type: "legend", + position: "topright", + offset: { x: 2, y: 25 } } ] } @@ -749,39 +758,44 @@ // bottleneck this.pdf.doc.setFontStyle("italic"); - this.pdf.doc.text(x + padding, y + padding, str1_1, textOptions); + this.pdf.doc.text(x + padding, y + padding + 2, str1_1, textOptions); this.pdf.doc.setFontStyle("bold"); - this.pdf.doc.text(x + padding + w1_1, y + padding, str1_2, textOptions); + this.pdf.doc.text( + x + padding + w1_1, + y + padding + 2, + str1_2, + textOptions + ); // survey date this.pdf.doc.setFontStyle("italic"); - this.pdf.doc.text(x + padding, y + padding + 4, str2_1, textOptions); + this.pdf.doc.text(x + padding, y + padding + 6, str2_1, textOptions); this.pdf.doc.setFontStyle("normal"); this.pdf.doc.text( x + padding + w2_1, - y + padding + 4, + y + padding + 6, str2_2, textOptions ); // ref gauge this.pdf.doc.setFontStyle("italic"); - this.pdf.doc.text(x + padding, y + padding + 8, str3_1, textOptions); + this.pdf.doc.text(x + padding, y + padding + 10, str3_1, textOptions); this.pdf.doc.setFontStyle("normal"); this.pdf.doc.text( x + padding + w3_1, - y + padding + 8, + y + padding + 10, str3_2, textOptions ); // depth relative to this.pdf.doc.setFontStyle("italic"); - this.pdf.doc.text(x + padding, y + padding + 12, str4_1, textOptions); + this.pdf.doc.text(x + padding, y + padding + 14, str4_1, textOptions); this.pdf.doc.setFontStyle("normal"); this.pdf.doc.text( x + padding + w4_1, - y + padding + 12, + y + padding + 14, str4_2, textOptions );
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/style-templates/distance_marks_ashore_geoserver.sld-template Thu Sep 26 12:16:23 2019 +0200 @@ -0,0 +1,30 @@ +<?xml version="1.0" encoding="UTF-8"?> +<StyledLayerDescriptor version="1.0.0" + xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd" + xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <NamedLayer> + <Name>distance_marks_ashore_geoserver</Name> + <UserStyle> + <FeatureTypeStyle> + <Rule> + <PointSymbolizer> + <Graphic> + <Mark> + <WellKnownName>circle</WellKnownName> + <Stroke> + <CssParameter name="stroke">{{ .distance_marks_ashore_stroke }}</CssParameter> + </Stroke> + <Fill> + <CssParameter name="fill">{{ .distance_marks_ashore_fill }}</CssParameter> + <CssParameter name="fill-opacity">{{ .distance_marks_ashore_fill_opacity }}</CssParameter> + </Fill> + </Mark> + <Size>10</Size> + </Graphic> + </PointSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> + </NamedLayer> +</StyledLayerDescriptor>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/style-templates/distance_marks_geoserver.sld-template Thu Sep 26 12:16:23 2019 +0200 @@ -0,0 +1,450 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sld:StyledLayerDescriptor xmlns="http://www.opengis.net/sld" xmlns:sld="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>distance_marks_geoserver</sld:Name> + <sld:UserStyle> + <sld:Name>distance_marks_geoserver</sld:Name> + <sld:FeatureTypeStyle> + <sld:Rule> + <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> + <ogc:PropertyIsEqualTo> + <ogc:Sub> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Mul> + <ogc:Literal>1000</ogc:Literal> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>1000</ogc:Literal> + </ogc:Div> + </ogc:Function> + </ogc:Mul> + </ogc:Sub> + <ogc:Literal>0</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <sld:MinScaleDenominator>8500000</sld:MinScaleDenominator> + <sld:TextSymbolizer> + <sld:Label> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>10</ogc:Literal> + </ogc:Div> + </ogc:Function> + </sld:Label> + <sld:Font> + <sld:CssParameter name="font-family">Sans Serif</sld:CssParameter> + <sld:CssParameter name="font-size">10</sld:CssParameter> + <sld:CssParameter name="font-weight">bold</sld:CssParameter> + </sld:Font> + <sld:LabelPlacement> + <sld:PointPlacement> + <sld:AnchorPoint> + <sld:AnchorPointX>0</sld:AnchorPointX> + <sld:AnchorPointY>-0.5</sld:AnchorPointY> + </sld:AnchorPoint> + </sld:PointPlacement> + </sld:LabelPlacement> + <sld:Fill> + <sld:CssParameter name="fill">#000000</sld:CssParameter> + </sld:Fill> + <sld:Halo> + </sld:Halo> + </sld:TextSymbolizer> + <sld:PointSymbolizer> + <sld:Graphic> + <sld:Mark> + <sld:WellKnownName>circle</sld:WellKnownName> + <sld:Fill> + <sld:CssParameter name="fill">{{ .distance_marks_fill }}</sld:CssParameter> + <sld:CssParameter name="fill-opacity">{{ .distance_marks_fill_opacity }}</sld:CssParameter> + </sld:Fill> + <sld:Stroke> + <sld:CssParameter name="stroke">#5555FF</sld:CssParameter> + <sld:CssParameter name="stroke-width">1</sld:CssParameter> + </sld:Stroke> + </sld:Mark> + <sld:Size>10</sld:Size> + </sld:Graphic> + </sld:PointSymbolizer> + </sld:Rule> + <sld:Rule> + <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> + <ogc:PropertyIsEqualTo> + <ogc:Sub> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Mul> + <ogc:Literal>500</ogc:Literal> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>500</ogc:Literal> + </ogc:Div> + </ogc:Function> + </ogc:Mul> + </ogc:Sub> + <ogc:Literal>0</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <sld:MinScaleDenominator>1100000</sld:MinScaleDenominator> + <sld:MaxScaleDenominator>8500000</sld:MaxScaleDenominator> + <sld:TextSymbolizer> + <sld:Label> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>10</ogc:Literal> + </ogc:Div> + </ogc:Function> + </sld:Label> + <sld:Font> + <sld:CssParameter name="font-family">Sans Serif</sld:CssParameter> + <sld:CssParameter name="font-size">10</sld:CssParameter> + <sld:CssParameter name="font-weight">bold</sld:CssParameter> + </sld:Font> + <sld:LabelPlacement> + <sld:PointPlacement> + <sld:AnchorPoint> + <sld:AnchorPointX>0</sld:AnchorPointX> + <sld:AnchorPointY>-0.5</sld:AnchorPointY> + </sld:AnchorPoint> + </sld:PointPlacement> + </sld:LabelPlacement> + <sld:Fill> + <sld:CssParameter name="fill">#000000</sld:CssParameter> + </sld:Fill> + <sld:Halo> + </sld:Halo> + </sld:TextSymbolizer> + <sld:PointSymbolizer> + <sld:Graphic> + <sld:Mark> + <sld:WellKnownName>circle</sld:WellKnownName> + <sld:Fill> + <sld:CssParameter name="fill">{{ .distance_marks_fill }}</sld:CssParameter> + <sld:CssParameter name="fill-opacity">{{ .distance_marks_fill_opacity }}</sld:CssParameter> + </sld:Fill> + <sld:Stroke> + <sld:CssParameter name="stroke">{{ .distance_marks_stroke }}</sld:CssParameter> + <sld:CssParameter name="stroke-width">1</sld:CssParameter> + </sld:Stroke> + </sld:Mark> + <sld:Size>10</sld:Size> + </sld:Graphic> + </sld:PointSymbolizer> + </sld:Rule> + <sld:Rule> + <sld:Name>100</sld:Name> + <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> + <ogc:PropertyIsEqualTo> + <ogc:Sub> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Mul> + <ogc:Literal>100</ogc:Literal> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>100</ogc:Literal> + </ogc:Div> + </ogc:Function> + </ogc:Mul> + </ogc:Sub> + <ogc:Literal>0</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <sld:MinScaleDenominator>800000</sld:MinScaleDenominator> + <sld:MaxScaleDenominator>1100000</sld:MaxScaleDenominator> + <sld:TextSymbolizer> + <sld:Label> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>10</ogc:Literal> + </ogc:Div> + </ogc:Function> + </sld:Label> + <sld:Font> + <sld:CssParameter name="font-family">Sans Serif</sld:CssParameter> + <sld:CssParameter name="font-size">10</sld:CssParameter> + <sld:CssParameter name="font-weight">bold</sld:CssParameter> + </sld:Font> + <sld:LabelPlacement> + <sld:PointPlacement> + <sld:AnchorPoint> + <sld:AnchorPointX>0</sld:AnchorPointX> + <sld:AnchorPointY>-0.5</sld:AnchorPointY> + </sld:AnchorPoint> + </sld:PointPlacement> + </sld:LabelPlacement> + <sld:Fill> + <sld:CssParameter name="fill">#000000</sld:CssParameter> + </sld:Fill> + <sld:Halo> + </sld:Halo> + </sld:TextSymbolizer> + <sld:PointSymbolizer> + <sld:Graphic> + <sld:Mark> + <sld:WellKnownName>circle</sld:WellKnownName> + <sld:Fill> + <sld:CssParameter name="fill">{{ .distance_marks_fill }}</sld:CssParameter> + <sld:CssParameter name="fill-opacity">{{ .distance_marks_fill_opacity }}</sld:CssParameter> + </sld:Fill> + <sld:Stroke> + <sld:CssParameter name="stroke">{{ .distance_marks_stroke }}</sld:CssParameter> + <sld:CssParameter name="stroke-width">1</sld:CssParameter> + </sld:Stroke> + </sld:Mark> + <sld:Size>10</sld:Size> + </sld:Graphic> + </sld:PointSymbolizer> + </sld:Rule> + <sld:Rule> + <sld:Name>50</sld:Name> + <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> + <ogc:PropertyIsEqualTo> + <ogc:Sub> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Mul> + <ogc:Literal>50</ogc:Literal> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>50</ogc:Literal> + </ogc:Div> + </ogc:Function> + </ogc:Mul> + </ogc:Sub> + <ogc:Literal>0</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <sld:MinScaleDenominator>200000</sld:MinScaleDenominator> + <sld:MaxScaleDenominator>800000</sld:MaxScaleDenominator> + <sld:TextSymbolizer> + <sld:Label> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>10</ogc:Literal> + </ogc:Div> + </ogc:Function> + </sld:Label> + <sld:Font> + <sld:CssParameter name="font-family">Sans Serif</sld:CssParameter> + <sld:CssParameter name="font-size">10</sld:CssParameter> + <sld:CssParameter name="font-weight">bold</sld:CssParameter> + </sld:Font> + <sld:LabelPlacement> + <sld:PointPlacement> + <sld:AnchorPoint> + <sld:AnchorPointX>0</sld:AnchorPointX> + <sld:AnchorPointY>-0.5</sld:AnchorPointY> + </sld:AnchorPoint> + </sld:PointPlacement> + </sld:LabelPlacement> + <sld:Fill> + <sld:CssParameter name="fill">#000000</sld:CssParameter> + </sld:Fill> + <sld:Halo> + </sld:Halo> + </sld:TextSymbolizer> + <sld:PointSymbolizer> + <sld:Graphic> + <sld:Mark> + <sld:WellKnownName>circle</sld:WellKnownName> + <sld:Fill> + <sld:CssParameter name="fill">{{ .distance_marks_fill }}</sld:CssParameter> + <sld:CssParameter name="fill-opacity">{{ .distance_marks_fill_opacity }}</sld:CssParameter> + </sld:Fill> + <sld:Stroke> + <sld:CssParameter name="stroke">{{ .distance_marks_stroke }}</sld:CssParameter> + <sld:CssParameter name="stroke-width">1</sld:CssParameter> + </sld:Stroke> + </sld:Mark> + <sld:Size>10</sld:Size> + </sld:Graphic> + </sld:PointSymbolizer> + </sld:Rule> + <sld:Rule> + <sld:Name>20</sld:Name> + <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> + <ogc:PropertyIsEqualTo> + <ogc:Sub> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Mul> + <ogc:Literal>20</ogc:Literal> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>20</ogc:Literal> + </ogc:Div> + </ogc:Function> + </ogc:Mul> + </ogc:Sub> + <ogc:Literal>0</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <sld:MinScaleDenominator>60000</sld:MinScaleDenominator> + <sld:MaxScaleDenominator>200000</sld:MaxScaleDenominator> + <sld:TextSymbolizer> + <sld:Label> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>10</ogc:Literal> + </ogc:Div> + </ogc:Function> + </sld:Label> + <sld:Font> + <sld:CssParameter name="font-family">Sans Serif</sld:CssParameter> + <sld:CssParameter name="font-size">10</sld:CssParameter> + <sld:CssParameter name="font-weight">bold</sld:CssParameter> + </sld:Font> + <sld:LabelPlacement> + <sld:PointPlacement> + <sld:AnchorPoint> + <sld:AnchorPointX>0</sld:AnchorPointX> + <sld:AnchorPointY>-0.5</sld:AnchorPointY> + </sld:AnchorPoint> + </sld:PointPlacement> + </sld:LabelPlacement> + <sld:Fill> + <sld:CssParameter name="fill">#000000</sld:CssParameter> + </sld:Fill> + <sld:Halo> + </sld:Halo> + </sld:TextSymbolizer> + <sld:PointSymbolizer> + <sld:Graphic> + <sld:Mark> + <sld:WellKnownName>circle</sld:WellKnownName> + <sld:Fill> + <sld:CssParameter name="fill">{{ .distance_marks_fill }}</sld:CssParameter> + <sld:CssParameter name="fill-opacity">{{ .distance_marks_fill_opacity }}</sld:CssParameter> + </sld:Fill> + <sld:Stroke> + <sld:CssParameter name="stroke">{{ .distance_marks_stroke }}</sld:CssParameter> + <sld:CssParameter name="stroke-width">1</sld:CssParameter> + </sld:Stroke> + </sld:Mark> + <sld:Size>10</sld:Size> + </sld:Graphic> + </sld:PointSymbolizer> + </sld:Rule> + <sld:Rule> + <sld:Name>10</sld:Name> + <ogc:Filter xmlns:ogc="http://www.opengis.net/ogc"> + <ogc:PropertyIsEqualTo> + <ogc:Sub> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Mul> + <ogc:Literal>10</ogc:Literal> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>10</ogc:Literal> + </ogc:Div> + </ogc:Function> + </ogc:Mul> + </ogc:Sub> + <ogc:Literal>0</ogc:Literal> + </ogc:PropertyIsEqualTo> + </ogc:Filter> + <sld:MinScaleDenominator>10000</sld:MinScaleDenominator> + <sld:MaxScaleDenominator>60000</sld:MaxScaleDenominator> + <sld:TextSymbolizer> + <sld:Label> + <ogc:Function name="round"> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>10</ogc:Literal> + </ogc:Div> + </ogc:Function> + </sld:Label> + <sld:Font> + <sld:CssParameter name="font-family">Sans Serif</sld:CssParameter> + <sld:CssParameter name="font-size">10</sld:CssParameter> + <sld:CssParameter name="font-weight">bold</sld:CssParameter> + </sld:Font> + <sld:LabelPlacement> + <sld:PointPlacement> + <sld:AnchorPoint> + <sld:AnchorPointX>0</sld:AnchorPointX> + <sld:AnchorPointY>-0.5</sld:AnchorPointY> + </sld:AnchorPoint> + </sld:PointPlacement> + </sld:LabelPlacement> + <sld:Fill> + <sld:CssParameter name="fill">#000000</sld:CssParameter> + </sld:Fill> + <sld:Halo> + </sld:Halo> + </sld:TextSymbolizer> + <sld:PointSymbolizer> + <sld:Graphic> + <sld:Mark> + <sld:WellKnownName>circle</sld:WellKnownName> + <sld:Fill> + <sld:CssParameter name="fill">{{ .distance_marks_fill }}</sld:CssParameter> + <sld:CssParameter name="fill-opacity">{{ .distance_marks_fill_opacity }}</sld:CssParameter> + </sld:Fill> + <sld:Stroke> + <sld:CssParameter name="stroke">{{ .distance_marks_stroke }}</sld:CssParameter> + <sld:CssParameter name="stroke-width">1</sld:CssParameter> + </sld:Stroke> + </sld:Mark> + <sld:Size>10</sld:Size> + </sld:Graphic> + </sld:PointSymbolizer> + </sld:Rule> + <sld:Rule> + <sld:Name>1</sld:Name> + <sld:MaxScaleDenominator>10000</sld:MaxScaleDenominator> + <sld:TextSymbolizer> + <sld:Label> + <ogc:Div> + <ogc:PropertyName>hectometre</ogc:PropertyName> + <ogc:Literal>10</ogc:Literal> + </ogc:Div> + </sld:Label> + <sld:Font> + <sld:CssParameter name="font-family">Sans Serif</sld:CssParameter> + <sld:CssParameter name="font-size">10</sld:CssParameter> + <sld:CssParameter name="font-weight">bold</sld:CssParameter> + </sld:Font> + <sld:LabelPlacement> + <sld:PointPlacement> + <sld:AnchorPoint> + <sld:AnchorPointX>0</sld:AnchorPointX> + <sld:AnchorPointY>-0.5</sld:AnchorPointY> + </sld:AnchorPoint> + </sld:PointPlacement> + </sld:LabelPlacement> + <sld:Fill> + <sld:CssParameter name="fill">#000000</sld:CssParameter> + </sld:Fill> + <sld:Halo> + </sld:Halo> + </sld:TextSymbolizer> + <sld:PointSymbolizer> + <sld:Graphic> + <sld:Mark> + <sld:WellKnownName>circle</sld:WellKnownName> + <sld:Fill> + <sld:CssParameter name="fill">{{ .distance_marks_fill }}</sld:CssParameter> + <sld:CssParameter name="fill-opacity">{{ .distance_marks_fill_opacity }}</sld:CssParameter> + </sld:Fill> + <sld:Stroke> + <sld:CssParameter name="stroke">{{ .distance_marks_stroke }}</sld:CssParameter> + <sld:CssParameter name="stroke-width">1</sld:CssParameter> + </sld:Stroke> + </sld:Mark> + <sld:Size>10</sld:Size> + </sld:Graphic> + </sld:PointSymbolizer> + </sld:Rule> + </sld:FeatureTypeStyle> + </sld:UserStyle> + </sld:NamedLayer> +</sld:StyledLayerDescriptor>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/style-templates/sounding_differences.sld-template Thu Sep 26 12:16:23 2019 +0200 @@ -0,0 +1,157 @@ +<?xml version="1.0" encoding="UTF-8"?> +<StyledLayerDescriptor + xmlns="http://www.opengis.net/sld" + xmlns:se="http://www.opengis.net/se" + xmlns:ogc="http://www.opengis.net/ogc" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" + version="1.1.0"> + <NamedLayer> + <se:Name>sounding_differences</se:Name> + <UserStyle> + <se:Name>sounding_differences</se:Name> + <se:FeatureTypeStyle> + <se:Name>differences</se:Name> + <se:Description> + <se:Abstract> + FeatureTypeStyle defining colour classes for height attribute + </se:Abstract> + </se:Description> + {{ range . -}} + <se:Rule> + {{- if not .HasLow }} + <se:Name>≤ {{ printf "%g" .High }}</se:Name> + <ogc:Filter> + <ogc:PropertyIsLessThanOrEqualTo> + <ogc:PropertyName>height</ogc:PropertyName> + <ogc:Literal>{{ printf "%f" .High }}</ogc:Literal> + </ogc:PropertyIsLessThanOrEqualTo> + </ogc:Filter> + {{- else if not .HasHigh }} + <se:Name>> {{ printf "%g" .Low }}</se:Name> + <ogc:Filter> + <ogc:PropertyIsGreaterThanOrEqualTo> + <ogc:PropertyName>height</ogc:PropertyName> + <ogc:Literal>{{ printf "%f" .Low }}</ogc:Literal> + </ogc:PropertyIsGreaterThanOrEqualTo> + </ogc:Filter> + {{- else }} + <se:Name>≤ {{ printf "%g" .High }}</se:Name> + <ogc:Filter> + <ogc:And> + <ogc:PropertyIsGreaterThan> + <ogc:PropertyName>height</ogc:PropertyName> + <ogc:Literal>{{ printf "%f" .Low }}</ogc:Literal> + </ogc:PropertyIsGreaterThan> + <ogc:PropertyIsLessThanOrEqualTo> + <ogc:PropertyName>height</ogc:PropertyName> + <ogc:Literal>{{ printf "%f" .High }}</ogc:Literal> + </ogc:PropertyIsLessThanOrEqualTo> + </ogc:And> + </ogc:Filter> + {{- end }} + <se:LineSymbolizer> + <se:Stroke> + <se:SvgParameter name="stroke">{{ .Color }}</se:SvgParameter> + <se:SvgParameter name="stroke-width">0.5</se:SvgParameter> + </se:Stroke> + </se:LineSymbolizer> + </se:Rule> + {{ end }} + </se:FeatureTypeStyle> + <se:FeatureTypeStyle> + <se:Name>contour_lines_emph</se:Name> + <se:Description> + <se:Abstract> + FeatureTypeStyle for emphasized contour lines + </se:Abstract> + </se:Description> + <se:Rule> + <se:LegendGraphic> + <se:Graphic> + </se:Graphic> + </se:LegendGraphic> + <ogc:Filter> + <ogc:Or> + {{ range . -}} + {{ if .HasHigh -}} + <ogc:PropertyIsEqualTo> + <ogc:Function name="numberFormat"> + <ogc:Literal>0.000000</ogc:Literal> + <ogc:PropertyName>height</ogc:PropertyName> + </ogc:Function> + <ogc:Literal>{{ printf "%f" .High }}</ogc:Literal> + </ogc:PropertyIsEqualTo> + {{ end -}} + {{ end }} + </ogc:Or> + </ogc:Filter> + <se:MaxScaleDenominator>5e3</se:MaxScaleDenominator> + <se:LineSymbolizer> + <se:Stroke> + <se:SvgParameter name="stroke-width">1.5</se:SvgParameter> + <se:SvgParameter name="stroke"> + <ogc:Function name="Recode"> + <ogc:Function name="numberFormat"> + <ogc:Literal>0.000000</ogc:Literal> + <ogc:PropertyName>height</ogc:PropertyName> + </ogc:Function> + {{ range . -}} + {{ if .HasHigh -}} + <ogc:Literal>{{ printf "%f" .High }}</ogc:Literal> + <ogc:Literal>{{ .Color }}</ogc:Literal> + {{ end -}} + {{ end }} + </ogc:Function> + </se:SvgParameter> + </se:Stroke> + </se:LineSymbolizer> + </se:Rule> + </se:FeatureTypeStyle> + <se:FeatureTypeStyle> + <se:Name>contour_lines_label</se:Name> + <se:Description> + <se:Abstract> + FeatureTypeStyle for labels at contour lines + </se:Abstract> + </se:Description> + <se:Rule> + <se:MaxScaleDenominator>5e3</se:MaxScaleDenominator> + <se:TextSymbolizer> + <se:Label> + <ogc:Function name="Recode"> + <ogc:Function name="numberFormat"> + <ogc:Literal>0.000000</ogc:Literal> + <ogc:PropertyName>height</ogc:PropertyName> + </ogc:Function> + {{ range . -}} + {{ if .HasHigh -}} + <ogc:Literal> + {{- printf "%f" .High -}} + </ogc:Literal><ogc:Literal> + {{- printf "%g" .High -}} + </ogc:Literal> + {{ end -}} + {{ end }} + </ogc:Function> + </se:Label> + <se:Font> + <se:SvgParameter name="font-family">Avenir</se:SvgParameter> + <se:SvgParameter name="font-family">Helvetica</se:SvgParameter> + <se:SvgParameter name="font-family">Arial</se:SvgParameter> + <se:SvgParameter name="font-family">sans-serif</se:SvgParameter> + </se:Font> + <se:LabelPlacement> + <se:LinePlacement> + <se:PerpendicularOffset>5</se:PerpendicularOffset> + </se:LinePlacement> + </se:LabelPlacement> + <se:Fill> + <se:SvgParameter name="fill">#070707</se:SvgParameter> + </se:Fill> + </se:TextSymbolizer> + </se:Rule> + </se:FeatureTypeStyle> + </UserStyle> + </NamedLayer> +</StyledLayerDescriptor>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/style-templates/sounding_results_contour_lines_geoserver.sld-template Thu Sep 26 12:16:23 2019 +0200 @@ -0,0 +1,157 @@ +<?xml version="1.0" encoding="UTF-8"?> +<StyledLayerDescriptor + xmlns="http://www.opengis.net/sld" + xmlns:se="http://www.opengis.net/se" + xmlns:ogc="http://www.opengis.net/ogc" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.1.0/StyledLayerDescriptor.xsd" + version="1.1.0"> + <NamedLayer> + <se:Name>sounding_results_contour_lines</se:Name> + <UserStyle> + <se:Name>sounding_results_contour_lines</se:Name> + <se:FeatureTypeStyle> + <se:Name>contour_line_colours</se:Name> + <se:Description> + <se:Abstract> + FeatureTypeStyle defining colour classes for height attribute + </se:Abstract> + </se:Description> + {{ range . -}} + <se:Rule> + {{- if not .HasLow }} + <se:Name>≤ {{ printf "%g" .High }}</se:Name> + <ogc:Filter> + <ogc:PropertyIsLessThanOrEqualTo> + <ogc:PropertyName>height</ogc:PropertyName> + <ogc:Literal>{{ printf "%f" .High }}</ogc:Literal> + </ogc:PropertyIsLessThanOrEqualTo> + </ogc:Filter> + {{- else if not .HasHigh }} + <se:Name>> {{ printf "%g" .Low }}</se:Name> + <ogc:Filter> + <ogc:PropertyIsGreaterThanOrEqualTo> + <ogc:PropertyName>height</ogc:PropertyName> + <ogc:Literal>{{ printf "%f" .Low }}</ogc:Literal> + </ogc:PropertyIsGreaterThanOrEqualTo> + </ogc:Filter> + {{- else }} + <se:Name>≤ {{ printf "%g" .High }}</se:Name> + <ogc:Filter> + <ogc:And> + <ogc:PropertyIsGreaterThan> + <ogc:PropertyName>height</ogc:PropertyName> + <ogc:Literal>{{ printf "%f" .Low }}</ogc:Literal> + </ogc:PropertyIsGreaterThan> + <ogc:PropertyIsLessThanOrEqualTo> + <ogc:PropertyName>height</ogc:PropertyName> + <ogc:Literal>{{ printf "%f" .High }}</ogc:Literal> + </ogc:PropertyIsLessThanOrEqualTo> + </ogc:And> + </ogc:Filter> + {{- end }} + <se:LineSymbolizer> + <se:Stroke> + <se:SvgParameter name="stroke">{{ .Color }}</se:SvgParameter> + <se:SvgParameter name="stroke-width">0.5</se:SvgParameter> + </se:Stroke> + </se:LineSymbolizer> + </se:Rule> + {{ end }} + </se:FeatureTypeStyle> + <se:FeatureTypeStyle> + <se:Name>contour_lines_emph</se:Name> + <se:Description> + <se:Abstract> + FeatureTypeStyle for emphasized contour lines + </se:Abstract> + </se:Description> + <se:Rule> + <se:LegendGraphic> + <se:Graphic> + </se:Graphic> + </se:LegendGraphic> + <ogc:Filter> + <ogc:Or> + {{ range . -}} + {{ if .HasHigh -}} + <ogc:PropertyIsEqualTo> + <ogc:Function name="numberFormat"> + <ogc:Literal>0.000000</ogc:Literal> + <ogc:PropertyName>height</ogc:PropertyName> + </ogc:Function> + <ogc:Literal>{{ printf "%f" .High }}</ogc:Literal> + </ogc:PropertyIsEqualTo> + {{ end -}} + {{ end }} + </ogc:Or> + </ogc:Filter> + <se:MaxScaleDenominator>5e3</se:MaxScaleDenominator> + <se:LineSymbolizer> + <se:Stroke> + <se:SvgParameter name="stroke-width">1.5</se:SvgParameter> + <se:SvgParameter name="stroke"> + <ogc:Function name="Recode"> + <ogc:Function name="numberFormat"> + <ogc:Literal>0.000000</ogc:Literal> + <ogc:PropertyName>height</ogc:PropertyName> + </ogc:Function> + {{ range . -}} + {{ if .HasHigh -}} + <ogc:Literal>{{ printf "%f" .High }}</ogc:Literal> + <ogc:Literal>{{ .Color }}</ogc:Literal> + {{ end -}} + {{ end }} + </ogc:Function> + </se:SvgParameter> + </se:Stroke> + </se:LineSymbolizer> + </se:Rule> + </se:FeatureTypeStyle> + <se:FeatureTypeStyle> + <se:Name>contour_lines_label</se:Name> + <se:Description> + <se:Abstract> + FeatureTypeStyle for labels at contour lines + </se:Abstract> + </se:Description> + <se:Rule> + <se:MaxScaleDenominator>5e3</se:MaxScaleDenominator> + <se:TextSymbolizer> + <se:Label> + <ogc:Function name="Recode"> + <ogc:Function name="numberFormat"> + <ogc:Literal>0.000000</ogc:Literal> + <ogc:PropertyName>height</ogc:PropertyName> + </ogc:Function> + {{ range . -}} + {{ if .HasHigh -}} + <ogc:Literal> + {{- printf "%f" .High -}} + </ogc:Literal><ogc:Literal> + {{- printf "%g" .High -}} + </ogc:Literal> + {{ end -}} + {{ end }} + </ogc:Function> + </se:Label> + <se:Font> + <se:SvgParameter name="font-family">Avenir</se:SvgParameter> + <se:SvgParameter name="font-family">Helvetica</se:SvgParameter> + <se:SvgParameter name="font-family">Arial</se:SvgParameter> + <se:SvgParameter name="font-family">sans-serif</se:SvgParameter> + </se:Font> + <se:LabelPlacement> + <se:LinePlacement> + <se:PerpendicularOffset>5</se:PerpendicularOffset> + </se:LinePlacement> + </se:LabelPlacement> + <se:Fill> + <se:SvgParameter name="fill">#070707</se:SvgParameter> + </se:Fill> + </se:TextSymbolizer> + </se:Rule> + </se:FeatureTypeStyle> + </UserStyle> + </NamedLayer> +</StyledLayerDescriptor>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/style-templates/upload-styles.sh Thu Sep 26 12:16:23 2019 +0200 @@ -0,0 +1,119 @@ +#!/bin/bash -e +# +# This is Free Software under GNU Affero General Public License v >= 3.0 +# without warranty, see README.md and license for details. +# +# SPDX-License-Identifier: AGPL-3.0-or-later +# License-Filename: LICENSES/AGPL-3.0.txt +# +# Copyright (C) 2019 by via donau +# – Österreichische Wasserstraßen-Gesellschaft mbH +# Software engineering by Intevation GmbH +# +# Author(s): +# * Sascha Wilde <wilde@intevation.de> + +ME=`basename "$0"` +BASEDIR=`dirname "$0"` + +usage() +{ + cat <<EOF +$ME [OPTION]... + +Upload map styles to gemma. + +Options: + -P, --g_port=GPORT connect to gemma server at GPORT. Default 8000. + -g, --g_host=GHOST connect to gemma server on GHOST. Default "localhost". + -u, --g_user=GUSER login to gemma as user GUSER. Default "sophie". + --g_pw=GPW password for GUSER. Default "so2Phie4". + --help display this help and exit + +EOF +} + +fatal() +{ + echo >&2 "$1" + exit 23 +} + +# Defaults: + +g_port=8000 +g_host="localhost" +g_user="sophie" +g_pw="so2Phie4" + +# Parse options: + +OPTS=`getopt \ + -l help,g_port:,g_host:,g_user:,g_pw: \ + -o P:g:u: -n "$ME" -- "$@"` +[ $? -eq 0 ] || { usage ; exit 1 ; } + +eval set -- "$OPTS" + +while true ; do + case "$1" in + --g_port|-P) + g_port="$2" + shift 2 + ;; + --g_host|-g) + g_host="$2" + shift 2 + ;; + --g_user|-u) + g_user="$2" + shift 2 + ;; + --g_pw) + g_pw="$2" + shift 2 + ;; + --help) + { usage ; exit 0 ; } + ;; + --) + shift + break + ;; + esac +done + +if [ $# != 0 ] ; then + { usage ; exit 23 ; } +fi + +# Main ------------------------------------------------------------ + +# Login to gemma server +login=$(curl -f -s -S -X POST \ + -d "{\"user\":\"${g_user}\",\"password\":\"${g_pw}\"}" \ + "http://${g_host}:${g_port}/api/login") +token=$(jq -r '.token' <<<"$login") +if [ -z "$token" ] +then + echo "could not login to gemma server" >&2 + exit 1 +fi + +roles=$(jq -r '.roles' <<<"$login") + +basedir=$( dirname $( realpath "${BASH_SOURCE[0]}" )) +datadir="${basedir}/." + +if jq -e 'any(. == "sys_admin")' <<<"$roles" > /dev/null +then + echo "== Configuring geoserver styles" >&2 + for style in $(basename -s .sld-template $(ls $datadir/*.sld-template)) + do + curl -f -s -S -H "X-Gemma-Auth:${token}" -X POST \ + -F style=@"${datadir}/${style}.sld-template" \ + "http://${g_host}:${g_port}/api/geo/style/${style}" + done +else + echo >&2 'Not authorized as sys_admin' +fi
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/style-templates/waterway_area.sld-template Thu Sep 26 12:16:23 2019 +0200 @@ -0,0 +1,23 @@ +<?xml version="1.0" encoding="UTF-8"?> +<StyledLayerDescriptor version="1.0.0" + xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd" + xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <NamedLayer> + <Name>waterway_area</Name> + <UserStyle> + <Title>A yellow polygon style</Title> + <FeatureTypeStyle> + <Rule> + <Title>yellow polygon</Title> + <PolygonSymbolizer> + <Stroke> + <CssParameter name="stroke">{{ .waterway_area_stroke }}</CssParameter> + <CssParameter name="stroke-width">1</CssParameter> + </Stroke> + </PolygonSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> + </NamedLayer> +</StyledLayerDescriptor>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/style-templates/waterway_axis.sld-template Thu Sep 26 12:16:23 2019 +0200 @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8"?> +<StyledLayerDescriptor version="1.0.0" + xsi:schemaLocation="http://www.opengis.net/sld http://schemas.opengis.net/sld/1.0.0/StyledLayerDescriptor.xsd" + xmlns="http://www.opengis.net/sld" xmlns:ogc="http://www.opengis.net/ogc" + xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + <NamedLayer> + <Name>waterway_axis</Name> + <UserStyle> + <Title>A cyan line style</Title> + <FeatureTypeStyle> + <Rule> + <Title>cyan line</Title> + <LineSymbolizer> + <Stroke> + <CssParameter name="stroke">{{ .waterway_axis_stroke }}</CssParameter> + <CssParameter name="stroke-dasharray">5 5</CssParameter> + <!--CssParameter name="stroke-opacity">0.5</CssParameter--> + </Stroke> + </LineSymbolizer> + </Rule> + </FeatureTypeStyle> + </UserStyle> + </NamedLayer> +</StyledLayerDescriptor>