GeoServer Feature FRENZY

Speakers: Kevin Smith (Boundless), Andrea Aime (GeoSolutions), Jody Garnett (Boundless),

Abstract

State of GeoServer provides an update on our community and reviews the new and noteworthy features for the Project. The community has a lot to cover with both GeoServer 2.10 and 2.11 updates to enjoy, and a preview of what you can expect in GeoServer 2.12 next month.

Each releases provides exciting new features. This talk covers diverse improvements to rendering, style editing, raster improvements and projection support. For those upgrading we will dig into new configuration options, and performance improvements you can look forward to.

Each year is also met with some challenges, both social as new developers join the project, and technical as apple and windows continues to lock down their respective platforms.

More positively this year has been great for new extensions, with several community modules graduating (making them available for easy download). This year also sees improvements to our documentation with both a new structure and an REST API reference.

Attend this talk for a cheerful update on what is happening with this popular OSGeo project. Whether you are an expert user, a developer, or simply curious what GeoServer can do for you.

Tags: GeoServer, Beginner, Manager, End User, Power-User

Submitted: FOSS4G (FOSS4G Software, FOSS4G Development)

Link to project: https://github.com/geoserver/geoserver

Why this Talk?

  • State of GeoServer 2.16 talks hit what is New!
  • This talk hits what is beloved, amazing, or unexpected!
  • 20 min talk

Are you readyyyy?

JODY

3

ready

AA

2

set

AA

1

go!

AA

1000 feet view

BOTH

GeoServer

WFS

WMS

PostGIS

Oracle

H2

DB2

SQL Server

GeoPackage

SQL Server

MySql

Spatialite

MongoDB

Shapefile

----------

----------

---------

----------

----------

----------

---------

----------

----------

----------

---------

----------

ArcSDE

WFS

PNG, GIF

JPEG

TIFF, GeoTIFF

SVG, PDF

KML/KMZ

Shapefile

GML2

GML3

GeoRSS

GeoJSON

CSV/XLS

Raw vector

data

Servers

Styled

maps

DBMS

Vector files

WCS

GeoTIFF

WMS

ArcGrid

Img+world

Mosaic

MrSID

JPEG 2000

ECW,Pyramid, Oracle GeoRaster, PostGIS Raster, NetCDF

Raster files

Raw raster

data

GeoTIFF

ArcGrid

GTopo30

Img+World

WMTS,

TMS,

WMS-C

KML superoverlays

Google maps tiles

OGC tiles

OSGEO tiles

KML

WPS

CSW

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

Many of these are provided by extensions

Configuration

BOTH

GUI: GeoServer for point & clickers

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

GUI: GeoServer for point & clickers

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

GUI: GeoServer for point & clickers

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

Style editor

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

But you’re not limited to point and click, REST!

Need to mass-configure layers? Importer!

GUI and REST

Bit of safety: backup and restore extension

  • Save the configuration to a zip file (not the data!)
  • Restore later, in the same or different environment
  • UI to run backup and restore
  • Asynch operations
  • REST Interface
  • During backup the configuration is read only
  • During restore it’s fully locked
  • Support “dry run” to for errors prior to restore

Vector data sources

JG

Files files, many little files

(OGR)

SQL

Everybody loves curves

  • Read curved geometries from Oracle and PostGIS, paint them, GML output them, linearize everywhere else

SqlViews

GeoServer WMS/WFS

...

DB2

Any DB

...

Run query as
layer source

Are we sure? Oracle has its own map server. Maybe easiest open source way ;-)

Parametric SQL Views

GeoServer WMS/WFS

...

DBMS

Any DB

...

Inject params from request

Run query as
layer source

Are we sure? Oracle has its own map server. Maybe easiest open source way ;-)

NoSQL!

Distributed!

Raster data sources

JG

Run of the mill

Old but gold!

Simple Mosaic

ArcGrid

Fully configured Mosaic (custom schemas, attributes, filtering, sorting, custom storage)

Going native

GDAL 2.x

(NITF files)

Fast JPEG2000

Maps, maps

everywhere!

BOTH

Basic maps

Samples from IGN (using SLD)

OSM? Yes OSM! (With CSS this time)

Reproject with confidence

GeoServer handles dateline, projection limits, high accuracy projection grids, and so on

Dateline wrap

Cut on UTM

Cut on polar stereographic

Densify for

smooth reprojection

Only want to play with MVT? Ok!

  • Extension for publishing vector tiles
  • Great solution for modern High Definition Screens
  • Client side styling
  • Use for GeoServer for “MapBox without MapBox”
  • Also to do “MapBox with OGC fallback”

Integrated tiles cache

BOTH

GeoWebCache

  • Tile caching application
  • Can cache tiles in PNG/JPG/KML/MVT/GeoJSON
  • Can store tiles in file system/SQLite/S3/Azure
  • Supports WMS-C, TMS, WMTS

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

Runs integrated in GeoServer

  • Configuration integration
    • Configure layer once
    • Setup via GUI

  • Security integration
    • Configure security once
    • Limited checks (only layer access, no attributes, areas and alphanumeric filters)
  • Event integration
    • Change styles, tiles dropped
    • WFS-T transaction, tiles dropped

  • Service integration
    • Direct integration
    • Intercept tiled requests from WMS and uses cache for them

