Advanced cartographic map rendering in GeoServer

45
Advanced cartographic map rendering in GeoServer Ing. Andrea Aime, GeoSolutions Ing. Simone Giannecchini, GeoSolutions FOSS4G 2011, Denver 12 th -16 th September 2011

description

FOSS4G presentation about how to turn your data into beatiful, dynamic maps with GeoServer

Transcript of Advanced cartographic map rendering in GeoServer

Page 1: Advanced cartographic map rendering in GeoServer

Advanced cartographic map rendering in GeoServer

Ing. Andrea Aime, GeoSolutions

Ing. Simone Giannecchini, GeoSolutions

FOSS4G 2011, Denver 12th-16th September 2011

Page 2: Advanced cartographic map rendering in GeoServer

Overview

Who we are

Example map

Raster styling

Scale dependent rules

Hatches, patterns and dashes

Point Symbology

Labeling

Transformations

Cross layer filtering

FOSS4G 2011, Denver 12th-16th September 2011

Page 3: Advanced cartographic map rendering in GeoServer

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

GeoTools, GeoServer

GeoBatch, GeoNetwork

Clients

Public Agencies

Private Companies

http://www.geo-solutions.it

FOSS4G 2011, Denver 12th-16th September 2011

Page 4: Advanced cartographic map rendering in GeoServer

The example map

FOSS4G 2011, Denver 12th-16th September 2011

Page 5: Advanced cartographic map rendering in GeoServer

Example map

FOSS4G 2011, Denver 12th-16th September 2011

Page 6: Advanced cartographic map rendering in GeoServer

Example map

FOSS4G 2011, Denver 12th-16th September 2011

Page 7: Advanced cartographic map rendering in GeoServer

Example map

FOSS4G 2011, Denver 12th-16th September 2011

Page 8: Advanced cartographic map rendering in GeoServer

Example map

FOSS4G 2011, Denver 12th-16th September 2011

Page 9: Advanced cartographic map rendering in GeoServer

Example map

FOSS4G 2011, Denver 12th-16th September 2011

Page 10: Advanced cartographic map rendering in GeoServer

Raster styling

FOSS4G 2011, Denver 12th-16th September 2011

Page 11: Advanced cartographic map rendering in GeoServer

A DEM and a color map

SRTM from USGS

Standard color map

Just avoid the nodata values with opacity=0

A bit dull…

FOSS4G 2011, Denver 12th-16th September 2011

Page 12: Advanced cartographic map rendering in GeoServer

Add hillshade

GeoServer cannot do hillshade on its own now

gdaldem to the rescue: gdaldem hillshade -z 5 -s

111120 srtm_boulder.tiff

srtm_boulder_hs.tiff -co

tiled=yes

Partially transparent

FOSS4G 2011, Denver 12th-16th September 2011

Page 13: Advanced cartographic map rendering in GeoServer

Overlay the two

FOSS4G 2011, Denver 12th-16th September 2011

Page 14: Advanced cartographic map rendering in GeoServer

Scale dependent rules

FOSS4G 2011, Denver 12th-16th September 2011

Page 15: Advanced cartographic map rendering in GeoServer

Scale dependent rules

Too often forgotten or little used, yet very important:

Hide layers when too zoomed in (raster/vector example)

Progressively show details

Add more expensive rendering when there are less features

Key to any high performance / good looking map

FOSS4G 2011, Denver 12th-16th September 2011

Page 16: Advanced cartographic map rendering in GeoServer

Example

FOSS4G 2011, Denver 12th-16th September 2011

Page 17: Advanced cartographic map rendering in GeoServer

Hide as you zoom in

Add a MinScaleDenominator to the rule

This will make the layer disappear at 1:75000 (towards 1:1)

FOSS4G 2011, Denver 12th-16th September 2011

Page 18: Advanced cartographic map rendering in GeoServer

Alternative rendering

Simple rendering at low scale (up to 1:2000)

More complex rendering when zoomed in (1:1999 and above)

FOSS4G 2011, Denver 12th-16th September 2011

Page 19: Advanced cartographic map rendering in GeoServer

Alternative rendering

FOSS4G 2011, Denver 12th-16th September 2011

Page 20: Advanced cartographic map rendering in GeoServer

Hatches, patterns and dashes

FOSS4G 2011, Denver 12th-16th September 2011

Page 21: Advanced cartographic map rendering in GeoServer

Filling with patterns

FOSS4G 2011, Denver 12th-16th September 2011

Page 22: Advanced cartographic map rendering in GeoServer

Filling with TTF fonts

FOSS4G 2011, Denver 12th-16th September 2011

Page 23: Advanced cartographic map rendering in GeoServer

Hatches

FOSS4G 2011, Denver 12th-16th September 2011

