State of GeoServer - FOSS4G 2016

71
State of GeoServer 2016 FOSS4G Bonn

Transcript of State of GeoServer - FOSS4G 2016

Page 1: State of GeoServer - FOSS4G 2016

State ofGeoServer 2016

FOSS4G Bonn

Page 2: State of GeoServer - FOSS4G 2016

Andrea AimeTechnical [email protected]@geowolf

GeoSolutionsInnovative, robust and cost-effective solutions leveraging best-of-breed Open Source products.

WelcomeOpen Source ProjectsGeoToolsGeoServerImageIO-ExtJAI-ExtJAI Tools

OSGeo FoundationCharter Member

Page 3: State of GeoServer - FOSS4G 2016

Jody GarnettCommunity [email protected]@jodygarnett

BoundlessProvides geospatial tools and services for managing data and building applications.

WelcomeOpen Source ProjectsGeoToolsGeoServeruDig

OSGeo FoundationBoard MemberOSGeo Incubation ChairGeoTools Project Officer

Eclipse FoundationLocationTech Steering CommitteeLocationTech Technology Project

Page 4: State of GeoServer - FOSS4G 2016

GeoServer 2016

Page 5: State of GeoServer - FOSS4G 2016

GeoServer at a GlanceJava Web Application to share and edit geospatial data.

Publish data from any major spatial data source using open standards.

Core Protocols

WMS – mapsWFS – vector WFS-T – editing WCS – coverageWPS – process

Tile Protocols

WMTS – tilesTileService – tilesWMS-C – tiles

Page 6: State of GeoServer - FOSS4G 2016

28 → 37 members of team geoserver624 → 619 members on geoserver-devel500+ → 525 pull requestsNew contributors being added(others stepping back)Smaller base of active contributors this year.Pull requests still going strong, very active codebase.Simone replaces Andrea as OSGeo Officer.13 releases this year

Health CheckupHow about team user-list?

1983 → 2005 geoserver-users

Also geoserver-italia, espanol and opengeo.cn mailing lists

Page 7: State of GeoServer - FOSS4G 2016

August 2.8.5 2.9.1

July

June 2.8.4

May 2.9.0

April 2.9-beta2

March 2.7.6 2.8.3

February

January 2.8.2

December 2.7.5

November 2.7.4 2.8.1

October 2.7.3

September 2.8.0

Releases stable maintenance

} delay

Page 8: State of GeoServer - FOSS4G 2016

Q: “Update the headers” was the most common feedback on incoming pull requests. Was it needed?

A: Checked with OSGeo legal (thanks board):

- headers are an historical artifact from before the Berne Convention

- no longer needed, now just informative.

Header Maintenance

Page 9: State of GeoServer - FOSS4G 2016

/* (c) 2016 Open Source Geospatial Foundation - all rights reserved * This code is licensed under the GPL 2.0 license, available at the * root application directory. */package org.geoserver.main;

New Headers PolicyThe new copyright header management policy is as simple as:

● Add a copyright header, with the current year, to each new file

● Add a copyright header to each modified file without one (using the current year)

● Otherwise do not change the copyright header when an existing file is modified

Page 10: State of GeoServer - FOSS4G 2016

Maintenance &Technical Debt

Page 11: State of GeoServer - FOSS4G 2016

● Relying on volunteer time to keep an eye on the codebase was not working out

○ team busy on customer work?○ backlog of bugs piling up

● Trying an experiment○ Once a month meeting○ Distributed, on-line code sprint

● When:○ First edition in July○ Second at the end of FOSS4G

Monthly bug fixing code sprints

Page 12: State of GeoServer - FOSS4G 2016

Monthly bug fixing code sprints● Actions

○ Vet existing tickets○ close invalid/non reproducible ones○ close feature requests that failed to gather

resourcing in a long time...○ Fix bugs

● Nice side effects:○ Gets more developers familiar with the

contents of the issue tracker○ Opportunity to get proficient with new parts

of the code base○ Predictable, scheduled activity

Page 14: State of GeoServer - FOSS4G 2016

Java 8GeoServer now requires Java 8.

Why? What changed ...

- Traditionally GeoServer takes forever to support the latest Java- Oracle now charges for Java 7 security updates

2.9 2.10Joint EffortCommunity

Page 15: State of GeoServer - FOSS4G 2016

Required to upgrade the “Spring Framework” used to wire GeoServer together:

- We needed a newer version of “Spring” for Java 8 compatibility

