the state of the geoserver project
DESCRIPTION
FOSS4G 2011 presentation on the status of the GeoServer open source projectTRANSCRIPT
The State of GeoServer
Andrea Aime GeoSolutions
Justin Deoliveira Opengeo
Project Activity
Project Activity
Project Activity
Project Activity
Project Activity
Project Activity
Project Activity
Project Activity
Project Activity
Project Activity
Two Years in Review
Rendering
Advanced Projection HandlingDateline wrapping (Plate Caree, Mercator)
Cut polygons to valid area (Mercator, Transverse Mercator, Polar)
Geometry TransformationsDrop shadow
<PolygonSymbolizer> <Geometry> <ogc:Function name="offset"> <ogc:PropertyName>the_geom</ogc:PropertyName> <ogc:Literal>0.00004</ogc:Literal> <ogc:Literal>-0.00004</ogc:Literal> </ogc:Function> <Geometry></PolygonSymbolizer>
Geometry Transformations<PointSymbolizer> <Geometry> <ogc:Function name="endPoint"> <ogc:PropertyName>the_geom</ogc:PropertyName> </ogc:Function> </Geometry> <Graphic> <Mark> <WellKnownName>shape://carrow</WellKnownName> </Mark> <Rotation> <ogc:Function name="endAngle"> <ogc:PropertyName>the_geom</ogc:PropertyName> </ogc:Function> </Rotation> </Graphic></PointSymbolizer>
Pointed Arrows
Rendering Transformations
<FeatureTypeStyle> <Transformation> <ogc:Function name="gs:Contour"> <ogc:Function name="parameter"> <ogc:Literal>data</ogc:Literal> </ogc:Function> <ogc:Function name="parameter"> <ogc:Literal>levels</ogc:Literal> <ogc:Literal>1100</ogc:Literal> <ogc:Literal>1200</ogc:Literal> <ogc:Literal>1300</ogc:Literal> <ogc:Literal>1400</ogc:Literal> <ogc:Literal>1500</ogc:Literal> <ogc:Literal>1600</ogc:Literal> <ogc:Literal>1700</ogc:Literal> <ogc:Literal>1800</ogc:Literal> </ogc:Function> </ogc:Function> </Transformation> </FeatureTypeStyle>
SLD Parameter Substitution <Mark> <WellKnownName> <ogc:Function name="env"> <ogc:Literal>mark</ogc:Literal> <ogc:Literal>square</ogc:Literal> </ogc:Function> </WellKnownName> <Fill>#FF0000</Fill> </Mark>
Normal output ...&env=mark:star
Unit of Measure Support
1:20K
1:10K
1:5K
Unit of Measure Support
1:20K
1:10K
1:5K
<Rule> <MinScaleDenominator>18000</MinScaleDenominator> <LineSymbolizer> <Stroke> <CssParameter name="stroke-width"> <ogc:Literal>1</ogc:Literal> </CssParameter> </Stroke> </LineSymbolizer></Rule><Rule> <MinScaleDenominator>8000</MinScaleDenominator> <MaxScaleDenominator>18000</MaxScaleDenominator> <LineSymbolizer> <CssParameter name="stroke-width"> <ogc:Literal>2</ogc:Literal> </CssParameter> </Stroke> </LineSymbolizer></Rule><Rule> <MaxScaleDenominator>8000</MaxScaleDenominator> <LineSymbolizer> <Stroke> <CssParameter name="stroke-width"> <ogc:Literal>4</ogc:Literal> </CssParameter> </Stroke> </LineSymbolizer></Rule>
Unit of Measure Support
1:20K
1:10K
1:5K
<Rule> <LineSymbolizer uom="http://www.opengeospatial.org/se/units/metre"> <Stroke> <CssParameter name="stroke-width"> <ogc:Literal>5</ogc:Literal> </CssParameter> </Stroke> </LineSymbolizer></Rule>
Label Obstacles
<PointSymbolizer> <Graphic> <ExternalGraphic> <OnlineResource xlink:type="simple" xlink:href="..." /> <Format>image/png</Format> </ExternalGraphic> <Size>32</Size> </Graphic> <VendorOption name="labelObstacle">true</VendorOption></PointSymbolizer>
● Point label displacement● DPI scaling● Faster Recode/Categorize● Performance
And More Rendering
Raster
Faster Raster Reprojection
Piecewise linear approximation
Faster Raster Reprojection
Non Georeferenced Rasters
EPSG:404000
Image Mosaic Improvements
● Attach attributes to tiles● Filter by attribute● Filter by time/elevation● Autoindexing of directories● External indexes
○ any GT datastore○ third party indexes
● Multithreaded loading of granules● Footprint support
Automatic Image Pyramids
Automatically:● recognize gdal_retile structure● building mosaic index
ImageIO-Ext Improvements● BigTiff support
○ Read/Write○ Overviews
● Improved GeoTiff○ external overviews○ new plugin underway
● Improved JPEG2000 support○ kakadu based○ additional code params○ fine grain control on writing
● Improved Tiff metadata management○ wiser caching○ less memory - more speed
Direct Raster Rendering Path● Hit JAVA2D Bottleneck – Scalability Issue
○ http://bit.ly/qJcZBi○ http://bit.ly/oe0CHo
● Created direct raster rendering path with JAI○ Drop-in replacement (1 raster
at time)○ 2x speedup○ 2x/3x scalability improvement
under heavy load○ Enabled/Disabled via Java Switch
● Oracle GeoRaster● JPEG 2K improvements● More Concurrency● Simplified/Shrunk Raster Operation
Chains
And More Raster
Web UI
Web UI
EPSG:32612, UTM 12N
EPSG:32614, UTM 14N
CRS Area of Validity Display
Web UI
Log viewer
Legend preview
Web UIGraphical file chooser
● Recent development by CSIRO ● Full extension status● Feature chaining, polymorphism● Better performance, memory use● GML 3.2, WMS (beta)
Application Schema Support
Projections
Mollweide
Eckert IVWinkel Tripel
Robinson
Equidistant conic
Web Map Service (WMS)
Time and Elevation
Time and Elevation
...&request=GetMap &time=2001-08-01T18:00:00Z/2001-09-01T00:00:00Z
...&request=GetMap &time=2003-08-01T18:00:00Z/2003-10-01T00:00:00Z
Animation
Albacore Tuna catches, 1986 to 2000. (Params injected in a complex sql view computing each pixel)
...&request=GetMap &format=image/gif;subtype=animated &aparam=viewparams:YR_TA &avalues=1986,1987,...,2000 &format_options=gif_loop_continuosly:true
Animation
...&request=GetMap &format=image/gif;subtype=animated &aparam=bbox &avalues=-180\,0\,0\,90, -165\,0,14\,90...
WMS Cascading
GeoWebCacheTransparent caching
Disk usagecontrol
● WMS 1.3● SE 1.1 / SLD 1.1● SLD GetStyles
And More WMS
Web Coverage Service (WCS)
WCS Request Builder
WCS Limits
Web Processing Service (WPS)
Web Processing ServiceFull extension status
Lots of new processes
Georectification Process
Georectification Process
SQL ViewsLayers from SQL
request=GetMap &layers=continents &viewparams=region:2
Service and catalog views per workspace
Virtual Services
● OWS request throttling based on:○ Number of concurrent requests total○ Number of concurrent requests per:
■ service■ operation■ output format■ user
● Requests queued when limits reached
Control Flow
Control Flow
Control Flow
Cross Layer Filtering<wfs:Query typeName="sf:bugsites"> <ogc:Filter> <ogc:Intersects> <ogc:PropertyName>the_geom</ogc:PropertyName> <ogc:Function name="querySingle"> <ogc:Literal>sf:restricted</ogc:Literal> <ogc:Literal>the_geom</ogc:Literal> <ogc:Literal>cat = 3</ogc:Literal> </ogc:Function> </ogc:Intersects> </ogc:Filter> </wfs:Query>
Monitoring and Auditing
Teradata DataStore
What's coming?
On the Horizon
● WFS 2.0● DBconfig - Catalog and config in a database● Scripting - Python, JavaScript, Scala, Groovy
(GeoScript)● GSS / GeoGit
Thanks!
http://geoserver.org
Questions?
Oh Wait! It's trivia time.
What was the original name of the organization that founded GeoServer?
?