Mapnik2 Performance, September 2011
Post on 28-Nov-2014
3241 Views
Preview:
DESCRIPTION
Transcript
Mapnik 2Performance Optimizations
Dane Springmeyer | Development Seed
Sunday, September 11, 2011
Breakdown
• Core (rendering pipeline)
• Vector Output
• Datasources
• Image encoding
• Styling
Sunday, September 11, 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
Spirit2 ParsingGrammer based string parsing
(expressions, filters, colors, wkt, dbf, svg transforms)
Artem / Weait Contribution
type: coreSunday, September 11, 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
Raster reprojection
New and fast: mesh based interpolation
Alberto Valverde - MeteoGrid/Madrid
type: coreSunday, September 11, 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
Label PlacementFaster math
New options for fast placements or return early (minimum-path-length)
Konstatin Kaefer / Herman Kraus
type: coreSunday, September 11, 2011
Clang support
2x speed of compiles than gcc
Supports link-time optimization (gold linker and libLTO)
type: coreSunday, September 11, 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
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
MemoryDatasource
Dynamic, direct in-memory creation to render from http/json (think couchdb)
type: datasourcesSunday, September 11, 2011
Other new Pluginsrasterlite (wavelets in sqlite)
mongodb (experimental: github/springmeyer)
type: datasourcesSunday, September 11, 2011
Postgres pool
Fixed to allow fuller utilization and benefit of pg connections between many threads
type: datasourcesSunday, September 11, 2011
Shapefile mmap
Ultra fast shared memory-mapped region cache - > 5x faster i/o
Artem / FOSS4G “WMS Shootout”
type: datasourcesSunday, September 11, 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
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
Filter-mode=firstOption on <Style /> to break after first rule match
Critical for CSS support and avoiding combinatorial explosion
type: stylingSunday, September 11, 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
Expressions
framework for runtime evaluation of styling properties
<PolygonSymbolizer color=”[field]” />
type: stylingSunday, September 11, 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
Carto
New CSS language/parser (js, C++)
Inherits features of less.js (variables,nested styles,mixins)
type: stylingSunday, September 11, 2011
SVG SupportSVG rendering of icons
Gradients, transforms (rotate/scale/shear)
http://developmentseed.org/
type: stylingSunday, September 11, 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
Thank you!
Dane Springmeyertwitter/springmeyergithub/springmeyer
Sunday, September 11, 2011
top related