GeoServer, The Open Source Solution for the interoperable management of geospatial data Ing. Andrea Aime, GeoSolutions Ing. Simone Giannecchini, GeoSolutions
Founded in Italy in late 2006 Expertise GeoSolutions Image Processing, GeoSpatial Data Fusion Java, Java Enterprise, C++, Python JPEG2000, JPIP, Advanced 2D visualization Supporting/Developing FOSS4G projects GeoTools, GeoServer GeoNetwork, GeoBatch ImageIO-Ext Focus on Consultancy agencies, large private companies, etc
Outline GeoSolutions GeoServer Quick introduction OGC services Data access news Security
GeoServer quick intro
GeoServer GeoSpatial enterprise gateway Java Enterprise Management of raster and vector data Standards compliant OGC WCS 1.0-1.1.1 (RI) OGC WFS 1.0-1.1 (RI), 2.0 OGC WMS 1.1.1, 1.3.0 OGC WPS 1.0.0 Google Earth/Maps support KML, GeoSearch, etc..
Formats and Protocols GeoServer Shapefile PostGIS Oracle H2 DB2 SQL Server MySql Spatialite GeoCouch ArcSDE WFS ---------- ---------- ---------- --------- ---------- ---------- --------- ---------- Vector files DBMS Servers GeoTIFF WMS ArcGrid GTopo30 Img+world Mosaic Raster files MrSID JPEG 2000 ECW,Pyramid, Oracle GeoRaster, WMS 1.1.1 1.3.0 Google* WFSv* WFS 1.0, 1.1, 2.0 WPS 1.0.0 WCS 1.0 1.1.1 GWC (WMTS, TMS, WMS-C) Styled maps Raw vector data Raw raster data PNG, GIF JPEG TIFF, GeoTIFF SVG, PDF KML/KMZ Shapefile GML2 GML3 GeoRSS GeoJSON CSV/XLS GeoTIFF ArcGrid GTopo30 Img+World KML superoverlays Google maps tiles OGC tiles OSGEO tiles
Architecture WCS WMS WFS WPS REST Google GWC GeoTools ImageIO JAI JTS GDAL Kakadu JAITools Vector Style Raster
Administration GUI
RESTful Configuration Programmatic configuration of layers via REST service calls Workspaces DataStores/CoverageStores Layers and Styles Exposing internal configuration to remote clients Integrated Security Admin credentials required for modifications Client libraries: GeoServer Manager (Java), gsconfig.py (Python)
RESTful Configuration GeoBatch Automatic Configuration of recurring flows of data Styles Javascript client GeoServer Server side scripts Mass publishing of Layers Layers Publishing Desktop app
Virtual Services Expose multiple OGC service endpoints per installation One virtual service per workspace Expose only layers defined in such workspace Configure service metadata (point of contacts and the like) per workspace (only on 2.2.x) Use cases: Provide clients with focused/theme centered data sets Provide each department of a single organization with its own set of services Limitations: Single administrator for the whole server
OGC Protocols
Dissemination of Maps WMS Fusing raster and vector data seamlessly With styling! WMS 1.1.1 and 1.3 support SLD Basic support for SLD 1.1 and SE 1.1 Full support for SLD 1.0 Geo-CSS (community module) Many rendering extensions available! Integration with GeoWebCache
KML/KMZ TEMPORAL SERIES KML EXTRUDE KML SUPEROVERLAY
New projections
Advanced Projection Handling Management of dateline Change and map-wrapping Cutting un-reprojectable geometries
Advanced Styling Filter Functions Geometry Transformations Number Formatting Drop Shadow
Rendering transformations On-the-fly data transformations Calling WPS processes from SLD docs Optimized for performance
Rendering transformations Point feature extraction from two band raster data (e.g. Wind(u,v)) Computation of direction and module from SLD
Time and elevation support Available on 2.2.x Supports both vector (fields) and rasters (mosaics with time/elevation associated to tiles) GetMap&time=2001-08-01T18:00:00Z/ 2001-09-01T00:00:00Z GetMap&time=2003-08-01T18:00:00Z/ 2003-10-01T00:00:00Z
WMS Animator Animations for WMS requests across custom GetMap params Controlled via aparam/avalues couples Generates multiple frames through multiple GetMap requests http://localhost:8080/geoserver/wms/animate?layers=topp%3aworld&apara m=time&avalues=2004-01-01t00:00:00.000z,,2004-07- 01T00:00:00.000Z&format=image/gif;subtype=animated&format_options=gif_l oop_continuosly:true
Cross-Layer filtering querylayer community module Find all sites within 100 meters from roads Single CQL filter with WMS: DWITHIN( the_geom, collectgeometries( querycollection('roads', 'the_geom', 'INCLUDE') ), 200, meters)
INSPIRE INSPIRE community module Adds new layer metadata fields Integrate the WMS capabilities documents to support the INSPIRE requirements
WMS Cascading Cascade WMS 1.1 and WMS 1.3 Auto-fill metadata based on caps document GetMap and GetFeatureInfo Cascading Support for reprojection on-the-fly GUI based mass import of remote layers Support for secured remote WMS services
WFS Dissemination and filtering of vector data WFS 1.0 and 1.1 support with transactions WFS 2.0 on the 2.2.x series Formats: GML 2, 3.1 e 3.2, CSV, GeoRSS, GeoJSON Shapefile (zipped), OGR (via ogr2ogr, configurable) Extensions CQL WFS 1.0 with on-the-fly reprojection Paging and sorting in WFS 1.0 and 1.1
WFS paging http://myserver/geoserver/topp/ows? service=wfs&version=1.0.0&request=getfeature &typename=topp:states&outputformat=csv &propertyname=state_name,persons &maxfeatures=10&startindex=10 #FID,STATE_NAME,PERSONS states.11,arizona,3665228 states.12,oklahoma,3145585 states.13,north Carolina,6628629 states.14,tennessee,4829958 states.15,texas,17122020 states.16,new Mexico,1379559 states.17,alabama,4040587 states.18,mississippi,2573216 states.19,georgia,6457339 states.20,south Carolina,3486703
WCS* Raster data dissemination Raw raster data useful for analysis, no maps! Support for TIME and ELEVATION (via ImageMosaic plugin) WCS 1.0 e 1.1.1 Output formats GeoTiff, ArcGrid GDAL based formats* Extensions ELEVATION as band management*
WCS: request builder and limits
WPS WPS 1.0 Official Extension Raster and Vector data support High performance processes development (raster/vector statistics, raster/vector format conversions and more) Supports asynchronous requests Integrated WPS Automatic publishing of results Embedding processes into SLD styles Reuse processes as rendering transformations
WPS: news
WPS* Deficiencies Missing request limits enforcements (e.g. input/output maximum dimensions) Wish list: Scripting (Jython, GeoScript) Sextante, IDL, JGrass (Grass?) integration Improved robustness Jiffle (jai-tools) based raster algebra Create new layers as dynamic WPS processes (computing data on the fly as requested)
Data
New/improved vector stores Teradata (large databases + analytics/business intelligence) SQL Server: improved performance, added support for SQL Azure GeoCouch* (couch db) GeoGit* (distributed versioning) Simple Feature Service* client (aka MapFish++ protocol) New OGR data store* Aggregating data store* *: new/experimental
Aggregating data store N layers, remote or local, sharing the same structure Aggregating store puts them together dynamically, the client will think there is just one layer Parallel data fetching Can be configured to tolerate temporarily unreachable data sources
SQL Parametric Views SQL View as a GeoServer Layer No need to actually creating a view in the database View can be parametric WMS and WFS allow parameter substitution.&request=getmap&viewparams=low:2000000;high:5000000 Default values for parameters Validation with regular expressions
ImageIO-Ext Support JAI ImageIO Extension Plugins: BigTiff netcdf-cf, GriB1 MatFile 5 HDF4 JP2000 (Kakadu) GDAL 1.8.1 GDAL 1.8.1 integration via ImageIO-ext JPEG2000,MrSID, ECW BigTIFF, ERDAS Image, HDF4
Image Server* Turning GeoServer into an Image Server Serving pure Imagery No geo-reference need/available/(would make sense!) Special Coordinate Reference Systems defined Interoperability with WMS clients Respecting EPSG conventions EPSG:404000 See here Improved support for data with bad/missing geo-reference!
Security
Integrated Security Spring Security RBAC on layers and services Built-in version with simplified rules namespace.layer.mode=role1,role2,... A name, or * to mean any r: read w: write The roles that will be authorized to access the data under this rule
Security Developments in 2.1 Security Management at the feature level (record in DBMS) read and write filtering Hide sensible attributes Discriminate visible areas on a per-user basis Rules for services and layers Server side framework available, but no integrated solution leveraging it. External tools available: GeoRepository, GeoShield
GeoRepository GeoRepository
Database level security Some enterprises want to control security at the database level (instead of at the application level) The connection pool user gets very limited rights Pass down the current GeoServer user to the database via SQL script
Security Developments in 2.2.x Some new security advances are in the works on the unstable series, will be available in 2.2.0: Pluggable authentication layer (use authentications others than HTTP BASIC ones) Pluggable user/roles database Password encryption in configuration files
The End Questions? andrea.aime@geo-solutions.it
Raster Symbolizer Raw Data 256 Colors 65536 Colors
Administration GUI
GUI: security configuration
Integrated Security *.*.r=* *.*.w=no_one RDONLY lock down private.*.r=trusted_role private.*.w=trusted_role topp.districts.w=legislators Per-layer override private.* topp.* topp. districts Other layers TRUSTED_ROLE r/w r r r LEGISLATORS (all other users) (no access) r r/w r (no access) r r r
Security Developments in 2.1 GSIP 57 extended authorization management GeoRepository Role Base Access Control Services Operations Layers Attributes (alphanumeric and geospatial) External Web Application Web Services + UI Rule-based IPTables-like
Complex Feature* Application/community schemas Complex Features Attributes as sub-features Attributes as list of features Tree-like structure Heterogeneous data sources INSPIRE!
Dynamic symbolizers
Advanced Labeling Advanced Styling
WMS - CQL GeoServer WMS CQL Examples STATE_NAME = 'Montana' MALE > FEMALE LAND_KM > 300000
WMS TIME and ELEVATION TIME = 20100512T0000000Z ELEVATION = 0.0 FeatureType Editor
Raster Pyramids Preprocessing raster data for performance Multiple resolutions levels Scale decide best resolution level Multiple file (tiles) per resolutions level File Based Pyramids Support DBMS-based Pyramids Postgis DB2 Oracle (GeoRaster) MySQL
WPS: demo builder
Improved Raster Reprojection Raster reprojection complex process Idea: try to approximate the overall transformation with a simpler one, either a single affine transformation or a piecewise composition of them (grid warp) Ability to specify threshold for error acceptance Iterative approach (local optimization) Trade off between speed and precision
GeoWebCache Integration GeoServer GeoWebCache Persistent raster/kml tile cache Direct calls to GeoServer rendering engine Support for layers modified through WFT-T Support for various tile protocols GMap, Gearth OpenLayers, VEarth, Bing Speed-up factor 10/100 Disk quota support
GeoServer in da Cloud Standing Cloud Admin-Free Cloud Infrastructure Paas from Amazon, GoGrid, Linode, etc Pay per use Elastic resources at hand GeoServer SaaS Deploy and admin with UI No sysadmin skills Shell available for braves!