SlideShare a Scribd company logo
Mapnik 2
                                Performance Optimizations


                             Dane Springmeyer | Development Seed




Sunday, September 11, 2011
Breakdown

                   •         Core (rendering pipeline)

                   •         Vector Output

                   •         Datasources

                   •         Image encoding

                   •         Styling




Sunday, September 11, 2011
Geometry Storage
                         faster, more memory efficient allocator
                         japan quake / massive landuse polygons
                         why tile.osm.org is already running mapnik
                         trunk
                         Artem/MapQuest contribution

     type: core
Sunday, September 11, 2011
Spirit2 Parsing
                         Grammer based string parsing
                         (expressions, filters, colors, wkt, dbf, svg
                         transforms)
                         Artem / Weait Contribution



     type: core
Sunday, September 11, 2011
Proj4 reprojection
                         Leveraging lock-free transforms if >= 4.8
                         4.8 not yet released so you need proj trunk
                         Tom Hughes - Mapnik London 2010 sprint



     type: core
Sunday, September 11, 2011
Raster
                             reprojection
                         New and fast: mesh based interpolation
                         Alberto Valverde - MeteoGrid/Madrid




     type: core
Sunday, September 11, 2011
Faster AA lines
                         New option to use 2-3X faster anti-aliased
                         line rasterization:

                             <LineSymbolizer rasterizer=”fast” />

                         Drops short segments, less precise line
                         caps/joins

     type: core
Sunday, September 11, 2011
Label Placement
                         Faster math
                         New options for fast placements or return
                         early (minimum-path-length)
                         Konstatin Kaefer / Herman Kraus



     type: core
Sunday, September 11, 2011
Clang support
                         2x speed of compiles than gcc
                         Supports link-time optimization (gold linker
                         and libLTO)



     type: core
Sunday, September 11, 2011
MetaWriters
                         Metadata collected during image rendering
                         (in same pass).
                         Can be output as GeoJSON or streamed
                         using mapnik::memory_datasource
                         Hermann / GSOC project

     type: vector output
Sunday, September 11, 2011
grid_renderer
                         Highly 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 output
Sunday, September 11, 2011
MemoryDatasource

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




     type: datasources
Sunday, September 11, 2011
Other new Plugins
                         rasterlite (wavelets in sqlite)
                         mongodb (experimental: github/
                         springmeyer)




     type: datasources
Sunday, September 11, 2011
Postgres pool
                         Fixed to allow fuller utilization and benefit
                         of pg connections between many threads




     type: datasources
Sunday, September 11, 2011
Shapefile mmap
                         Ultra fast shared memory-mapped region
                         cache - > 5x faster i/o
                         Artem / FOSS4G “WMS Shootout”



     type: datasources
Sunday, September 11, 2011
SQLite
                         * rtree indexes
                         * shared cache
                         * fast, lock free access between threads
                         (Almost as fast as shapefiles now in mapnik)


     type: datasources
Sunday, 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 encoding
Sunday, September 11, 2011
Filter-mode=first
                         Option on <Style /> to break after first rule
                         match
                         Critical for CSS support and avoiding
                         combinatorial explosion



     type: styling
Sunday, September 11, 2011
Feature Caching
                         Option on Layer:
                             <Layer feature-caching=”true”/>
                         Allows re-use of features within layer with
                         multiple styles (road-casing)



     type: styling
Sunday, September 11, 2011
Expressions
                         framework for runtime evaluation of styling
                         properties
                         <PolygonSymbolizer color=”[field]” />



     type: styling
Sunday, September 11, 2011
Raster Colorizer
                         framework 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: styling
Sunday, September 11, 2011
Carto
                         New CSS language/parser (js, C++)
                         Inherits features of less.js (variables,nested
                         styles,mixins)



     type: styling
Sunday, September 11, 2011
SVG Support
                         SVG rendering of icons
                         Gradients, transforms (rotate/scale/shear)
                         http://developmentseed.org/



     type: styling
Sunday, September 11, 2011
Mapnik 2 release

               • Next week, more than a year in process
               • Try now:
                       sudo add-apt-repository ppa:mapnik/nightly-trunk
                       sudo apt-get update
                       sudo 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 Springmeyer
                              twitter/springmeyer
                               github/springmeyer



Sunday, September 11, 2011

More Related Content

Similar to Mapnik2 Performance, September 2011

Node at artsy
Node at artsyNode at artsy
Node at artsy
Craig Spaeth
 