- Upgraded to Spring 4 → 2 month delay to GeoServer 2.9 release

Check that your application server supports:

- Servlet 3.0 was released in 2009 - Supported by Tomcat 7 and Tomcat 8

Spring 4

2.9 2.10Joint-EffortCommunity

Page 16: State of GeoServer - FOSS4G 2016

Vector data sources

Page 17: State of GeoServer - FOSS4G 2016

GeoPackage module moving to supported land● Currently a “community module”, not officially supported

● Increasing test coverage● More compatibility testing with OGR and friends● OGC compliance tests● Moving towards supported

status, hopefully in time for 2.10

2.10Ian TurtonGeoSolutions

Swedish University of Agricultural Sciences

Page 18: State of GeoServer - FOSS4G 2016

WFS cascading updates● The original WFS client is being retired in 2.10● WFS-NG will be taking over● Compatibility testing done with MapServer, TinyOWS, ….

2.10Scitus DevelopmentBoundless

TinyOWS

ArcGIS WFSWFS/WMS/WMTS

WFS

Page 19: State of GeoServer - FOSS4G 2016

Raster data sources

Page 20: State of GeoServer - FOSS4G 2016

Improved masking support● Raster masking available for both image mosaic and GDAL data sources● Both in vector (polygon footprint) and raster (binary mask) for

2.8 2.9 2.10GeoSolutionsLiguria digitale

Page 21: State of GeoServer - FOSS4G 2016

Heterogeneous mosaics - color models● Support for mosaics with sources in multiple color models

(RGB, gray, indexed), since 2.8.x

2.8 2.9 2.10GeoSolutions

Page 22: State of GeoServer - FOSS4G 2016

Heterogeneous mosaics - resolution / projections

2.10BoundlessSOCOM

● Support for mosaics in multiple coordinate reference systems(Coming in 2.10.x)

Page 23: State of GeoServer - FOSS4G 2016

Excess granule removal ● Optimization for deep z-order mosaic stacks● E.g., time series of scattered data● Do not load imagery that is not contributing to the output

2.9 2.10GeoSolutionsBEV

In development!

Page 24: State of GeoServer - FOSS4G 2016

Multiple coverages for mosaic and pyramid (2.10)● Already available for multidimensional data (NetCDF, Grib)● Now available also for “flat” data sources● Meaningful if the sources are normally managed and used together (e.g.,

multispectral satellite data and its derived products)

2.9 2.10ImplementorBEV

Page 25: State of GeoServer - FOSS4G 2016

Coverage view optimizations (2.10)● A coverage view allows to bind together bands from different coverages

coming from the same source (e.g., NetCDF)● Optimization to avoid reading all sources if the style is only using a subset of

the bands

A

B

C

CombinerSLD Style

selecting only A

Map

Hint about which bands are actually going to be

used

GeoSolutionsBEV 2.9 2.10

In development!

Page 26: State of GeoServer - FOSS4G 2016

GeoServer support for rotated pole projections

2.9 2.10

Rotated pole projection support for GRIB2/NetCDF/ImageMosaic data stores and WCS NetCDF output.

Publish the native GRIB2 file format of NOAA RAPv3 North American weather forecast model: http://rapidrefresh.noaa.gov/

Upgraded to NetCDF Java 4.6.6 (Ben contributed a fix in it)

TransientBoundless/NOAA

Page 27: State of GeoServer - FOSS4G 2016

Styling

Page 28: State of GeoServer - FOSS4G 2016

Perpendicular Offset for Lines and Polygons

<LineSymbolizer>

<Stroke>

<CssParameter name="stroke">#AAAAAA</CssParameter>

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

</Stroke>

<PerpendicularOffset>-2</PerpendicularOffset>

</LineSymbolizer>

<LineSymbolizer>

<Stroke>

<CssParameter name="stroke">#FF0000</CssParameter>

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

<CssParameter name="stroke-dasharray">5 2</CssParameter>

</Stroke>

<PerpendicularOffset>3</PerpendicularOffset>

</LineSymbolizer>

2.8 2.9 2.10GeoSolutionsDLR

Page 29: State of GeoServer - FOSS4G 2016

ncWMS like extensions to GetMap (community)● A new styling language designed for dynamic colormaps● Applies to all rasters based on their statistics● Use can control min/max, log scale, animation

2.10GeoSolutions

Page 30: State of GeoServer - FOSS4G 2016

Style Page

2.10BoundlessCommunity

Refactored CSS Style Page into the main application.

Works withSLD, CSS, YSLD.

