SlideShare a Scribd company logo
1 of 25
Download to read offline
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

Community Code: Xero
Community Code: XeroCommunity Code: Xero
Community Code: XeroSencha
 
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 DesignDATAVERSITY
 
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 Gridssoft-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 perspectiveMax 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 heavenPatrick 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 NichollsSencha
 
Conquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSConquistando el Servidor con Node.JS
Conquistando el Servidor con Node.JSCaridy Patino
 
TorqueBox - When Java meets Ruby
TorqueBox - When Java meets RubyTorqueBox - When Java meets Ruby
TorqueBox - When Java meets RubyBruno Oliveira
 
Cloudcamp Athens 2011 Presenting Heroku
Cloudcamp Athens 2011 Presenting HerokuCloudcamp Athens 2011 Presenting Heroku
Cloudcamp Athens 2011 Presenting HerokuSavvas Georgiou
 
Your first rails app - 2
 Your first rails app - 2 Your first rails app - 2
Your first rails app - 2Blazing 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 RubyBruno 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_manyBlazing 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 AppearancesSencha
 
Rcos presentation
Rcos presentationRcos presentation
Rcos presentationmskmoorthy
 
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 PearceSencha
 
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.0James Thomas
 
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 libraryPETER 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 2019Development Seed
 
Fast Map Interaction without Flash
Fast Map Interaction without FlashFast Map Interaction without Flash
Fast Map Interaction without FlashDevelopment 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 TileMillDevelopment Seed
 
ReliefWeb Drupal 7 Build Plan
ReliefWeb Drupal 7 Build PlanReliefWeb Drupal 7 Build Plan
ReliefWeb Drupal 7 Build PlanDevelopment 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 ConfigurationDevelopment Seed
 
Offline Mapping: International Crisis
Offline Mapping: International CrisisOffline Mapping: International Crisis
Offline Mapping: International CrisisDevelopment 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 allDevelopment Seed
 
Backstage with Drupal localization- Part 2
Backstage with Drupal localization- Part 2Backstage with Drupal localization- Part 2
Backstage with Drupal localization- Part 2Development Seed
 
For every site a make file
For every site a make fileFor every site a make file
For every site a make fileDevelopment 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 feedsDevelopment 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
 

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

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsRizwan Syed
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 

Recently uploaded (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Scanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL CertsScanning the Internet for External Cloud Exposures via SSL Certs
Scanning the Internet for External Cloud Exposures via SSL Certs
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 

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