Community Code: Xero
Community Code: XeroCommunity Code: Xero
Community Code: Xero
Sencha
 
MongoDB at Sailthru: Scaling and Schema Design
MongoDB at Sailthru: Scaling and Schema DesignMongoDB at Sailthru: Scaling and Schema Design
MongoDB at Sailthru: Scaling and Schema Design
DATAVERSITY
 
soft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Grids
soft-shake.ch
 
JBoss AS 7 from a user perspective
JBoss AS 7 from a user perspectiveJBoss AS 7 from a user perspective
JBoss AS 7 from a user perspective
Max Andersen
 
CloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heavenCloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heaven
Patrick Chanezon
 
Hardware Acceleration on Mobile, Ariya Hidayat & Jarred Nicholls
Hardware Acceleration on Mobile, Ariya Hidayat & Jarred NichollsHardware Acceleration on Mobile, Ariya Hidayat & Jarred Nicholls
Hardware Acceleration on Mobile, Ariya Hidayat & Jarred Nicholls
Sencha
 
Caridy patino - node-js
Caridy patino - node-jsCaridy patino - node-js
Caridy patino - node-js
StarTech Conference
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JS
Caridy Patino
 
TorqueBox - When Java meets Ruby
TorqueBox - When Java meets RubyTorqueBox - When Java meets Ruby
TorqueBox - When Java meets Ruby
Bruno Oliveira
 
Cloudcamp Athens 2011 Presenting Heroku
Cloudcamp Athens 2011 Presenting HerokuCloudcamp Athens 2011 Presenting Heroku
Cloudcamp Athens 2011 Presenting Heroku
Savvas Georgiou
 
Your first rails app - 2
 Your first rails app - 2 Your first rails app - 2
Your first rails app - 2
Blazing Cloud
 
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e RubyTorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
Bruno Oliveira
 
Rails ORM De-mystifying Active Record has_many
Rails ORM De-mystifying Active Record has_manyRails ORM De-mystifying Active Record has_many
Rails ORM De-mystifying Active Record has_many
Blazing Cloud
 
Ext GWT 3.0 Theming and Appearances
Ext GWT 3.0 Theming and AppearancesExt GWT 3.0 Theming and Appearances
Ext GWT 3.0 Theming and Appearances
Sencha
 
Rcos presentation
Rcos presentationRcos presentation
Rcos presentation
mskmoorthy
 
What's new in HTML5, CSS3 and JavaScript, James Pearce
What's new in HTML5, CSS3 and JavaScript, James PearceWhat's new in HTML5, CSS3 and JavaScript, James Pearce
What's new in HTML5, CSS3 and JavaScript, James Pearce
Sencha
 
Moving to Dojo 1.7 and the path to 2.0
Moving to Dojo 1.7 and the path to 2.0Moving to Dojo 1.7 and the path to 2.0
Moving to Dojo 1.7 and the path to 2.0
James Thomas
 
Groke
GrokeGroke
Image and Music: Processing plus Pure Data with libpd library
Image and Music: Processing plus Pure Data with libpd libraryImage and Music: Processing plus Pure Data with libpd library
Image and Music: Processing plus Pure Data with libpd library
PETER KIRN
 

Similar to Mapnik2 Performance, September 2011 (20)

Node at artsy
Node at artsyNode at artsy
Node at artsy
 
Community Code: Xero
Community Code: XeroCommunity Code: Xero
Community Code: Xero
 
MongoDB at Sailthru: Scaling and Schema Design
MongoDB at Sailthru: Scaling and Schema DesignMongoDB at Sailthru: Scaling and Schema Design
MongoDB at Sailthru: Scaling and Schema Design
 
soft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Gridssoft-shake.ch - Data grids and Data Grids
soft-shake.ch - Data grids and Data Grids
 
JBoss AS 7 from a user perspective
JBoss AS 7 from a user perspectiveJBoss AS 7 from a user perspective
JBoss AS 7 from a user perspective
 
CloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heavenCloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heaven
 
Hardware Acceleration on Mobile, Ariya Hidayat & Jarred Nicholls
Hardware Acceleration on Mobile, Ariya Hidayat & Jarred NichollsHardware Acceleration on Mobile, Ariya Hidayat & Jarred Nicholls
Hardware Acceleration on Mobile, Ariya Hidayat & Jarred Nicholls
 
Caridy patino - node-js
Caridy patino - node-jsCaridy patino - node-js
Caridy patino - node-js
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JS
 
TorqueBox - When Java meets Ruby
TorqueBox - When Java meets RubyTorqueBox - When Java meets Ruby
TorqueBox - When Java meets Ruby
 