Improved experience for everybody!

In development!

Page 31: State of GeoServer - FOSS4G 2016

New features for CSS (2.10)● Rendering transformations supported (feature parity with SLD!)● Rule nesting, helps with selector duplication and makes styles more readable

/* @title Levels */* { transform: ras:Contour(levels: 1100 1200 1300 1400 1500 1600 1700); stroke: black; z-index: 0;}

/* @title Values */[@scale < 3000] { transform: ras:RasterAsPointCollection(); mark: symbol('square'); :mark { size: 2; fill: black; } label: [GRAY_INDEX]; label-anchor: 0 0.5; label-offset: 5 0; font-family: Arial; font-fill: black; z-index: 1;}

Extract contours at the desired levels

When zoomed-in enough, extract point values, display center with a mark, and value on top of it

2.10Andrea Aime

In development!

Community

Page 32: State of GeoServer - FOSS4G 2016

YSLD community module● Style Layer Descriptor represented in

YAML○ Uses indentation rather than XML○ Easier to read○ More compact○ More flexible syntax○ Contains variables for reusable code○ Compatible with SLD

● REST API can convert formats○ Preview your existing styles as YSLD

using REST API○ View the SLD representation of YSLD

2.9 2.10Implementor

symbolizers:- polygon: stroke-color: 'blue' stroke-width: 1 fill-color: '#7EB5D3'- text: label: ${name} fill-color: 'black' anchor: [0.5, 0.5] x-maxDisplacement: 40 x-autoWrap: 70

Community

Page 33: State of GeoServer - FOSS4G 2016

Custom Legend GraphicTake control of the legend graphic(Advertised in WMS GetCapapabilities).

Legend shown in compatible clients when listing your layer.

2.9 2.10BoundlessBoundless

Page 34: State of GeoServer - FOSS4G 2016

WMS

Page 35: State of GeoServer - FOSS4G 2016

image/vnd.jpeg-png● Smart format, chooses

between JPEG and PNG depending on image contents

● JPEG for max compression on fully opaque images

● PNG when transparency is needed

● Supported both in WMS and WMTS

PNG PNG PNG

PNG JPEG JPEG

2.9 2.10GeoSolutions

Page 36: State of GeoServer - FOSS4G 2016

UTFGrid (format=application/json;type=utfgrid)

● MapBox style UTFGrid output for WMS and WMTS

● More flexibility○ Non square tiles○ Available in all projections

● Of course you can limit yourself to simple tiles

2.9 2.10GeoSolutionsCianad

Page 37: State of GeoServer - FOSS4G 2016

Vector tilesCommunity module for publishing vector tiles

- Great solution for modern High Definition Screens

- Use for GeoWebCache for “MapBox without MapBox”

- (see talk tomorrow)

2.8 2.9 2.10ImplementorCustomer

Page 38: State of GeoServer - FOSS4G 2016

GetLegendGraphic layout control● Vendor parameters to control layout of generated legend:

layout, rows, cols, rowwidth, columnheight● Horizontal or vertical, possibility to control number of columns● Handy for printing maps

horizontal

horizontal, 2 rows

horizontal, max row len

vertical, 2 cols

vertical, max col height

2.8 2.9 2.10GeoSolutionsUNEP

Page 39: State of GeoServer - FOSS4G 2016

WFS

Page 40: State of GeoServer - FOSS4G 2016

Breaking the limits of shapefile size (paging)● A WFS shapefile extraction could go beyond the limits of shapefile max size● If this happens, shapefiles are now paged out● The dumping engine, including the ability to fan out different geometry types

to separate shapefiles, is now available as a utility class in GeoTools

2.8 2.9 2.10GeoSolutionsSwedish University of Agricultural Sciences

Page 41: State of GeoServer - FOSS4G 2016

Easier setup for complex features with Hale● Desktop tool to map a

flat data source to a complex schema

● Visual● Support for exporting

the mapping as an app-schema mapping

● Still needs some work to improve workflow efficiency

2.8 2.9 2.10GeoSolutionsLAMMA

Page 42: State of GeoServer - FOSS4G 2016

Speed up that complex feature query

● Filters on primary table fields already sent down to the DBMS as SQL

● Filters on joined fields were evaluated in memory

● Optimizations to send those down, leverage indexes and reduce network i/o

2.8 2.9 2.10GeoSolutionsCSI Piemonte

In memoryfiltering

DBMSfiltering

In development!

Page 43: State of GeoServer - FOSS4G 2016

