Upgrade to Pro — share decks privately, control downloads, hide ads and more …

GeoServer Feature Frenzy (FOSS4G 2022 Edition)

GeoServer Feature Frenzy (FOSS4G 2022 Edition)

GeoServer is a web service for publishing your geospatial data using industry standards for vector, raster and mapping. It powers a number of open source projects like GeoNode and geOrchestra and it is widely used throughout the world by organizations to manage and disseminate data at scale.
What can you do with GeoServer? This visual guide introduces some of the best features of GeoServer, to help you publish geospatial data and make it look great! GeoServer has grown into an amazing, capable and diverse program - with a feature list spread over years of release announcements, presentations, and mailing list archives.
This presentation provides:

A whirl-wind tour of GeoServer and everything it can do today.
A visual guide to some of the best features of GeoServer.
Our favorite tricks we are proud of!

Are you just getting started with GeoServer, or considering it for the first time? Attend this talk and prioritize what you want to look into first. Are you an expert user who has been running GeoServer since version 1.0? Attend this talk and see what tricks and optimizations you have been missing out on.

Simone Giannecchini

August 31, 2022

More Decks by Simone Giannecchini

Other Decks in Technology


  1. Why this Talk? • State of GeoServer 2.21 talks hit

    what is New! • This talk hits what is beloved, amazing, or unexpected! • 20 min talk Are you readyyyy?
  2. 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
  3. 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 • Async 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
  4. SQL

  5. Everybody loves curves • Read curved geometries from Oracle and

    PostGIS, paint them, GML output them, linearize everywhere else
  6. Parametric SQL Views GeoServer WMS/WFS ... DBMS Any DB ...

    Inject params from request Run query as layer source
  7. Run of the mill Old but gold! Simple Mosaic ArcGrid

    Fully configured Mosaic (custom schemas, attributes, filtering, sorting, custom storage)
  8. 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 for smooth reprojection
  9. 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”
  10. 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
  11. 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
  12. WFS and WCS • Download vector data • Filter, reproject,

    join, page • Download raster data • WCS 2.0, a protocol humans can understand
  13. CQL POP_EST <= 5000000 AND POP_EST >100000 A lightweight “domain

    specific language”: • CQL - is a standard from OGC Catalog • E-CQL - extends this basic concept to do everything Filter can do
  14. CQL POP_EST <= 5000000 AND POP_EST >100000 A lightweight “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
  15. 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 nighmares will be made of complex GeoJSON instead!
  16. 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>
  17. Think small • Small is useful • BBOX for filtered

    datasets • Aggregation processes, provides datasets for building charts (group and count) • Clip and ship • Build animations
  18. Think big! • Start remote processing nodes, track their progress

    • Register the result as a GeoServer layer for preview before download
  19. 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
  20. 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>
  21. 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>
  22. 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]
  23. 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, } } ] }
  24. Great for SLD and YSLD Use with MapBox style to

    define once for GeoServer and OpenLayers Style several layers together into a single map GetMap SLD=”<URL> Add Style Group...
  25. windbarbs:// Making your Mark square circle triangle star square x

    “standard” shape:// extshape:// wkt:// ttf://
  26. 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
  27. Quality Assurance: JUnit (unit and integration tests) • Build with

    Tests takes 15 mins • Build with Tests disabled takes 2 mins • Thousands of tests
  28. Quality Assurance: PR automatic checks • Static code checks ◦

    PMD ◦ CheckStyle ◦ ErrorProne ◦ SortPom ◦ Deprecated checks • One failure above marks the build red
  29. Cost Free Free as in Beer: • Download now to

    $0! • This weeks special 10% off $0!
  30. “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).
  31. “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
  32. “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