Cloudcamp Athens 2011 Presenting Heroku
Cloudcamp Athens 2011 Presenting HerokuCloudcamp Athens 2011 Presenting Heroku
Cloudcamp Athens 2011 Presenting Heroku
 
Your first rails app - 2
 Your first rails app - 2 Your first rails app - 2
Your first rails app - 2
 
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e RubyTorqueBox - Ultrapassando a fronteira entre Java e Ruby
TorqueBox - Ultrapassando a fronteira entre Java e Ruby
 
Rails ORM De-mystifying Active Record has_many
Rails ORM De-mystifying Active Record has_manyRails ORM De-mystifying Active Record has_many
Rails ORM De-mystifying Active Record has_many
 
Ext GWT 3.0 Theming and Appearances
Ext GWT 3.0 Theming and AppearancesExt GWT 3.0 Theming and Appearances
Ext GWT 3.0 Theming and Appearances
 
Rcos presentation
Rcos presentationRcos presentation
Rcos presentation
 
What's new in HTML5, CSS3 and JavaScript, James Pearce
What's new in HTML5, CSS3 and JavaScript, James PearceWhat's new in HTML5, CSS3 and JavaScript, James Pearce
What's new in HTML5, CSS3 and JavaScript, James Pearce
 
Moving to Dojo 1.7 and the path to 2.0
Moving to Dojo 1.7 and the path to 2.0Moving to Dojo 1.7 and the path to 2.0
Moving to Dojo 1.7 and the path to 2.0
 
Groke
GrokeGroke
Groke
 
Image and Music: Processing plus Pure Data with libpd library
Image and Music: Processing plus Pure Data with libpd libraryImage and Music: Processing plus Pure Data with libpd library
Image and Music: Processing plus Pure Data with libpd library
 

More from Development Seed

Rasters are not Monsters - GeoMTL 2019
Rasters are not Monsters - GeoMTL 2019Rasters are not Monsters - GeoMTL 2019
Rasters are not Monsters - GeoMTL 2019
Development Seed
 
Transparency camp
Transparency campTransparency camp
Transparency camp
Development Seed
 
Fast Map Interaction without Flash
Fast Map Interaction without FlashFast Map Interaction without Flash
Fast Map Interaction without Flash
Development Seed
 
Tech@State Preview of Designing Custom Maps with TileMill
Tech@State Preview of Designing Custom Maps with TileMillTech@State Preview of Designing Custom Maps with TileMill
Tech@State Preview of Designing Custom Maps with TileMill
Development Seed
 
ReliefWeb Drupal 7 Build Plan
ReliefWeb Drupal 7 Build PlanReliefWeb Drupal 7 Build Plan
ReliefWeb Drupal 7 Build Plan
Development Seed
 
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationIBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
Development Seed
 
Offline Mapping: International Crisis
Offline Mapping: International CrisisOffline Mapping: International Crisis
Offline Mapping: International Crisis
Development Seed
 
Aegir one drupal to rule them all
Aegir one drupal to rule them allAegir one drupal to rule them all
Aegir one drupal to rule them all
Development Seed
 
Backstage with Drupal localization- Part 2
Backstage with Drupal localization- Part 2Backstage with Drupal localization- Part 2
Backstage with Drupal localization- Part 2
Development Seed
 
For every site a make file
For every site a make fileFor every site a make file
For every site a make file
Development Seed
 
Go real time with pubsubhubbub and feeds
Go real time with pubsubhubbub and feedsGo real time with pubsubhubbub and feeds
Go real time with pubsubhubbub and feeds
Development Seed
 
Drupal Distributions: The Dos and Don'ts:
Drupal Distributions: The Dos and Don'ts:Drupal Distributions: The Dos and Don'ts:
Drupal Distributions: The Dos and Don'ts:
Development Seed
 
Open Atrium
Open Atrium Open Atrium
Open Atrium
Development Seed
 
Opening Large Data Sets
Opening Large Data SetsOpening Large Data Sets
Opening Large Data Sets
Development Seed
 

More from Development Seed (14)

Rasters are not Monsters - GeoMTL 2019
Rasters are not Monsters - GeoMTL 2019Rasters are not Monsters - GeoMTL 2019
Rasters are not Monsters - GeoMTL 2019
 
Transparency camp
Transparency campTransparency camp
Transparency camp
 
Fast Map Interaction without Flash
Fast Map Interaction without FlashFast Map Interaction without Flash
Fast Map Interaction without Flash
 
