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

Introduction to GeoServer - GeoInt 2025

Introduction to GeoServer - GeoInt 2025

The training provides an introduction to one of the most complete and most widely used open-source products for the geospatial world, GeoServer. For those wishing to build a spatial data infrastructure using open-source products or those simply looking to explore what is out there, we will provide an overview of the GeoServer capabilities in terms of data management, publishing, and dissemination. Topics covered are as follows:
- GeoServer basic concepts
- Guided tour of GeoServer functionalities
- Adding data to GeoServer
- Styling data with GeoServer
- Disseminating data with GeoServer
- Modern GIS with GeoServer: STAC, OGC API, and cloud native formats

Learning Objectives: At the end of the training, attendees will be able to grasp the main functionalities of GeoServer like how to load, configure, and style vector and raster data and to create maps and services with them. This would give trainees the basic skills to work with GeoServer to create spatial platforms.

Avatar for Simone Giannecchini

Simone Giannecchini

May 21, 2025
Tweet

More Decks by Simone Giannecchini

Other Decks in Technology

Transcript

  1. Simone Giannecchini Founder & Director [email protected] We’d like to thank

    Jody Garnett for original material contribs This presentation is brought to you by GeoSolutions 3 Enterprise Support Services Deployment Subscription Professional Training Customized Solutions GeoSolutions robust, cost-effective solutions leveraging best-of-breed Open Source products.
  2. GeoServer WFS OGC API Features WMS OGC API Maps PostGIS

    Oracle H2 DB2 SQL Server GeoPackage SQL Server MySql Spatialite MongoDB Shapefile GML CSV Properties ---------- ---------- --------- ---------- ---------- ---------- --------- ---------- ---------- ---------- --------- ---------- WMS WMTS WFS PNG, GIF JPEG TIFF, GeoTIFF SVG, PDF KML/KMZ Shapefile GML2 GML3 GeoPackage GeoRSS GeoJSON CSV/XLS Raw vector data Servers Styled maps DBMS Vector files WCS OGC API Coverages GeoTIFF WMS ArcGrid Img+world, Mosaic, MrSID JPEG 2000 ECW,Pyramid, Oracle GeoRaster, PostGIS Raster, NetCDF Raster files Raw raster data GeoTIFF ArcGrid Img+World WMTS, TMS, WMS-C OGC API Tiles KML superoverlays Google maps tiles OGC tiles OSGEO tiles KML WPS CSW What is GeoServer?
  3. September 2025 March 2024 2.24.x YOU ARE HERE 2.25.x September

    2024 2.25.x March 2025 2.26.x 2.26.x 2.26.x Release Model
  4. Governance Model Copyright & Stewardship • GeoServer is an Open

    Source Geospatial Foundation (OSGeo) project • All source code licensed under the GNU GPL 2 • OSGeo holds the project trademark and copyright • GeoServer is FREE Contribution Workflow • Issue Tracking: Feature requests and bugs managed via GeoServer JIRA. • Development: Fork or clone the GeoServer GitHub repo; develop on feature branches. • Review & Testing: Submit pull requests; automated builds on CI; peer review by committers. • Committing: Approved PRs merged by committers with write access. • Attribution: Contributor names recorded in Git history and release notes.
  5. Governance Model Decision-Making Process • Community Discussion: Proposals raised on

    [email protected] mailing list • Consensus Building: Open debate; input from users, contributors, and committers • PSC Oversight: GeoServer Project Steering Committee (PSC) ratifies major changes • Release Planning: Timed releases managed by release lead; feature freeze and voting Roles & Responsibilities • Users: Report issues, request features, test snapshots • Contributors: Submit code, documentation, and tests • Committers: Maintain codebase, review PRs, make release decisions • PSC Members: Guide project direction, enforce policies, represent OSGeo
  6. Vulnerability Reporting and Management • Responsible Disclosure: GeoServer maintains a

    documented security policy (SECURITY.md on GitHub) and designated [email protected] for responsible disclosure • Security Working Group: the GeoServer Security Working Group (SWG) meets regularly to triage issues, set priorities, and coordinate response efforts • CVE Tracking & Advisories: All confirmed vulnerabilities are assigned a CVE and published via OSGeo Security Advisories and the GeoServer website • Automated Scanning: Routine scans using tools to highlight outdated or vulnerable libraries • Patch & Release Process: Critical fixes are backported to active branches; security releases follow a patch cycle with clear upgrade instructions • Code Review & Testing: Security-focused code reviews, unit tests, and integration tests (e.g., WFS SQL injection checks) are enforced before merging • Community & Audit: Periodic third-party audits and community-driven pentests help uncover issues; contributors are encouraged to report potential flaws
  7. Commercial Support • Global Service Providers: Multiple companies worldwide offer

    professional GeoServer support, including GeoSolutions, GeoCat, Camp2Camp and many others • Services Offered: Ranging from training, custom development, performance tuning, to SLA- backed maintenance and 24/7 monitoring • Regional Presence: Providers span Europe, North America, South America, Asia, and Oceania, ensuring local expertise and time-zone-aligned support • Enterprise Guarantees: Contractual service levels, dedicated account management, and compliance with corporate security policies • Ecosystem Confidence: Commercial backing demonstrates that GeoServer is an industry-grade platform, not just a hobby project • Selected Users: NOAA, EUMETSAT, EMSA, NRL, Sandia Laboratories, NRCAN, Deutsche Bahn, SwissRE, WoodMac, MunichRE, ECMWF, ESA, DLR, IGN, BRGM, MassGIS, Deutsche Telecom, SCNF, UN FAO, NYC DOITT, E-GEOS, Maxar, etc…
  8. 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
  9. SQL

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

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

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

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

    TIFFs Write JPEGs maps Read/Write TIFFs NetCDF GrIB
  14. 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
  15. Only want to play with MVT? Ok! • Extension for

    publishing vector tiles • Great solution for High DPI Screens • Client side styling • Use GeoServer for “MapLibre” clients • Configure once for Vector tiles with OGC WMS fallback
  16. 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, } } ] }
  17. 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...
  18. Making your Mark windbarbs:// square circle triangle star square x

    “standard” shape:// extshape:// wkt:// ttf://
  19. 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
  20. 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
  21. WFS, WCS, OGC API Features and Coverages • Download vector

    data • Filter, reproject, join, page • Download raster data • WCS 2.0, a protocol humans can understand
  22. 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
  23. 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>
  24. 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, • Features templating to the rescue • Your 2020 nighmares will be made of complex GeoJSON instead!
  25. Execute all the things • BBOX for filtered datasets •

    Aggregation processes, provides datasets for building charts (group and count) • Clip and ship • Build animations
  26. 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
  27. 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>
  28. 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>
  29. 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]
  30. Demo Server • Demo server redeployed multiple times a day

    • Occasionally broken, don’t rely on it https://gs-main.geosolutionsgroup.com/geoserver/
  31. OGC APIs - OpenAPI • Fresh take on spatial data

    interoperability • Based on OpenAPI/RESTful concepts • Resource/representation • HTTP verbs • Small core, a basic service can be implemented in a matter of days • Extensions for every other functionality
  32. Features API Core • In addition to OAPI core: •

    /collection/{collectionId}/items • /collection/{collectionId}/items/{itemId} • Only supported CRS are • CRS84 (WGS84 lon/lat) • CRS84h (WGS84 lon/lat/height) • Schema not required, features can be anything: • Simple • Complex • Heterogeneous • “describeBy” can link to schema (optional)
  33. Part 2 - CRS by Reference •OGC API - Features,

    part 2, Coordinate Reference Systems by Reference •Info about storage CRS •BBOX with CRS •Output reprojection •CRS information as a response header (does not rely on format native ability) •Compliant, CITE tests pass { "crs": [ "http://www.opengis.net/def/crs/OGC/1.3/CRS84", "http://www.opengis.net/def/crs/EPSG/0/4326", "http://www.opengis.net/def/crs/EPSG/0/3857" ], "storageCrs": "http://www.opengis.net/def/crs/EPSG/0/26713" }
  34. •Queryables: properties that can be used for filtering • May

    be a subset of the actual attributes • May not even match the attributes (e..g, like “anyText” in CSW) •filter: the filter specification •filter-lang: the language used filter-crs: the CRS for the geometries used in the filter Part 3 - Filtering (finalized 2024-07-26)
  35. CQL 2 eo:cloud_cover BETWEEN 0.1 AND 0.2 AND landsat:wrs_row=28 AND

    landsat:wrs_path=203 &filter-lang=cql2-text { "and": [ { "between": [ {"property": "eo:cloud_cover"}, 0.1, 0.2 ] }, { "=": [{"property": "landsat:wrs_row"},28] }, { "=": [{"property": "landsat:wrs_path"},203] } ] } &filter-lang=cql2-json
  36. Sorting •Not part of OGC API - Features •Discussed in

    issue 157 •Syntax borrowed from OGC API - Records /items?sortby=name,-dateOfBirth
  37. OGC API - Maps • Final specification available as of

    2024-08-09 (GeoServer implements earlier version) • Building block to produce maps, can be attached to collections, but in general, to any resource that can be mapped E.g., could be a OGC API - process result, that has a “map” sub-resource • Adds a notion of a “style”, listed in collection metadata • Adds a “map” resource
  38. OGC API - Maps • Fetches a map in the

    requested format • Params: width, height, bbox, crs, …. • Unlike WMS GetMap, all params are optional → similar to the GeoServer WMS reflector .../ogc/maps/v1 /collections/topp:states/styles/population/map?f=image/png
  39. “info” resource (GS specific) Results for FeatureType 'http://www.openplans.org/topp:state s': ------------------------------------

    -------- the_geom = [GEOMETRY (MultiPolygon) with 276 points] STATE_NAME = Washington STATE_FIPS = 53 SUB_REGION = Pacific STATE_ABBR = WA LAND_KM = 172447.205 WATER_KM = 12226.63 PERSONS = 4866692.0 FAMILIES = 1264934.0 HOUSHOLD = 1872431.0 MALE = 2413747.0 FEMALE = 2452945.0 WORKERS = 1830031.0 DRVALONE = 1700872.0 CARPOOL = 282240.0 PUBTRANS = 104403.0 EMPLOYED = 2293961.0 UNEMPLOY = 139216.0 ------------------------------------ -------- •Not part of the standard (used to be in a previous draft) •Still useful (considers scale deps, filters, symbology) •Feature info at given location •Params: “i/j” mandatory, others same as “map” .../ogc/maps/v1/ collections/topp:states/styles/populatio n/map/info? f=text/plain&i=50&j=10
  40. OGC API - Tiles • Finalized specification https://docs.ogc.org/is/20-057/20- 057.html •

    GeoServer: full implementation based on earlier draft • Adds resources for tiles, tile matrix sets, styles ogc/tiles/collections/topp%3Astates/styles/ population/map/tiles/ WebMercatorQuad/{tileMatrix}/{tileRow}/ {tileCol}?f=image%2Fpng
  41. OGC API - Styles The style identifier Basic metadata info

    (yeah, I did not fill it yet, no love lost for metadata!) Access to style source, native (CSS) and converted (SLD) when possible List of layers involved in the style (could have many) and attributes used in each (style editor can use them to check compatibility with available data)
  42. OGC APIs - Coverage extraction • Collection as a single

    coverage • bbox • datetime • Partial implementation from OGC code sprint ...collections/nurc:Img_Sample/coverage? f=image%2Fpng& bbox=-130,20,-100,40 or &subset=Lat(20:40),Long(-90:-70)
  43. Other interesting bits • Tiled coverages: scalable access to raw

    data • Scenes: enumerate, filter, describe sub-images • Implementation? Looking for sponsors
  44. OGC API Processes • New community module exposing WPS functionality

    via OGC APIs • Asynchronous execution • POST JSON execution (core) and KVP execution (1.1 spec draft) • Missing bits • Process chaining, AKA “workflows” draft extension
  45. Vector mosaicking store • Useful to handle thousands of files

    with similar structure • Database used only to index them • Much cheaper than storing everything in a database (on cloud) • Not suitable if on the fly aggregations are needed • Great if the end user application mostly pulls a few files (one?) at a time
  46. STAC API • Useful to handle thousands of files with

    similar structure • Database used only to index them • Much cheaper than storing everything in a database (on cloud) • Not suitable if on the fly aggregations are needed • Great if the end user application mostly pulls a few files (one?) at a time
  47. External STAC API as index • Community module for STAC

    API store • Integrates well with image mosaic • Tricky issues: each system uses different auth mechanisms to actually download data
  48. Precision Agriculture • Satellite imagery, index calculation, drone data, IOT

    data, you name it… • Terabytes of imagery, hundreds of millions of vector records
  49. NOAA nowCOAST • Near Real Time Weather Data + alerts

    + hazards • Radar + satellites + Model • GeoServer Cluster + PostgreSQL in AWS
  50. DLR (German Space Agency) GeoWebServices • Sentinel, AVHRR, MetOp GOME,

    TerrasarX, RapidEye, other global maps • GeoServer Cluster • WMS service with time dimension + WCS + direct download + STAC
  51. GeoServer & the cloud GeoServer is not cloud-native • It

    was born when cloud meant this → • We can’t depend on any cloud provider GeoServer is cloud-ready • It is known to run in AWS, Azure, GCP, OpenShift, IBM Cloud, etc.. • It is known to run in K8s, Rancher • It can autoscale (CPU is the resource to look at) • It can use Object Storage (Tile Cache, COG, etc..) • Prefers compute intensive instances • Likes Containers • Likes Automation! (Azure Pipelines, Jenkins, etc..) Check resources on our youtube channel
  52. Use Case – EO Data at scale • Earth Observation

    • Meteorological and Oceanographic data • Continuous data flow of vector and raster data
  53. • Cloud-ready GeoServer with dockerize microservices • From monolith to

    individually deployable components within a microservices-based architecture • Functional decomposition by business capability • Each service (e.g., WMS) is available as a self-contained, individually deployable, and scalable microservice • Provide guidelines for proper dimensioning of services based on their resource needs and performance characteristics • Isolate services to ensure system continuity in the event of specific service unavailability • Implement per-service auto-scaling • Support continuous delivery workflows GeoServer Cloud
  54. COG • COG plugin • cog-http-plugin • cog-azure-plugin • cog-google-plugin

    • cog-s3-plugin • Leverages COG structure • Reads header first • HTTP Range read of the tiles needed (coalesce nearby tiles into single read) • May get caching down the way (looking for sponsors!)
  55. FlatGeoBuf • FlatGeoBuf is a cloud-native, single file, compact and

    fast vector data source • Community module • Now the fastest format for those use cases of • “I have a few million polygons/lines/points and really want to display them all at low scale” • Shapefile used to hold that crown • In the map, what seems pencil drawn, is actually millions of tiny polygons
  56. GeoParquet • GeoParquet is a single file, cloud native, column

    oriented, read only, immutable storage for geographical information • New community module to read GeoParquet available in GeoServer 2.27+ • Flexible source • Local file • Directory of files • HTTP/S3 • Hierarchical Hive partitioning (mosaic like approach) • Efficient implementation • Filter pushdown • Attribute selection and geometry simplification https://guide.cloudnativegeo.org/geoparquet/ https://www.wherobots.ai/post/spatial-data-parquet-and-apache-sedona
  57. 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
  58. Quality Assurance: JUnit (unit and integration tests) • Build with

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

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

    $0! • This weeks special 10% off $0!