Deliver data

BOTH

WFS and WCS

  • Download vector data
  • Filter, reproject, join, page

  • Download raster data
  • WCS 2.0, a protocol humans can understand

CQL

POP_EST <= 5000000 AND POP_EST >100000

A light weight “domain specific language”:

  • CQL - is a standard from OGC Catalog
  • E-CQL - extends this basic concept to do everything Filter can do

CQL

POP_EST <= 5000000 AND POP_EST >100000

A light weight “domain specific language”:

  • CQL - is a standard from OGC Catalog
  • E-CQL - extends this basic concept to do everything Filter can do

In GeoServer CQL can filter raster data too… in particular, mosaic images with associated attributes

Editing data since 2003 (the original superpower)

WFS-T

PostGIS

Oracle

Shapefile

SQLServer

...

App Schema

Complex GML making your eyes bleed?

  • No worries
  • Your 2020 nighmares will be made of complex GeoJSON instead!

{

"type": "FeatureCollection",

"features": [

{

"type": "Feature",

"id": "0001000001",

"geometry": {

"type": "Point",

"coordinates": [51.0684, 1.4298]

},

"properties": {

"@featureType": "Borehole",

"identifier": {

"value": "BSS000AAAA",

"@codeSpace": "http://www.ietf.org/rfc/rfc2616"

},

"bholeHeadworks": [

{

"type": "Feature",

"geometry": {

"type": "Point",

"coordinates": [51.0684, 1.4298]

},

"properties": {

"@featureType": "BoreCollar",

"collarElevation": {

"value": -32,

INSPIRE

<inspire_vs:ExtendedCapabilities>
<inspire_common:MetadataUrl xsi:type="inspire_common:resourceLocatorType">
<inspire_common:URL/>
<inspire_common:MediaType>application/vnd.iso.19139+xml</inspire_common:MediaType>
</inspire_common:MetadataUrl>
<inspire_common:SupportedLanguages xsi:type="inspire_common:supportedLanguagesType">
<inspire_common:DefaultLanguage>
<inspire_common:Language>eng</inspire_common:Language>
</inspire_common:DefaultLanguage>
<inspire_common:SupportedLanguage>
<inspire_common:Language>eng</inspire_common:Language>
</inspire_common:SupportedLanguage>
</inspire_common:SupportedLanguages>
<inspire_common:ResponseLanguage>
<inspire_common:Language>eng</inspire_common:Language>
</inspire_common:ResponseLanguage>
</inspire_vs:ExtendedCapabilities>

Process!

BOTH

Integrated WPS

  • Analyze, publish, transform on the fly, access local data

Think small

  • Small is useful
  • BBOX for filtered datasets
  • Aggregation processes, provides datasets for building charts (group and count)
  • Clip and ship
  • Build animations

Think big!

  • Start remote processing nodes, track their progress
  • Register the result as a GeoServer layer for preview before download

Rendering transformations:

process and render at the same time

BOTH

On the fly contour extraction from styles

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

Jiffle and rendering transformations

nir = src[7];

vir = src[3];

dest = (nir-vir)/(nir+vir);

Map Algebra at your fingertips

On the fly, or batch with WPS

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

Extract wind barbs from 2 bands raster data

u

v

u

v

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

Extract wind barbs from 2 bands raster data

<FeatureTypeStyle>

<Transformation>

<ogc:Function name="ras:RasterAsPointCollection">

<ogc:Function name="parameter">

<ogc:Literal>data</ogc:Literal>

</ogc:Function>

<<ogc:Function name="parameter">

<ogc:Literal>emisphere</ogc:Literal>

<ogc:Literal>True</ogc:Literal>

</ogc:Function>

<ogc:Function name="parameter">

<ogc:Literal>interpolation</ogc:Literal>

<ogc:Literal>InterpolationBilinear</ogc:Literal>

</ogc:Function>

<ogc:Function name="parameter">

<ogc:Literal>scale</ogc:Literal>

<ogc:Literal>8</ogc:Literal>

</ogc:Function>

</ogc:Function>

</Transformation>

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

Extract wind barbs from 2 bands raster data

<Mark>

<WellKnownName>

windbarbs://default(

<ogc:Function name="sqrt">

<ogc:Add>

<ogc:Mul>

<ogc:PropertyName>u</ogc:PropertyName>

<ogc:PropertyName>u</ogc:PropertyName>

</ogc:Mul>

<ogc:Mul>

<ogc:PropertyName>v</ogc:PropertyName>

<ogc:PropertyName>v</ogc:PropertyName>

</ogc:Mul>

</ogc:Add>

</ogc:Function>

)[m/s]?emisphere=

<ogc:PropertyName>emisphere</ogc:PropertyName>

</WellKnownName>

<Stroke>

<CssParameter name="stroke">000000</CssParameter>

<CssParameter name="stroke-width">1</CssParameter>

</Stroke>

</Mark>

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

HeatMap Transform

Heatmaps

title: Heatmap

feature-styles:

- transform:

name: vec:Heatmap

params:

weightAttr: pop2000

radiusPixels: 100

pixelsPerCell: 10

rules:

- symbolizers:

- raster:

opacity: 0.6

color-map:

type: ramp

entries:

- ['#FFFFFF',0,0.0,nodata]

- ['#4444FF',1,0.1,nodata]

- ['#FF0000',1,0.5,values]

- ['#FFFF00',1,1.0,values]

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

And more

Discrete point interpolation

Point stacker

Find your style

(language)

BOTH

SLD 1.0 and 1.1

Geo-CSS

YSLD MapBox GL

name: style_example
title: An example of YSLD styling
abstract: Used in the User Manual of GeoServer
feature-styles:
- rules:
- name: all
title: Every feature will be styled this way
symbolizers:
- polygon:
fill-color: '#808080'
fill-opacity: 0.5
stroke-color: '#000000'
stroke-opacity: 0.75

{
"version": 8,
"layers": [
{
"id": "default_point",
"type": "circle",
"source": "test-source",
"source-layer": "place_label",
"layout": {
"visibility": "visible"
},
"paint": {
"circle-color": "#FF0000",
"circle-opacity": 1,
"circle-radius": 6,
"circle-stroke-opacity": 0,
}
}
]
}

Help needed!

Help needed!

Convert around

SLD 1.0

SLD 1.1

GeoCSS

MBStyle

YSLD

http://docs.geoserver.org/latest/en/user/community/oauth2/index.html

SLD Named Layers (Style Groups)

Rather than previewing the style as it applies to a single layer, "Preview as style group" determines which layer(s) to render based on the names of each of the NamedLayers in the style. This mode also supports styles containing UserLayers with inline features.

Style groups can be served through WMS by adding them to a Layer Group.

Note: When "Preview as style group" is enabled, the selected preview layer no longer affects the "Layer Preview" tab, but will still affect the "Layer Attributes" tab.

Style several layers together into a single map

Great for SLD and YSLD

Use with MapBox style to define once for GeoServer and OpenLayers

GetMap SLD=”<URL>

Add Style Group...

Styling Reference, Cookbooks, Workshops

Making your Mark

windbarbs://

square

circle

triangle

star

square

x

“standard”

shape://

extshape://

wkt://

ttf://

http://mapkeyicons.com

Multidimensional data

Weather or not you are ready

AA

Multidimensional data, in and out!

  • Time, elevation in WMS, WMTS and WCS

Are we sure? Oracle has its own map server. Maybe easiest open source way ;-)

Multidimensional data formats

GRIB

Are we sure? Oracle has its own map server. Maybe easiest open source way ;-)

Meteorology ready!

Temperature, currents, wind, pressure, time and elevation? We got you covered!

Security

Stop or I will say Stop Again

JG

Authentication and Authorization

Fully pluggable!

Authentication

BASIC

DIGEST

LDAP
and

Active Directory

Database

Github

Google

GeoNode

OpenID connect

X.509

J2EE

AuthKey

Authorization

  • Built-in

  • Simple
  • Layer based
  • Read/Write/Admin
  • GeoFence

  • Sophisticated rules (“conditions on this layer while being accessed by WFS GetFeature)
  • Restrict access by attribute, alphanumeric filter, area

Reliability

AA

Build Boxes and QA

- JUnit Green bar of happiness

- Jenkins weather report

Quality Assurance: JUnit (unit and integration tests)

  • Build with Tests takes 15 mins
  • Build with Tests disabled takes 2 mins
  • Thousands of tests

Green Bar of Happiness

Quality Assurance: Continuous Build Box

Quality Assurance: Manual Code Review

Quality Assurance: PR automatic checks

  • Static code checks
    • PMD
    • CheckStyle
    • ErrorProne
    • Deprecated method checks
  • One failure above marks the build red

And all of this is…

Free!?

JG

Open Source

Free as in Freedom:

  • GPL License

Cost Free

Free as in Beer:

  • Download now to $0!
  • This weeks special 10% off $0!

Doesn’t that make you want to contribute?

BOTH

“I can code and want to contribute”

“I have money and want to donate a new feature”

“I have money and want to donate”

OSGeo Foundation Project

  • Donate via PayPAL

Funding is welcome at any time!

PSC occasionally does special call for financial support (usually for maintenance activities).

  • GSIP-176 CITE Automation

“I have money want invoice for financial support”

OSGeo Foundation Project

  • Contact treasurer@osgeo.org for invoice

Funding is welcome at any time!

PSC occasionally does special call for financial support (usually for maintenance activities).

  • GSIP-176 CITE Automation

“I can’t code nor have money… want to contribute!”

  • Yes please!!!
  • Community project includes you
  • Documentation improvements, Tutorials!
  • Answering other users questions on the user list
  • Hands on development is not all coding
  • Checking tickets can be reproduced
  • When we make RC releases, try them out, hunt for regressions!
  • “bug stomp” and confirm fixes in real time

Question and Answer

Thanks!

BOTH

GeoServer Feature Frenzy 2019 - Google Slides