Page 24: Advanced cartographic map rendering in GeoServer

Hatches

vertiline

slash

plus times

backslash

horline

FOSS4G 2011, Denver 12th-16th September 2011

Page 25: Advanced cartographic map rendering in GeoServer

Dashes

FOSS4G 2011, Denver 12th-16th September 2011

Page 26: Advanced cartographic map rendering in GeoServer

Dashes

FOSS4G 2011, Denver 12th-16th September 2011

Page 27: Advanced cartographic map rendering in GeoServer

Point Symbology

FOSS4G 2011, Denver 12th-16th September 2011

Page 28: Advanced cartographic map rendering in GeoServer

Point symbols

• 600 loc for 6 different points types

• Painful…

FOSS4G 2011, Denver 12th-16th September 2011

Page 29: Advanced cartographic map rendering in GeoServer

Prepare data

alter table pointlm add column image varchar;

update pointlm set image = 'shop_supermarket.p.16.png' where MTFCC =

'C3081' and (FULLNAME like '%Shopping%' or FULLNAME like '%Mall%');

update pointlm set image = 'peak.png' where MTFCC = 'C3022'

update pointlm set image = 'amenity_prison.p.20.png' where MTFCC =

'K1236';

update pointlm set image = 'museum.p.16.png' where MTFCC = 'K2165';

update pointlm set image = 'airport.p.16.png' where MTFCC = 'K2451';

update pointlm set image = 'school.png' where MTFCC = 'K2543';

update pointlm set image = 'christian3.p.14.png' where MTFCC =

'K2582';

update pointlm set image = 'gate2.png' where MTFCC = 'K3066';

FOSS4G 2011, Denver 12th-16th September 2011

Page 30: Advanced cartographic map rendering in GeoServer

Dynamic symbolizers

FOSS4G 2011, Denver 12th-16th September 2011

Page 31: Advanced cartographic map rendering in GeoServer

Labeling

FOSS4G 2011, Denver 12th-16th September 2011

Page 32: Advanced cartographic map rendering in GeoServer

Line labels

FOSS4G 2011, Denver 12th-16th September 2011

Page 33: Advanced cartographic map rendering in GeoServer

Point labels

FOSS4G 2011, Denver 12th-16th September 2011

Page 34: Advanced cartographic map rendering in GeoServer

Polygon labels

FOSS4G 2011, Denver 12th-16th September 2011

Page 35: Advanced cartographic map rendering in GeoServer

Label Obstacles

FOSS4G 2011, Denver 12th-16th September 2011

Page 36: Advanced cartographic map rendering in GeoServer

Transformations

FOSS4G 2011, Denver 12th-16th September 2011

Page 37: Advanced cartographic map rendering in GeoServer

Geometry transformations

FOSS4G 2011, Denver 12th-16th September 2011

Page 38: Advanced cartographic map rendering in GeoServer

Geometry transformations

FOSS4G 2011, Denver 12th-16th September 2011

Page 39: Advanced cartographic map rendering in GeoServer

Rendering transformations

FOSS4G 2011, Denver 12th-16th September 2011

Page 40: Advanced cartographic map rendering in GeoServer

Rendering transformations

FOSS4G 2011, Denver 12th-16th September 2011

Page 41: Advanced cartographic map rendering in GeoServer

Cross layer filtering

FOSS4G 2011, Denver 12th-16th September 2011

Page 42: Advanced cartographic map rendering in GeoServer

Cross layer filtering

Get all schools close at less than 200m from a main road

FOSS4G 2011, Denver 12th-16th September 2011

Page 43: Advanced cartographic map rendering in GeoServer

Cross layer filtering

CQL_FILTER = MTFCC='K2543' AND DWITHIN(the_geom, collectGeometries( queryCollection('foss4g:Mainrd', 'the_geom', 'INCLUDE')), 500, meters)

Get all the main roads

Turn then into a single geometry

Get all the schools within 500 meters from the geometry just created

FOSS4G 2011, Denver 12th-16th September 2011

Page 44: Advanced cartographic map rendering in GeoServer

Demo and styles

Demo of most these examples here:

http://demo1.geo-solutions.it/playground/wms/reflect?layers=boulder&format=application/openlayers

http://demo1.geo-solutions.it/playground/wms/reflect?layers=boulder_dem_tx&format=application/openlayers

Full data, styles and configuration, ready to use:

http://demo.geo-solutions.it/share/foss4g_data_dir.tar.gz

Get the slides: http://geo-solutions.blogspot.com/

FOSS4G 2011, Denver 12th-16th September 2011

Page 45: Advanced cartographic map rendering in GeoServer

The End

Questions? [email protected]

[email protected]

FOSS4G 2011, Denver 12th-16th September 2011