Tiling

Page 44: State of GeoServer - FOSS4G 2016

MBTiles like storage● Store tiles in MBTiles database● Possibility to use many databases, following a pattern, e.g.,

○ /path/to/{grid}/{dim}/{tileset}/{z}/{x}-{y}.sqlite (x and y are actually groups of values)○ Helps with scalability, especially if not fully seeded

● Allows to store non Google Mercator projections (extension)● Allows to store formats other than png or jpeg (extension)● Stores in lookup table creation date for expiration support● REST API to replace single files (automate migration from seeding

machine to serving ones)● Not compatible with disk quota!

https://github.com/GeoWebCache/geowebcache/wiki/MBTiles-BlobStore

2.9 2.10GeoSolutionsCapgemini

Page 45: State of GeoServer - FOSS4G 2016

WMTS config page● Allows WMTS to have

its own service metadata configured from the UI

● Adds a point where the INSPIRE module can plug into for extra configuration

2.9 2.10GeoSolutionsBEV

Page 46: State of GeoServer - FOSS4G 2016

WMTS workspace specific and INSPIRE compatibility● WMTS now works also as a

workspace specific service (finally tile caching for multitenant setups)

● Allows to setup INSPIRE harmonized layer names

● INSPIRE module extended to inject INSPIRE minimum metadata in WMTS GetCapabilities output

Workspace1

Workspace 2

INSPIREcompliant

Generic tiles

2.9 2.10GeoSolutionsBEV

Page 47: State of GeoServer - FOSS4G 2016

WMS/WMTS ND discovery extensions

● Data with N dimensions (time, elevation, custom ones)● Dimensions can be related (forecasts, time and run time), the data can be

scattered (remote sensing), hard to locate data in the ND cube● Add extra calls to query the domains● Check the current specification and give us feedback

2.9 2.10GeoSolutionsBEV

In development!http://demo.geo-solutions.it/share/wmts-multidim/wmts_multidim_geosolutions.html

Page 48: State of GeoServer - FOSS4G 2016

WPS

Page 49: State of GeoServer - FOSS4G 2016

Aggregation with group-by (2.9)● The aggregation

process has been extended with group-by capabilities

● Quick way to power custom charts on your client side

{ "GroupByAttributes": [ "groupingAttribute" ], "AggregationResults": [ [ "Class1", 18 ], [ "Class2", 1 ], [ "Class3", 3 ], [ "Class4", 3 ] ], "AggregationFunctions": [ "Count" ], "AggregationAttribute": "countingAttribute"}

2.8 2.9 2.10GeoSolutionsLiguria Digitale

Page 50: State of GeoServer - FOSS4G 2016

Improved WPS resource control (2.10)● Processes are run in thread pools, they

can wait for their execution slot in queue● Separate control for total time, and pure

execution time

2.10utas.edu.au

Page 51: State of GeoServer - FOSS4G 2016

Download process improvements (community module)● Community module for clip and

ship support● Asynch requests allow for large

extractions● Can have maximum extraction

limits configured● Added ability to also select

bands, and improved output size estimation

WPS

2.9 2.10GeoSolutionsBEV

Page 52: State of GeoServer - FOSS4G 2016

Large raster extraction optimizations

● Optimizing many concurrent large masked raster extractions via Download process (e.g. 128 concurrent requests at the bigtiff threshold)

● Improved both scalability and reliability under sustained load on a “big iron” (40 cores, 128GB memory)

2.9 2.10GeoSolutions 2.8

Page 53: State of GeoServer - FOSS4G 2016

Configuration and management

Page 54: State of GeoServer - FOSS4G 2016

● Allows GeoServer to store resources(icons, fonts, config files) in either file system or database “blobs”.

● Run without a “Data Directory”(Helpful in clustered/cloud environment)

● All instances of file access were converted to resource api

● Backwards compatible - file will be unpacked on disk if required

● Manage via REST API● GUI available as community module

Resource API

2.8 2.9 2.10Scitus DevelopmentBoundless/NGA

Web Services

Configuration

DataDirectory

ResourceCatalog

Web Services

Configuration

JDBCStore

ResourceCatalog

Page 55: State of GeoServer - FOSS4G 2016

Web interface in Tools / Resource Browser

● Manage and edit resources

● Data Directory or JDBCStore

● Community module

● Packaged plugin coming soon

Resource browser community module

2.10Scitus DevelopmentBoundless/NGA

Page 56: State of GeoServer - FOSS4G 2016

