GeoServer Feature FRENZY - Zenodo

88
GeoServer Feature FRENZY

Transcript of GeoServer Feature FRENZY - Zenodo

GeoServer Feature FRENZY

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?

3ready

2set

1go!

1000 feet view

Ge

oS

erv

er

WFS

WMS

PostGISOracle

H2DB2

SQL ServerGeoPackage

SQL ServerMySql

SpatialiteMongoDB

Shapefile ---------------------------------------

---------------------------------------

---------------------------------------

ArcSDEWFS

PNG, GIFJPEGTIFF, GeoTIFFSVG, PDFKML/KMZ

ShapefileGML2GML3GeoRSSGeoJSONCSV/XLS

Raw vectordata

Servers

Styled maps

DBMS

Vector files

WCSGeoTIFF

WMSArcGrid

Img+worldMosaicMrSID

JPEG 2000ECW,Pyramid, Oracle

GeoRaster, PostGIS Raster, NetCDF Raster files

Raw rasterdata

GeoTIFFArcGridGTopo30Img+World

WMTS,TMS,

WMS-C

KML superoverlaysGoogle maps tilesOGC tilesOSGEO tiles

KML

WPS

CSW

Many of these are provided by extensions

Configuration

GUI: GeoServer for point & clickers

GUI: GeoServer for point & clickers

GUI: GeoServer for point & clickers

Style editor

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

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

Parametric SQL Views

GeoServer WMS/WFS

...

DBMS

Any DB ...

Inje

ct p

aram

s fr

om r

eque

st

Run query as layer source

NoSQL!

Distributed!

Raster data sources

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, mapseverywhere!

Basic maps

Samples from IGN (using SLD)

OSM? Yes OSM! (With CSS this time)

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

Reproject with confidence

Dateline wrap Cut on UTM Cut on polar stereographic

Densify forsmooth 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

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

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

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?{ "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,

● No worries● Your 2020 nightmares will be made of

complex GeoJSON instead!

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!

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

Integrated WPS

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

On the fly contour extraction from styles

Jiffle and rendering transformations

nir = src[7];vir = src[3];dest = (nir-vir)/(nir+vir);

Map Algebra at your fingertipsOn the fly, or batch with WPS

Extract wind barbs from 2 bands raster data

u vu

v

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>

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>

HeatMap Transform

Heatmaps

title: Heatmapfeature-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]

And more

Discrete point interpolation Point stacker

Find your style(language)

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

SLD Named Layers (Style Groups)

Great for SLD and YSLD

Use with MapBox style to define once for GeoServer and OpenLayers

Style several layers together into a single mapGetMap SLD=”<URL> Add Style Group...

Styling Reference, Cookbooks, Workshops

windbarbs://

Making your Mark

square

circle

triangle

star

square

x

“standard” shape:// extshape:// wkt:// ttf://

Multidimensional dataWeather or not you are ready

Multidimensional data, in and out!

● Time, elevation in WMS, WMTS and WCS

Multidimensional data formats

GRIB

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

Meteorology ready!

SecurityStop or I will say Stop Again

Authentication and Authorization

Fully pluggable!

Authentication

BASIC

DIGEST

LDAPand

Active Directory

Database

GithubGoogle

GeoNodeOpenID 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

Quality Assurance: JUnit (unit and integration tests)

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

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!?

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?

“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 [email protected] 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 AnswerThanks!