geoserver: an introduction for beginner
TRANSCRIPT
GeoServeran introduction for beginners
Ing. Andrea Aime, GeoSolutionsIng. Simone Giannecchini, GeoSolutions
INSPIRE Conference 2016, Barcelona26th Sept 2016
GeoSolutions Founded in Italy in late 2006 Expertise
• Image Processing, GeoSpatial Data Fusion• Java, Java Enterprise, C++, Python• JPEG2000, JPIP, Advanced 2D visualization
Supporting/Developing FOSS4G projects MapStore, GeoServer GeoNetwork, GeoTools, GeoNode, ImageIO-Ext and more: https://github.com/geosolutions-it
Focus on Consultancy PAs, NGOs, private companies, etc…
INSPIRE Conf 2016, Barcelona26th Sept 2016
GeoSolutions
INSPIRE Conf 2016, Barcelona26th Sept 2016
Enterprise Support Services Bug Fixing Support Customizations & New Features 5 packages different types of needs
Professional Training End-To-End Projects (Integration)
Tell me what you need, I’ll put it together for you We take our core products and
Bend them, twist them, embed them Hammer them to make clients happy
FOSS4G Software is core for us Not simply use but develop and support
Outline Quick intro to GeoServer Basic concepts, administration GUI and
REST WMS / WFS / WCS / WPS Security
INSPIRE Conf 2016, Barcelona26th Sept 2016
Resources Our website
http://www.geo-solutions.it Our Blog
http://www.geo-solutions.it/category/blog/ Our Slideshare Deck
http://www.slideshare.net/geosolutions Our Training
http://geoserver.geo-solutions.it/edu/en Online Material http://geoserver.geo-solutions.it/downloads/training//linux Linux VM http://geoserver.geo-solutions.it/downloads/training/windows Windows
Package
INSPIRE Conf 2016, Barcelona26th Sept 2016
GeoServer
GeoSpatial enterprise gateway Java Enterprise Management and Dissemination of
raster and vector data Standards compliant
OGC WCS 1.0, 1.1.1 (RI), 2.0 OGC WFS 1.0, 1.1 (RI), 2.0 OGC WMS 1.1.1, 1.3.0 OGC WPS 1.0.0 OGC CSW 2.0.1 (ebRIM)
Google Earth/Maps support KML, GeoSearch, etc..
INSPIRE Conf 2016, Barcelona26th Sept 2016
Form
ats
and
Prot
ocol
s
Geo
Serv
er WFS
WMS
PostGISOracleH2DB2SQL ServerMySqlSpatialiteGeoCouchMongoDB
Shapefile---------------------------------------
---------------------------------------
---------------------------------------
ArcSDEWFS
PNG, GIFJPEGTIFF, GeoTIFFSVG, PDFKML/KMZ
ShapefileGML2GML3GeoRSSGeoJSONCSV/XLS
Raw vectordata
Servers
Styled maps
DBMS
Vector files
WCSGeoTIFFWMSArcGridGTopo30Img+worldMosaicMrSIDJPEG 2000ECW,Pyramid, Oracle GeoRaster, PostGis Raster, NetCDF
Raster files
Raw rasterdata
GeoTIFFArcGridGTopo30Img+World
WMTS,TMS,
WMS-CKML superoverlaysGoogle maps tilesOGC tilesOSGEO tiles
WPS
CSW
INSPIRE Conf 2016, Barcelona26th Sept 2016
Administering GeoServer
Workspaces: organizational structure/folder/virtual services
Stores: connections to data sources Layers: the data and its configuration Styles: how to draw it LayerGroups: ready to use maps Processes Services: per service config details Security
Key Concepts
INSPIRE Conf 2016, Barcelona26th Sept 2016
Virtual Services
Expose different OGC services per workspace Styles and layer groups per workspace
Have different administrators per workspace multi-tenancy
INSPIRE Conf 2016, Barcelona26th Sept 2016
Administration GUI
INSPIRE Conf 2016, Barcelona26th Sept 2016
Administration GUI
INSPIRE Conf 2016, Barcelona26th Sept 2016
Administration GUI
INSPIRE Conf 2016, Barcelona26th Sept 2016
Administration GUI
INSPIRE Conf 2016, Barcelona26th Sept 2016
Administration GUI
INSPIRE Conf 2016, Barcelona26th Sept 2016
Administration GUI
INSPIRE Conf 2016, Barcelona26th Sept 2016
RESTful Configuration
Programmatic configuration of layers via REST calls
Workspaces, Data stores / coverage stores Layers and Styles, Service configurations Freemarker templates
Exposing internal configuration to remote clients Ajax - JavaScript friendly
Various client libraries available in different languages (Java, Python, Ruby, …).
Example, geoserver-manager: https://github.com/geosolutions-it/geoserver-manager
INSPIRE Conf 2016, Barcelona26th Sept 2016
RESTful Configuration example
Automate management of layers and their configuration
FTP
ETL
Get and process data
Publish new layers
via REST config
INSPIRE Conf 2016, Barcelona26th Sept 2016
WMS
Dissemination of Maps Fusing raster and vector data seamlessly Rule/scale driven rendering
WMS 1.1.1 and 1.3 support Time/elevation/custom dimension support SLD
Basic support for SLD 1.1 and SE 1.1 Full support for SLD 1.0
CSS extension for compact styling Many rendering extensions available
INSPIRE Conf 2016, Barcelona26th Sept 2016
Many Rendering Options
INSPIRE Conf 2016, Barcelona26th Sept 2016
Some examples from IGN
INSPIRE Conf 2016, Barcelona26th Sept 2016
Many Supported Projections
Dateline crossing management
INSPIRE Conf 2016, Barcelona26th Sept 2016
WMS: TIME and ELEVATION
TIME = 20100512T0000000ZELEVATION = 0.0
FeatureType Editor
INSPIRE Conf 2016, Barcelona26th Sept 2016
WMS: Rendering Transformations
On-the-fly data transformations Calling spatial analysis processes from SLD docs Optimized for performance Examples: on the fly contour lines, heat maps,
point clustering, point interpolation, GCP based image rectification
INSPIRE Conf 2016, Barcelona26th Sept 2016
GeoWebCache Integration
GeoServer
GeoWebCache
Persistent raster/KMLtile cache
Direct calls to GeoServer rendering engine
Support for layers modified through WFS-T
Support for various tile protocols
GMap, Gearth OpenLayers, VEarth,
Bing Speed-up factor 10/100 Disk quota support
INSPIRE Conf 2016, Barcelona26th Sept 2016
KML/KMZ
TEMPORAL SERIES
KML EXTRUDE KML SUPEROVERLAY
INSPIRE Conf 2016, Barcelona26th Sept 2016
Publishing Vector Data
WFS
Dissemination and filtering of vector data WFS 1.0, 1.1 and 2.0 (since 2.2.0) Transaction and paging available in all versions Simplified filtering via CQL Formats:
GML 2, 3.1 and 3.2 CSV, Excel spreadsheet, GeoRSS, GeoJSON Shapefile (zipped) Any other format supported by ogr2ogr (configurable)
INSPIRE Conf 2016, Barcelona26th Sept 2016
Rich Filtering Support
Full standard filter support Scalar (<, <=, >, >=, =, !=, like) Temporal Spatial (intersections, touch, dwithin, dbeyond, …)
Filters directly translated into native data source filtering (e.g., SQL for spatial databases, OGC Filter for WFS cascading, SDE filters, ….)
Rich set of filter functions for advanced filtering (do math and string manipuation in your filters):http://docs.geoserver.org/stable/en/user/filter/function_reference.html
INSPIRE Conf 2016, Barcelona26th Sept 2016
More data access options
Paging (native in WFS 2.0, back-ported to other versions as a vendor extension)
Joins (scalar, temporal, spatial) between feature types (WFS 2.0)
Stored queries (WFS 2.0) Reprojection Various built-in output formats (GML2/3.1/3.2,
shapefile, geojson, csv, excel) More can be added via ogr2ogr or by programming
INSPIRE Conf 2016, Barcelona26th Sept 2016
WFS-Transactional
Modify your data from your remote client (desktop, web or mobile)
WFS-T WMS
Edit with desktop clientand commit changes
All protocols will Immediately see
the updates
INSPIRE Conf 2016, Barcelona26th Sept 2016
Complex Features Support Application/community
schemas Complex Features
Attributes as sub-features
Attributes as list of features
Tree-like structure
Mixing in a single tree heterogeneous data sources Optimizations if everything is in the same DBMS
INSPIRE Conf 2016, Barcelona26th Sept 2016
Complex Features Support – The Good
INSPIRE Conf 2016, Barcelona26th Sept 2016
Official GeoServer extension Complex Features
Multi valued attributes Collection of related objects in one XML Nesting of features (also Complex Features) Required by many Inspire schemas
• Mapping of SimpleFeatures to build Complex Features, that are compliant to a
given XSD Transformations through CQL Feature linking
Complex Features support
INSPIRE Conferece 2016, Barcelona26th Sept 2016
Difficult to configure no UI Manually create XML configuration files Reload Catalog for any change (trial and
error) Need for a graphical mapping tool
Performance Getting good performance can be
difficult Data needs to be preprocessed
(denormalized) Optimized join on JDBC based sources
can help
The Bad
The Ugly
Complex Features – HALE at rescue
INSPIRE Conf 2016, Barcelona26th Sept 2016
Using HALE as a GUI editor for app-schema config No need to create a new GUI Seamless integration of HALE with GeoServer Implemented as a new type of Alignment Writer Needs to support most common HALE transformations
and translate them to app-schema mappings• Tough work
• Done in steps• Most common transformation firsts• Hopefully, no need to manually edit the final result
Complex Features – HALE at rescue
INSPIRE Conf 2016, Barcelona26th Sept 2016
In the process… Already Funded Improvements and bugfixes to HALE Improvements and bugfixes to GeoServer app-schema New schema/data formats for HALE Spatialite New type of transformations for HALE (e.g.
ReprojectGeometry) Improvements to the app-schema mapping engine to get
a better integration Editing support
Bonus Track Funding Appreciated Integrate HALE ETL Engine in GeoServer
Batch exports (Predefined dataset) Periodic batch + Preprocessing for efficient
publishing
Publishing Raster Data
WCS
Raster data dissemination Raw raster data useful for analysis, no maps! Support for TIME and ELEVATION (via ImageMosaic plugin)
WCS 1.0, 1.1.1 and 2.0 Output formats
GeoTiff, ArcGrid NetCDF
Extensions ELEVATION as band management
INSPIRE Conf 2016, Barcelona26th Sept 2016
WCS features
Everything needed to support the WCS 2.0 Earth Observation profile:
Trimming (spatially , temporally, and on custom dimensions too as a vendor extension)
Band subsetting Reprojection GeoTiff output control (tiling, compression, …) Description of NetCDF/mosaics as EO datasets (list of
all the internal slices)
INSPIRE Conf 2016, Barcelona26th Sept 2016
N-dimensional mosaic/NetCDF support
INSPIRE Conf 2016, Barcelona26th Sept 2016
Spatiotemporal Raster Management REST support to expose a image mosaic internal structure
Dimensions Granules
Dimensions: list, edit, create, remove /workspaces/<ws>/coveragestores/<cs>/coverages/<mosaic>/dimensions /workspaces/<ws>/coveragestores/<cs>/coverages/<mosaic>/dimensions/<dimension>[.format] TODO paging and query of dimension domain
Granules: list, edit, create, remove /workspaces/<ws>/coveragestores/<cs>/coverages/<mosaic>/index /workspaces/<ws>/coveragestores/<cs>/coverages/<mosaic>/index/pageN /workspaces/<ws>/coveragestores/<cs>/coverages/<mosaic>/index/pageN/granuleM
INSPIRE Conf 2016, Barcelona26th Sept 2016
Analyzing & Processing data
WPS WPS 1.0 Official Extension Raster and Vector data support Many built-in processer (almost 100):
Vector and geometric analysis Raster based Conversions processes (raster vector)
Tight integration with local data and map rendering
INSPIRE Conf 2016, Barcelona26th Sept 2016
An example
Buffer a L shaped geometry with distance “2”
Get the result back as GML
INSPIRE Conf 2016, Barcelona26th Sept 2016
A chaining example
INSPIRE Conf 2016, Barcelona26th Sept 2016
Synchronous vs asynchronous
WPS client WPS
Launch process
Send back results
SimpleSuitable for fast executions
Synchronous
WPS client WPS
Launch process
Status URL
Check progress
50%
Check progress
100%Results inlineLink to results
More complexSuitable for longer computations
Asynchronous
INSPIRE Conf 2016, Barcelona26th Sept 2016
Tight integration
WPS
RemoteWCS
RemoteWFS
HTTP server
WPSclient
All GeoServer Layers
WMSclientWMS
GeoServer UI
INSPIRE Conf 2016, Barcelona26th Sept 2016
Writing processes
Python Groovy
JavaScript Ruby
JSR-223
http://geoscript.org
INSPIRE Conf 2016, Barcelona26th Sept 2016
Securing Data
Security: Authentication
Pluggable authentication mechanisms
INSPIRE Conf 2016, Barcelona26th Sept 2016
Authentication mechanism mix per URL
Different access paths need different auth mechanisms (GUI vs REST vs OGC service):
INSPIRE Conf 2016, Barcelona26th Sept 2016
Basic data access security
Simple built-in role and layer based data access:
INSPIRE Conf 2016, Barcelona26th Sept 2016
Basic service access security
Simple built-in role and service based data access:
INSPIRE Conf 2016, Barcelona26th Sept 2016
Advanced security via external tools
https://github.com/geoserver/geofence
INSPIRE Conf 2016, Barcelona26th Sept 2016