Module “status” REST API (and GUI)● Automated testing of GeoServer is a

challenge● REST API access to the “status page”● Easy to add additional entries● Used to check environment for difficult to

configure modules that use native code

2.9 2.10BoundlessBoundless QA

Module name: Rendering Engine● Module : jvm● Component : java2d● Version : 1.8.0_66● Enabled : true● Available : true● Message : Java 2D configured with

DuctusRenderingEngine.● Provider: OracleJDK

geoserver/rest/about/status

In development!

Page 57: State of GeoServer - FOSS4G 2016

Parametric configuration● Switching data directories between

integration/beta/production environments can be a pain

● GeoServer 2.10 allows to stick parameters in the configuration, and read them from the environment

● Look ma, switching environments without grep/sed on the data dir :-)

● Store params in property file, system or environment variables

2.9 2.10GeoSolutionsEumetsatWorld Bank

Page 58: State of GeoServer - FOSS4G 2016

Backup/restore community module● 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

○ During backup the configuration is forced read only○ During restore it’s fully locked

2.9 2.10GeoSolutionsEumetsatWorld Bank

Page 59: State of GeoServer - FOSS4G 2016

Backup/restore community module (cont'd)● Can do a “dry run”

to check if there is any error prior to restore

2.9 2.10GeoSolutionsEumetsatWorld Bank

Page 60: State of GeoServer - FOSS4G 2016

Backup/restore community module (cont'd)● REST API to run, control,

eventually cancel backups and restores

2.9 2.10GeoSolutionsEumetsatWorld Bank

Page 61: State of GeoServer - FOSS4G 2016

Security

Page 62: State of GeoServer - FOSS4G 2016

LDAP User Group Service● We previously only had an “authentication

provider”, meaning, it used the username/pw provided and tried to open a LDAP connection with them

● We now also have a “user group service”,it opens a LDAP connection using fixed credentials, and searches the user in the LDAP database, matching the password

● E.g., similar to storing users in a DBMS

2.10Scitus development?

Page 63: State of GeoServer - FOSS4G 2016

Integrated GeoFence community module● Allows to define complex rules without running

a separate GeoFence server● UI to edit rules● REST API to automate rule editing

2.8 2.9 2.10Scitus developmentBoundless

Page 64: State of GeoServer - FOSS4G 2016

Integrated GeoFence community module (cnt’d)● Separate page for “admin” rules, that is, rules

controlling administration level access● Used to setup workspace specific admins and

the like

2.8 2.9 2.10GeosolutionsCamp2Camp

Page 65: State of GeoServer - FOSS4G 2016

Research, Developmentand other news

Page 66: State of GeoServer - FOSS4G 2016

GeoGig GUIManage repositories and publish via WFS and WFS-T for web client access.

2.9 2.10BoundlessGeoGig

Page 67: State of GeoServer - FOSS4G 2016

GeoGig Web APIcurl -X PUT -H "Content-Type: application/json" -d '{ "parentDirectory": "/opt/geogig/repos", "authorName": "geogig", "authorEmail": "[email protected]" }' "http://localhost:8080/geoserver/geogig/repos/myrepo/init"

REST API for managing repositories, when combined with GeoServer REST API a wide range of scripts are possible.

2.9 2.10BoundlessGeoGig

Page 68: State of GeoServer - FOSS4G 2016

Looking Ahead

Page 69: State of GeoServer - FOSS4G 2016

Java 9 CompatibilityJava 9 has been delayed until 2017, but we would like to ensure GeoServer will function. Oracle will stop shipping free security updates to Java 8 on

We have a couple incompatibilities with the GeoTools “service provider interface” plugin system that we will look at resolving during the code sprint!

Page 70: State of GeoServer - FOSS4G 2016

The Java Advanced Imaging library enables GeoServer to do all kinds of great image processing! The JAI-EXT project extends this library with replacement no-data / footprint aware operations.

Sadly Oracle has not maintained the project, and has not released it as open source.

(see Replace-JAI on GeoTools wiki)

Raster Processing EngineJoint OSGeo / LocationTech game plan:

● Raster Processing Engine APIdefinition of raster-processing-api

● Raster Processing Enginereference pure-java implementation

● Raster Processing Wrapperbenchmark jai-wrapper implementation

● GeoTools Replace JAImigrate to raster processing engine api and coordinate transition affected projects (GeoServer, GeoNode, uDig, GeoScript, etc...)

Page 71: State of GeoServer - FOSS4G 2016

Thanks!