Top Banner
Mapnik 2 Performance Optimizations Dane Springmeyer | Development Seed Sunday, September 11, 2011
25

Mapnik2 Performance, September 2011

Nov 28, 2014

Download

Technology

Dane previewed the performance features in the upcoming Mapnik 2 release at the State of the Map conference. Video of the talk is here: http://vimeo.com/28898061.
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Mapnik2 Performance, September 2011

Mapnik 2Performance Optimizations

Dane Springmeyer | Development Seed

Sunday, September 11, 2011

Page 2: Mapnik2 Performance, September 2011

Breakdown

• Core (rendering pipeline)

• Vector Output

• Datasources

• Image encoding

• Styling

Sunday, September 11, 2011

Page 3: Mapnik2 Performance, September 2011

Geometry Storagefaster, more memory efficient allocator

japan quake / massive landuse polygons

why tile.osm.org is already running mapnik trunk

Artem/MapQuest contribution

type: coreSunday, September 11, 2011

Page 4: Mapnik2 Performance, September 2011

Spirit2 ParsingGrammer based string parsing

(expressions, filters, colors, wkt, dbf, svg transforms)

Artem / Weait Contribution

type: coreSunday, September 11, 2011

Page 5: Mapnik2 Performance, September 2011

Proj4 reprojectionLeveraging lock-free transforms if >= 4.8

4.8 not yet released so you need proj trunk

Tom Hughes - Mapnik London 2010 sprint

type: coreSunday, September 11, 2011

Page 6: Mapnik2 Performance, September 2011

Raster reprojection

New and fast: mesh based interpolation

Alberto Valverde - MeteoGrid/Madrid

type: coreSunday, September 11, 2011

Page 7: Mapnik2 Performance, September 2011

Faster AA linesNew option to use 2-3X faster anti-aliased line rasterization:

<LineSymbolizer rasterizer=”fast” />

Drops short segments, less precise line caps/joins

type: coreSunday, September 11, 2011

Page 8: Mapnik2 Performance, September 2011

Label PlacementFaster math

New options for fast placements or return early (minimum-path-length)

Konstatin Kaefer / Herman Kraus

type: coreSunday, September 11, 2011

Page 9: Mapnik2 Performance, September 2011

Clang support

2x speed of compiles than gcc

Supports link-time optimization (gold linker and libLTO)

type: coreSunday, September 11, 2011

Page 10: Mapnik2 Performance, September 2011

MetaWritersMetadata collected during image rendering (in same pass).

Can be output as GeoJSON or streamed using mapnik::memory_datasource

Hermann / GSOC project

type: vector outputSunday, September 11, 2011

Page 11: Mapnik2 Performance, September 2011

grid_rendererHighly optimized hit grids encoded as utf8 feature id’s in json

Invisible, tiled interactivity

http://developmentseed.org/blog/2011/sep/07/see-how-utfgrid-works-visible-map/

type: vector outputSunday, September 11, 2011

Page 12: Mapnik2 Performance, September 2011

MemoryDatasource

Dynamic, direct in-memory creation to render from http/json (think couchdb)

type: datasourcesSunday, September 11, 2011

Page 13: Mapnik2 Performance, September 2011

Other new Pluginsrasterlite (wavelets in sqlite)

mongodb (experimental: github/springmeyer)

type: datasourcesSunday, September 11, 2011

Page 14: Mapnik2 Performance, September 2011

Postgres pool

Fixed to allow fuller utilization and benefit of pg connections between many threads

type: datasourcesSunday, September 11, 2011

Page 15: Mapnik2 Performance, September 2011

Shapefile mmap

Ultra fast shared memory-mapped region cache - > 5x faster i/o

Artem / FOSS4G “WMS Shootout”

type: datasourcesSunday, September 11, 2011

Page 16: Mapnik2 Performance, September 2011

SQLite* rtree indexes

* shared cache

* fast, lock free access between threads

(Almost as fast as shapefiles now in mapnik)

type: datasourcesSunday, September 11, 2011

Page 17: Mapnik2 Performance, September 2011

PNG Size and Speed

* faster, more flexible png quantiziation

* fixed palettes - ultra fast color reduction (save on encoding time without quant cost)

* direct access to zlib fast compression

type: image encodingSunday, September 11, 2011

Page 18: Mapnik2 Performance, September 2011

Filter-mode=firstOption on <Style /> to break after first rule match

Critical for CSS support and avoiding combinatorial explosion

type: stylingSunday, September 11, 2011

Page 19: Mapnik2 Performance, September 2011

Feature CachingOption on Layer:

<Layer feature-caching=”true”/>

Allows re-use of features within layer with multiple styles (road-casing)

type: stylingSunday, September 11, 2011

Page 20: Mapnik2 Performance, September 2011

Expressions

framework for runtime evaluation of styling properties

<PolygonSymbolizer color=”[field]” />

type: stylingSunday, September 11, 2011

Page 21: Mapnik2 Performance, September 2011

Raster Colorizerframework for runtime evaluation of styling properties

<RasterSymbolizer> <RasterColorizer default-mode="discrete" default-color="white" > <stop color="#222222" value = "0" mode = "linear" /> <stop color="#EEEEEE" value = "25" /> </RasterColorizer> </RasterSymbolizer>

type: stylingSunday, September 11, 2011

Page 22: Mapnik2 Performance, September 2011

Carto

New CSS language/parser (js, C++)

Inherits features of less.js (variables,nested styles,mixins)

type: stylingSunday, September 11, 2011

Page 23: Mapnik2 Performance, September 2011

SVG SupportSVG rendering of icons

Gradients, transforms (rotate/scale/shear)

http://developmentseed.org/

type: stylingSunday, September 11, 2011

Page 24: Mapnik2 Performance, September 2011

Mapnik 2 release

• Next week, more than a year in process

• Try now:sudo add-apt-repository ppa:mapnik/nightly-trunksudo apt-get updatesudo apt-get install libmapnik2 libmapnik2-dev mapnik2-utils

• Learn more: http://trac.mapnik.org/milestone/Mapnik%202.0

Sunday, September 11, 2011

Page 25: Mapnik2 Performance, September 2011

Thank you!

Dane Springmeyertwitter/springmeyergithub/springmeyer

Sunday, September 11, 2011