$30 off During Our Annual Pro Sale. View Details »

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. GeoServer Feature FRENZY

  2. 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?
  3. 3 ready

  4. 2 set

  5. 1 go!

  6. 1000 feet view

  7. 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
  8. Many of these are provided by extensions

  9. Configuration

  10. GUI: GeoServer for point & clickers

  11. GUI: GeoServer for point & clickers

  12. GUI: GeoServer for point & clickers

  13. Style editor

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

  15. Need to mass-configure layers? Importer! GUI and REST

  16. 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
  17. Vector data sources

  18. Files files, many little files (OGR)

  19. SQL

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

    PostGIS, paint them, GML output them, linearize everywhere else
  21. SQL-Views GeoServer WMS/WFS ... DB2 Any DB ... Run query

    as layer source
  22. Parametric SQL Views GeoServer WMS/WFS ... DBMS Any DB ...

    Inject params from request Run query as layer source
  23. NoSQL!

  24. Feature Type Customization and Filtering

  25. Distributed!

  26. Raster data sources

  27. Run of the mill Old but gold! Simple Mosaic ArcGrid

    Fully configured Mosaic (custom schemas, attributes, filtering, sorting, custom storage)
  28. Going native GDAL 3.x (NITF files) Fast JPEG2000 libdeflate Read/Write

    TIFFs Write JPEGs maps Read/Write TIFFs
  29. Maps, maps everywhere!

  30. Basic maps

  31. Samples from IGN (using SLD)

  32. OSM? Yes OSM! (With CSS this time)

  33. 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
  34. 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”
  35. Integrated tiles cache

  36. 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
  37. 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
  38. Deliver data

  39. WFS and WCS • Download vector data • Filter, reproject,

    join, page • Download raster data • WCS 2.0, a protocol humans can understand
  40. 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
  41. 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
  42. Editing data since 2003 (the original superpower) WFS-T PostGIS Oracle

    Shapefile SQLServer ...
  43. App Schema

  44. 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!
  45. 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>
  46. Process!

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

    Integrated WPS
  48. Think small • Small is useful • BBOX for filtered

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

    • Register the result as a GeoServer layer for preview before download
  50. Rendering transformations: process and render at the same time

  51. On the fly contour extraction from styles

  52. 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
  53. Extract wind barbs from 2 bands raster data u v

    u v
  54. 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>
  55. 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>
  56. 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]
  57. And more Discrete point interpolation Point stacker

  58. Find your style (language)

  59. SLD 1.0 and 1.1

  60. Geo-CSS

  61. 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, } } ] }
  62. Convert around SLD 1.0 SLD 1.1 GeoCSS MBStyle YSLD

  63. SLD Named Layers (Style Groups)

  64. 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...
  65. Styling Reference, Cookbooks, Workshops

  66. windbarbs:// Making your Mark square circle triangle star square x

    “standard” shape:// extshape:// wkt:// ttf://
  67. Multidimensional data Weather or not you are ready

  68. Multidimensional data, in and out! • Time, elevation in WMS,

    WMTS and WCS
  69. Multidimensional data formats GRIB

  70. Temperature, currents, wind, pressure, time and elevation? We got you

    covered! Meteorology ready!
  71. Security Stop or I will say Stop Again

  72. Authentication and Authorization Fully pluggable!

  73. Authentication BASIC DIGEST LDAP and Active Directory Database Github Google

    GeoNode OpenID connect X.509 J2EE AuthKey
  74. 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
  75. Reliability

  76. Quality Assurance: JUnit (unit and integration tests) • Build with

    Tests takes 15 mins • Build with Tests disabled takes 2 mins • Thousands of tests
  77. Quality Assurance: Continuous Build Box

  78. Quality Assurance: Manual Code Review

  79. Quality Assurance: PR automatic checks • Static code checks ◦

    PMD ◦ CheckStyle ◦ ErrorProne ◦ SortPom ◦ Deprecated checks • One failure above marks the build red
  80. And all of this is… Free!?

  81. Open Source Free as in Freedom: • GPL License

  82. Cost Free Free as in Beer: • Download now to

    $0! • This weeks special 10% off $0!
  83. Doesn’t that make you want to contribute?

  84. “I can code and want to contribute”

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

  86. “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).
  87. “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
  88. “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
  89. Question and Answer Thanks!