Tech@State Preview of Designing Custom Maps with TileMill
Tech@State Preview of Designing Custom Maps with TileMillTech@State Preview of Designing Custom Maps with TileMill
Tech@State Preview of Designing Custom Maps with TileMill
 
ReliefWeb Drupal 7 Build Plan
ReliefWeb Drupal 7 Build PlanReliefWeb Drupal 7 Build Plan
ReliefWeb Drupal 7 Build Plan
 
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationIBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
 
Offline Mapping: International Crisis
Offline Mapping: International CrisisOffline Mapping: International Crisis
Offline Mapping: International Crisis
 
Aegir one drupal to rule them all
Aegir one drupal to rule them allAegir one drupal to rule them all
Aegir one drupal to rule them all
 
Backstage with Drupal localization- Part 2
Backstage with Drupal localization- Part 2Backstage with Drupal localization- Part 2
Backstage with Drupal localization- Part 2
 
For every site a make file
For every site a make fileFor every site a make file
For every site a make file
 
Go real time with pubsubhubbub and feeds
Go real time with pubsubhubbub and feedsGo real time with pubsubhubbub and feeds
Go real time with pubsubhubbub and feeds
 
Drupal Distributions: The Dos and Don'ts:
Drupal Distributions: The Dos and Don'ts:Drupal Distributions: The Dos and Don'ts:
Drupal Distributions: The Dos and Don'ts:
 
Open Atrium
Open Atrium Open Atrium
Open Atrium
 
Opening Large Data Sets
Opening Large Data SetsOpening Large Data Sets
Opening Large Data Sets
 

Recently uploaded

Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
ssuserfac0301
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
ScyllaDB
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
Jakub Marek
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
Chart Kalyan
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
Fwdays
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
Antonios Katsarakis
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
Mydbops
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
LizaNolte
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
akankshawande
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
Enterprise Knowledge
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
Javier Junquera
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
DianaGray10
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
DanBrown980551
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
christinelarrosa
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
Tatiana Kojar
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
c5vrf27qcz
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
Zilliz
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
Ivo Velitchkov
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
Pablo Gómez Abajo
 

Recently uploaded (20)

Taking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdfTaking AI to the Next Level in Manufacturing.pdf
Taking AI to the Next Level in Manufacturing.pdf
 
A Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's ArchitectureA Deep Dive into ScyllaDB's Architecture
A Deep Dive into ScyllaDB's Architecture
 
Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)Main news related to the CCS TSI 2023 (2023/1695)
Main news related to the CCS TSI 2023 (2023/1695)
 
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdfHow to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
How to Interpret Trends in the Kalyan Rajdhani Mix Chart.pdf
 
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk"Frontline Battles with DDoS: Best practices and Lessons Learned",  Igor Ivaniuk
"Frontline Battles with DDoS: Best practices and Lessons Learned", Igor Ivaniuk
 
Dandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity serverDandelion Hashtable: beyond billion requests per second on a commodity server
Dandelion Hashtable: beyond billion requests per second on a commodity server
 
Must Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during MigrationMust Know Postgres Extension for DBA and Developer during Migration
Must Know Postgres Extension for DBA and Developer during Migration
 
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham HillinQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
inQuba Webinar Mastering Customer Journey Management with Dr Graham Hill
 
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development ProvidersYour One-Stop Shop for Python Success: Top 10 US Python Development Providers
Your One-Stop Shop for Python Success: Top 10 US Python Development Providers
 
Demystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through StorytellingDemystifying Knowledge Management through Storytelling
Demystifying Knowledge Management through Storytelling
 
GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)GNSS spoofing via SDR (Criptored Talks 2024)
GNSS spoofing via SDR (Criptored Talks 2024)
 
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectorsConnector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
Connector Corner: Seamlessly power UiPath Apps, GenAI with prebuilt connectors
 
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
LF Energy Webinar: Carbon Data Specifications: Mechanisms to Improve Data Acc...
 
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance PanelsNorthern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
Northern Engraving | Modern Metal Trim, Nameplates and Appliance Panels
 
Christine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptxChristine's Supplier Sourcing Presentaion.pptx
Christine's Supplier Sourcing Presentaion.pptx
 
Skybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoptionSkybuffer SAM4U tool for SAP license adoption
Skybuffer SAM4U tool for SAP license adoption
 
Y-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PPY-Combinator seed pitch deck template PP
Y-Combinator seed pitch deck template PP
 
Fueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte WebinarFueling AI with Great Data with Airbyte Webinar
Fueling AI with Great Data with Airbyte Webinar
 
Apps Break Data
Apps Break DataApps Break Data
Apps Break Data
 
Mutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented ChatbotsMutation Testing for Task-Oriented Chatbots
Mutation Testing for Task-Oriented Chatbots
 

Mapnik2 Performance, September 2011

  • 1. Mapnik 2 Performance Optimizations Dane Springmeyer | Development Seed Sunday, September 11, 2011
  • 2. Breakdown • Core (rendering pipeline) • Vector Output • Datasources • Image encoding • Styling Sunday, September 11, 2011
  • 3. Geometry Storage faster, more memory efficient allocator japan quake / massive landuse polygons why tile.osm.org is already running mapnik trunk Artem/MapQuest contribution type: core Sunday, September 11, 2011
  • 4. Spirit2 Parsing Grammer based string parsing (expressions, filters, colors, wkt, dbf, svg transforms) Artem / Weait Contribution type: core Sunday, September 11, 2011
  • 5. Proj4 reprojection Leveraging lock-free transforms if >= 4.8 4.8 not yet released so you need proj trunk Tom Hughes - Mapnik London 2010 sprint type: core Sunday, September 11, 2011
  • 6. Raster reprojection New and fast: mesh based interpolation Alberto Valverde - MeteoGrid/Madrid type: core Sunday, September 11, 2011
  • 7. Faster AA lines New option to use 2-3X faster anti-aliased line rasterization: <LineSymbolizer rasterizer=”fast” /> Drops short segments, less precise line caps/joins type: core Sunday, September 11, 2011
  • 8. Label Placement Faster math New options for fast placements or return early (minimum-path-length) Konstatin Kaefer / Herman Kraus type: core Sunday, September 11, 2011
  • 9. Clang support 2x speed of compiles than gcc Supports link-time optimization (gold linker and libLTO) type: core Sunday, September 11, 2011
  • 10. MetaWriters Metadata collected during image rendering (in same pass). Can be output as GeoJSON or streamed using mapnik::memory_datasource Hermann / GSOC project type: vector output Sunday, September 11, 2011
  • 11. grid_renderer Highly 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 output Sunday, September 11, 2011
  • 12. MemoryDatasource Dynamic, direct in-memory creation to render from http/json (think couchdb) type: datasources Sunday, September 11, 2011
  • 13. Other new Plugins rasterlite (wavelets in sqlite) mongodb (experimental: github/ springmeyer) type: datasources Sunday, September 11, 2011
  • 14. Postgres pool Fixed to allow fuller utilization and benefit of pg connections between many threads type: datasources Sunday, September 11, 2011
  • 15. Shapefile mmap Ultra fast shared memory-mapped region cache - > 5x faster i/o Artem / FOSS4G “WMS Shootout” type: datasources Sunday, September 11, 2011
  • 16. SQLite * rtree indexes * shared cache * fast, lock free access between threads (Almost as fast as shapefiles now in mapnik) type: datasources Sunday, September 11, 2011
  • 17. 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 encoding Sunday, September 11, 2011
  • 18. Filter-mode=first Option on <Style /> to break after first rule match Critical for CSS support and avoiding combinatorial explosion type: styling Sunday, September 11, 2011
  • 19. Feature Caching Option on Layer: <Layer feature-caching=”true”/> Allows re-use of features within layer with multiple styles (road-casing) type: styling Sunday, September 11, 2011
  • 20. Expressions framework for runtime evaluation of styling properties <PolygonSymbolizer color=”[field]” /> type: styling Sunday, September 11, 2011
  • 21. Raster Colorizer framework 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: styling Sunday, September 11, 2011
  • 22. Carto New CSS language/parser (js, C++) Inherits features of less.js (variables,nested styles,mixins) type: styling Sunday, September 11, 2011
  • 23. SVG Support SVG rendering of icons Gradients, transforms (rotate/scale/shear) http://developmentseed.org/ type: styling Sunday, September 11, 2011
  • 24. Mapnik 2 release • Next week, more than a year in process • Try now: sudo add-apt-repository ppa:mapnik/nightly-trunk sudo apt-get update sudo apt-get install libmapnik2 libmapnik2-dev mapnik2-utils • Learn more: http://trac.mapnik.org/ milestone/Mapnik%202.0 Sunday, September 11, 2011
  • 25. Thank you! Dane Springmeyer twitter/springmeyer github/springmeyer Sunday, September 11, 2011