SlideShare a Scribd company logo
INTRODUZIONE A MAPNIK




Luca Delucchi       OSMit 2009
Mapnik è un software libero per la
rappresentazione di dati geografici


              Permette la realizzazione di
            immagini singole oppure di tile
             per la pubblicazione sul web

             Multipiattaforma
        Linux - Mac OS X - Windows




Luca Delucchi                     OSMit 2009
Scritto in C++ con python
                 bindings che facilitano
                         l'utilizzo

 Utilizza standard OGC,
  librerie GDAL/OGR,
     proj, agg e cairo

                Utilizza l'algoritmo di Painter
                      per determinare l'ordine
                                degli elementi




Luca Delucchi                       OSMit 2009
Utilizzo



Script per il rendering:   Regole per gli stili:

- per le immagini          - file XML

- per le tile              - python

                           - c++




Luca Delucchi                           OSMit 2009
Stampa: png
#!/usr/bin/python

from mapnik import *
import cairo

mapfile = "progetto.xml"
map_output= 'prova_dim.png'
m = Map(1192, 840)
projection = '+proj=latlong +datum=WGS84'
load_map(m, mapfile)
bbox = Envelope(Coord(9.04311180114746,
45.7490234375), Coord(12.0447950363159,
47.1829261779785))
m.zoom_to_box(bbox)
render_to_file(m, map_output, 'png')



Luca Delucchi                               OSMit 2009
Stampa: png
#!/usr/bin/python

from mapnik import *
import cairo

mapfile = 'progetto.xml'
map_output = 'mapfile.pdf'
projection = '+proj=latlong +datum=WGS84'
m = Map(1192, 840)
load_map(m, mapfile)
bbox = Envelope(9.470383644104, 43.2393798828125,
12.4720678329468, 44.673282623291)
mapnik_map.zoom_to_box(bbox)
file = open(map_output, 'wb')
surface = cairo.PDFSurface(file.name, m.width, m.height)
render(m, surface)
surface.finish()

Luca Delucchi                                  OSMit 2009
File XML: map



<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE Map>
<Map bgcolor="#b5d0d0" srs="+proj=merc +a=6378137
+b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0
+k=1.0 +units=m +nadgrids=@null +no_defs +over">

.................................................................................................
.................................................................................................
.................................................................................................

</Map>




 Luca Delucchi                                                                OSMit 2009
File XML: raster layer
<Layer name="dem" status="on">
   <StyleName>raster</StyleName>
   <Datasource>
     <Parameter name="type">gdal</Parameter>
     <Parameter name="file">/path/al/file/</Parameter>
     <Parameter name="format">tiff</Parameter>
   </Datasource>
</Layer>

  <Datasource>
    <Parameter    name="type">raster</Parameter>
    <Parameter    name="file">/path/file.tiff</Parameter>
    <Parameter    name="format">tiff</Parameter>
    <Parameter    name="lox">5.0</Parameter>
    <Parameter    name="loy">35.0</Parameter>
    <Parameter    name="hix">20.0</Parameter>
    <Parameter    name="hiy">50.0</Parameter>
  </Datasource>

 Luca Delucchi                                 OSMit 2009
File XML: postgis layer

<Layer name="misc_boundaries" status="on"
srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0
+lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m
+nadgrids=@null +no_defs +over">
  <StyleName>boundary</StyleName>
  <Datasource>
    <Parameter name="type">postgis</Parameter>
    <Parameter name="user">utente</Parameter>
    <Parameter name="dbname">italy</Parameter>
    <Parameter name="password">****</Parameter>
    <Parameter name="table">(select * from italy_line) as
     road </Parameter>
    <Parameter name="estimate_extent">...</Parameter>
    <Parameter name="extent">833337,5432307,
   1119564,5572109</Parameter>
  </Datasource>
</Layer>
 Luca Delucchi                              OSMit 2009
File XML: shape layer




<Layer name="coast-poly" status="on" srs="+proj=merc
+a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0
+y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over">
  <StyleName>coast-poly</StyleName>
  <Datasource>
   <Parameter name="type">shape</Parameter>
   <Parameter name="file">/path/al/file/</Parameter>
  </Datasource>
</Layer>




 Luca Delucchi                              OSMit 2009
File XML: point style

<Style name="amenity">
   <Rule>
  <Filter>[tourism]='viewpoint'</Filter>
     <PointSymbolizer file="/path/file" type="png"
      width="16" height="16" allow_overlap="true"/>
   </Rule>
</Style>

<Style name="amenity">
   <Rule>
  <Filter>[tourism]='viewpoint'</Filter>
     <PointSymbolizer width="16" height="16"
      opacity=”0.5” allow_overlap="true"/>
   </Rule>
</Style>

Luca Delucchi                             OSMit 2009
File XML: line style
<Style>
  <Rule>
      <Filter>[highway] = 'motorway'</Filter>
      <LineSymbolizer>
         <CssParameter name="stroke">
         #666666</CssParameter>
         <CssParameter name="stroke-width">
         5</CssParameter>
         <CssParameter name="stroke-dasharray">
         8 - 3</CssParameter>
         <CssParameter name="stroke-linejoin">
         round</CssParameter>
         <CssParameter name="stroke-opacity">
         0.7</CssParameter>
      </LineSymbolizer>
  </Rule>
</Style>

Luca Delucchi                          OSMit 2009
File XML: line style



<Style name="aerialways">
   <Rule>
      <Filter>[aerialway] = 'cable_car'</Filter>
      <LinePatternSymbolizer width="16" height="16"
      type="png" file="/path/to/icon.png"/>
   </Rule>
</Style>




Luca Delucchi                              OSMit 2009
File XML: polygon style
<Style name="world">
   <Rule>
      <Filter>[na2] = 'IT'</Filter>
      <PolygonSymbolizer>
         <CssParameter name="fill">white</CssParameter>
         <CssParameter name="fill-opacity">
         0.8</CssParameter>
      </PolygonSymbolizer>
   </Rule>
</Style>

<Style name="world">
   <Rule>
      <Filter>[na2] = 'IT'</Filter>
      <PolygonPatternSymbolizer width="16" height="16"
      type="png" file="/path/to/icon.png"/>
   </Rule>
</Style>

Luca Delucchi                              OSMit 2009
File XML: building style



<Style name=”building”>
   <BuildingSymbolizer>
     <CssParameter name="fill">#000000</CssParameter>
     <CssParameter name="fill-opacity">1</CssParameter>
     <CssParameter name="height">8</CssParameter>
   </BuildingSymbolizer>
</Style>




Luca Delucchi                              OSMit 2009
File XML: text & shield style
<Style name="autostrade_name">
  <Rule>
      <Filter>[highway] = 'motorway'</Filter>
      <ShieldSymbolizer name="ref" face_name="DejaVu
      Sans Bold" size="7" fill="#000000" placement="line"
      file="/path/file" type="png" width="17" height="17"
      spacing="100" min_distance="150"/>
  </Rule>
</Style>
<Style>
  <Rule>
    <Filter>[popolazione] &gt;= 100000</Filter>
    <TextSymbolizer name="toponimo" face_name=
  "DejaVu Sans Book" size="15" fill="#000000"
  halo_radius="2" allow_overlap="true"/>
  </Rule>
</Style>
Luca Delucchi                               OSMit 2009
File XML: scaledenom style


<Style name="autostrade_name">
  <Rule>
      <Filter>[highway] = 'motorway'</Filter>
      <MaxScaleDenominator>10000000
      </MaxScaleDenominator>
      <MinScaleDenominator>2000000
      </MinScaleDenominator>
      <ShieldSymbolizer name="ref" face_name="DejaVu
      Sans Bold" size="7" fill="#000000" placement="line"
      file="/path/file" type="png" width="17" height="17"
      spacing="100" min_distance="150"/>
  </Rule>
</Style>



Luca Delucchi                                 OSMit 2009
File XML: filter style

<Filter>[highway] = 'primary'</Filter>

<Filter>[popolazione] &gt;= 30000 and [popolazione] &lt;
100000</Filter>

<Filter>([highway] = 'primary' or [highway] = 'primary_link'
or [highway] = 'trunk' or [highway] = 'trunk_link') and not
([tunnel] = 'yes' or [tunnel] = 'true' or [tunnel] = '1')</Filter>




Luca Delucchi                                      OSMit 2009
File XML: raster style




<Style name="raster">
  <Rule>
      <RasterSymbolizer>
      </RasterSymbolizer>
  </Rule>
</Style>




Luca Delucchi                         OSMit 2009
This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.5 Italy License.
 To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/it/ or send a letter to
        Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.

 Luca Delucchi                                                                        OSMit 2009

More Related Content

Similar to Osmit2009 Mapnik

02 create first-map
02 create first-map02 create first-map
02 create first-map
Sébastien Deleuze
 
State of the Art Web Mapping with Open Source
State of the Art Web Mapping with Open SourceState of the Art Web Mapping with Open Source
State of the Art Web Mapping with Open Source
OSCON Byrum
 
Microsoft Accademic Cloud Tour Genova
Microsoft Accademic Cloud Tour GenovaMicrosoft Accademic Cloud Tour Genova
Microsoft Accademic Cloud Tour Genova
antimo musone
 
Automating Your Workflow with Gulp.js - php[world] 2016
Automating Your Workflow with Gulp.js - php[world] 2016Automating Your Workflow with Gulp.js - php[world] 2016
Automating Your Workflow with Gulp.js - php[world] 2016
Colin O'Dell
 
Svcc 2013-d3
Svcc 2013-d3Svcc 2013-d3
Svcc 2013-d3
Oswald Campesato
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)
Oswald Campesato
 
Cloud Computing in Mobile
Cloud Computing in MobileCloud Computing in Mobile
Cloud Computing in Mobile
SVWB
 
The Devil and HTML5
The Devil and HTML5The Devil and HTML5
The Devil and HTML5
Myles Braithwaite
 
Repaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webRepaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares web
Pablo Garaizar
 
Simulation of urban mobility (sumo) prest
Simulation of urban mobility (sumo) prestSimulation of urban mobility (sumo) prest
Simulation of urban mobility (sumo) prest
Jaskaranpreet Singh
 
Deck: A Go Package for Presentations
Deck: A Go Package for PresentationsDeck: A Go Package for Presentations
Deck: A Go Package for Presentations
Anthony Starks
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Sadaaki HIRAI
 
WFS Tutorial OGC Interoperability Day - Toluca mexico - May 30 2013
WFS Tutorial   OGC Interoperability Day - Toluca mexico - May 30 2013WFS Tutorial   OGC Interoperability Day - Toluca mexico - May 30 2013
WFS Tutorial OGC Interoperability Day - Toluca mexico - May 30 2013
Luis Bermudez
 
QConSP 2015 - Dicas de Performance para Aplicações Web
QConSP 2015 - Dicas de Performance para Aplicações WebQConSP 2015 - Dicas de Performance para Aplicações Web
QConSP 2015 - Dicas de Performance para Aplicações Web
Fabio Akita
 
ACM Bay Area Data Mining Workshop: Pattern, PMML, Hadoop
ACM Bay Area Data Mining Workshop: Pattern, PMML, HadoopACM Bay Area Data Mining Workshop: Pattern, PMML, Hadoop
ACM Bay Area Data Mining Workshop: Pattern, PMML, Hadoop
Paco Nathan
 
Getting started with PostGIS geographic database
Getting started with PostGIS geographic databaseGetting started with PostGIS geographic database
Getting started with PostGIS geographic database
EDINA, University of Edinburgh
 
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINAGetting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
JISC GECO
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
Christopher Schmitt
 
Large Scale Log Analytics with Solr: Presented by Rafał Kuć & Radu Gheorghe, ...
Large Scale Log Analytics with Solr: Presented by Rafał Kuć & Radu Gheorghe, ...Large Scale Log Analytics with Solr: Presented by Rafał Kuć & Radu Gheorghe, ...
Large Scale Log Analytics with Solr: Presented by Rafał Kuć & Radu Gheorghe, ...
Lucidworks
 
Basic html5 and javascript
Basic html5 and javascriptBasic html5 and javascript
Basic html5 and javascript
wendy017
 

Similar to Osmit2009 Mapnik (20)

02 create first-map
02 create first-map02 create first-map
02 create first-map
 
State of the Art Web Mapping with Open Source
State of the Art Web Mapping with Open SourceState of the Art Web Mapping with Open Source
State of the Art Web Mapping with Open Source
 
Microsoft Accademic Cloud Tour Genova
Microsoft Accademic Cloud Tour GenovaMicrosoft Accademic Cloud Tour Genova
Microsoft Accademic Cloud Tour Genova
 
Automating Your Workflow with Gulp.js - php[world] 2016
Automating Your Workflow with Gulp.js - php[world] 2016Automating Your Workflow with Gulp.js - php[world] 2016
Automating Your Workflow with Gulp.js - php[world] 2016
 
Svcc 2013-d3
Svcc 2013-d3Svcc 2013-d3
Svcc 2013-d3
 
SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)SVCC 2013 D3.js Presentation (10/05/2013)
SVCC 2013 D3.js Presentation (10/05/2013)
 
Cloud Computing in Mobile
Cloud Computing in MobileCloud Computing in Mobile
Cloud Computing in Mobile
 
The Devil and HTML5
The Devil and HTML5The Devil and HTML5
The Devil and HTML5
 
Repaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares webRepaso rápido a los nuevos estándares web
Repaso rápido a los nuevos estándares web
 
Simulation of urban mobility (sumo) prest
Simulation of urban mobility (sumo) prestSimulation of urban mobility (sumo) prest
Simulation of urban mobility (sumo) prest
 
Deck: A Go Package for Presentations
Deck: A Go Package for PresentationsDeck: A Go Package for Presentations
Deck: A Go Package for Presentations
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
WFS Tutorial OGC Interoperability Day - Toluca mexico - May 30 2013
WFS Tutorial   OGC Interoperability Day - Toluca mexico - May 30 2013WFS Tutorial   OGC Interoperability Day - Toluca mexico - May 30 2013
WFS Tutorial OGC Interoperability Day - Toluca mexico - May 30 2013
 
QConSP 2015 - Dicas de Performance para Aplicações Web
QConSP 2015 - Dicas de Performance para Aplicações WebQConSP 2015 - Dicas de Performance para Aplicações Web
QConSP 2015 - Dicas de Performance para Aplicações Web
 
ACM Bay Area Data Mining Workshop: Pattern, PMML, Hadoop
ACM Bay Area Data Mining Workshop: Pattern, PMML, HadoopACM Bay Area Data Mining Workshop: Pattern, PMML, Hadoop
ACM Bay Area Data Mining Workshop: Pattern, PMML, Hadoop
 
Getting started with PostGIS geographic database
Getting started with PostGIS geographic databaseGetting started with PostGIS geographic database
Getting started with PostGIS geographic database
 
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINAGetting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
Getting Started with PostGIS geographic database - Lasma Sietinsone, EDINA
 
[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design[convergese] Adaptive Images in Responsive Web Design
[convergese] Adaptive Images in Responsive Web Design
 
Large Scale Log Analytics with Solr: Presented by Rafał Kuć & Radu Gheorghe, ...
Large Scale Log Analytics with Solr: Presented by Rafał Kuć & Radu Gheorghe, ...Large Scale Log Analytics with Solr: Presented by Rafał Kuć & Radu Gheorghe, ...
Large Scale Log Analytics with Solr: Presented by Rafał Kuć & Radu Gheorghe, ...
 
Basic html5 and javascript
Basic html5 and javascriptBasic html5 and javascript
Basic html5 and javascript
 

More from luca delucchi

OpenStreetMap @ ITIS Pininfarina
OpenStreetMap @ ITIS PininfarinaOpenStreetMap @ ITIS Pininfarina
OpenStreetMap @ ITIS Pininfarina
luca delucchi
 
Sviluppo dei software GIS verso le tecnologie cloud e l’integrazione con disp...
Sviluppo dei software GIS verso le tecnologie cloud e l’integrazione con disp...Sviluppo dei software GIS verso le tecnologie cloud e l’integrazione con disp...
Sviluppo dei software GIS verso le tecnologie cloud e l’integrazione con disp...luca delucchi
 
Strumenti e azioni utili a raccogliere dati
Strumenti e azioni utili a raccogliere dati Strumenti e azioni utili a raccogliere dati
Strumenti e azioni utili a raccogliere dati
luca delucchi
 
OpenStreetMap database e api
OpenStreetMap database e apiOpenStreetMap database e api
OpenStreetMap database e api
luca delucchi
 
OpenStreetMap android
OpenStreetMap androidOpenStreetMap android
OpenStreetMap android
luca delucchi
 
Mappare genova
Mappare genovaMappare genova
Mappare genova
luca delucchi
 
Humanitaria OpenStreetMap Team (HOT)
Humanitaria OpenStreetMap Team (HOT)Humanitaria OpenStreetMap Team (HOT)
Humanitaria OpenStreetMap Team (HOT)
luca delucchi
 
Osm research
Osm researchOsm research
Osm research
luca delucchi
 
Grass cloud
Grass cloudGrass cloud
Grass cloud
luca delucchi
 
ZOO WPS the integration with GRASS GIS
ZOO WPS the integration with GRASS GISZOO WPS the integration with GRASS GIS
ZOO WPS the integration with GRASS GIS
luca delucchi
 
Introduzione a OpenStreetMap
Introduzione a OpenStreetMapIntroduzione a OpenStreetMap
Introduzione a OpenStreetMap
luca delucchi
 
Introduzione a OpenStreetMap (book version)
Introduzione a OpenStreetMap (book version)Introduzione a OpenStreetMap (book version)
Introduzione a OpenStreetMap (book version)
luca delucchi
 
Ld2010
Ld2010Ld2010
Linuxday2008 Osm
Linuxday2008 OsmLinuxday2008 Osm
Linuxday2008 Osm
luca delucchi
 
Linuxday2008 Gis
Linuxday2008 GisLinuxday2008 Gis
Linuxday2008 Gis
luca delucchi
 
Linuxday2009 OSM
Linuxday2009 OSMLinuxday2009 OSM
Linuxday2009 OSM
luca delucchi
 
Bicitalia 2008
Bicitalia 2008Bicitalia 2008
Bicitalia 2008
luca delucchi
 
OSMit2009 GFOSS.it
OSMit2009 GFOSS.itOSMit2009 GFOSS.it
OSMit2009 GFOSS.it
luca delucchi
 

More from luca delucchi (19)

OpenStreetMap @ ITIS Pininfarina
OpenStreetMap @ ITIS PininfarinaOpenStreetMap @ ITIS Pininfarina
OpenStreetMap @ ITIS Pininfarina
 
Sviluppo dei software GIS verso le tecnologie cloud e l’integrazione con disp...
Sviluppo dei software GIS verso le tecnologie cloud e l’integrazione con disp...Sviluppo dei software GIS verso le tecnologie cloud e l’integrazione con disp...
Sviluppo dei software GIS verso le tecnologie cloud e l’integrazione con disp...
 
Strumenti e azioni utili a raccogliere dati
Strumenti e azioni utili a raccogliere dati Strumenti e azioni utili a raccogliere dati
Strumenti e azioni utili a raccogliere dati
 
OpenStreetMap database e api
OpenStreetMap database e apiOpenStreetMap database e api
OpenStreetMap database e api
 
OpenStreetMap android
OpenStreetMap androidOpenStreetMap android
OpenStreetMap android
 
Mappare genova
Mappare genovaMappare genova
Mappare genova
 
Humanitaria OpenStreetMap Team (HOT)
Humanitaria OpenStreetMap Team (HOT)Humanitaria OpenStreetMap Team (HOT)
Humanitaria OpenStreetMap Team (HOT)
 
Osm research
Osm researchOsm research
Osm research
 
Grass workshop2011
Grass workshop2011Grass workshop2011
Grass workshop2011
 
Grass cloud
Grass cloudGrass cloud
Grass cloud
 
ZOO WPS the integration with GRASS GIS
ZOO WPS the integration with GRASS GISZOO WPS the integration with GRASS GIS
ZOO WPS the integration with GRASS GIS
 
Introduzione a OpenStreetMap
Introduzione a OpenStreetMapIntroduzione a OpenStreetMap
Introduzione a OpenStreetMap
 
Introduzione a OpenStreetMap (book version)
Introduzione a OpenStreetMap (book version)Introduzione a OpenStreetMap (book version)
Introduzione a OpenStreetMap (book version)
 
Ld2010
Ld2010Ld2010
Ld2010
 
Linuxday2008 Osm
Linuxday2008 OsmLinuxday2008 Osm
Linuxday2008 Osm
 
Linuxday2008 Gis
Linuxday2008 GisLinuxday2008 Gis
Linuxday2008 Gis
 
Linuxday2009 OSM
Linuxday2009 OSMLinuxday2009 OSM
Linuxday2009 OSM
 
Bicitalia 2008
Bicitalia 2008Bicitalia 2008
Bicitalia 2008
 
OSMit2009 GFOSS.it
OSMit2009 GFOSS.itOSMit2009 GFOSS.it
OSMit2009 GFOSS.it
 

Recently uploaded

Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
Tosin Akinosho
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Safe Software
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
tolgahangng
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
flufftailshop
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
Hiroshi SHIBATA
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
panagenda
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
saastr
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
Intelisync
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
Jason Packer
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Alpen-Adria-Universität
 
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
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
GDSC PJATK
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Jeffrey Haguewood
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
Zilliz
 
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
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
Shinana2
 
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
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
Pravash Chandra Das
 

Recently uploaded (20)

Monitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdfMonitoring and Managing Anomaly Detection on OpenShift.pdf
Monitoring and Managing Anomaly Detection on OpenShift.pdf
 
Driving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success StoryDriving Business Innovation: Latest Generative AI Advancements & Success Story
Driving Business Innovation: Latest Generative AI Advancements & Success Story
 
Serial Arm Control in Real Time Presentation
Serial Arm Control in Real Time PresentationSerial Arm Control in Real Time Presentation
Serial Arm Control in Real Time Presentation
 
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdfNunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
Nunit vs XUnit vs MSTest Differences Between These Unit Testing Frameworks.pdf
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Introduction of Cybersecurity with OSS at Code Europe 2024
Introduction of Cybersecurity with OSS  at Code Europe 2024Introduction of Cybersecurity with OSS  at Code Europe 2024
Introduction of Cybersecurity with OSS at Code Europe 2024
 
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAUHCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
HCL Notes und Domino Lizenzkostenreduzierung in der Welt von DLAU
 
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
Overcoming the PLG Trap: Lessons from Canva's Head of Sales & Head of EMEA Da...
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
 
A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024A Comprehensive Guide to DeFi Development Services in 2024
A Comprehensive Guide to DeFi Development Services in 2024
 
Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024Columbus Data & Analytics Wednesdays - June 2024
Columbus Data & Analytics Wednesdays - June 2024
 
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing InstancesEnergy Efficient Video Encoding for Cloud and Edge Computing Instances
Energy Efficient Video Encoding for Cloud and Edge Computing Instances
 
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
 
Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!Finale of the Year: Apply for Next One!
Finale of the Year: Apply for Next One!
 
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
Letter and Document Automation for Bonterra Impact Management (fka Social Sol...
 
Programming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup SlidesProgramming Foundation Models with DSPy - Meetup Slides
Programming Foundation Models with DSPy - Meetup Slides
 
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
 
dbms calicut university B. sc Cs 4th sem.pdf
dbms  calicut university B. sc Cs 4th sem.pdfdbms  calicut university B. sc Cs 4th sem.pdf
dbms calicut university B. sc Cs 4th sem.pdf
 
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
 
Operating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptxOperating System Used by Users in day-to-day life.pptx
Operating System Used by Users in day-to-day life.pptx
 

Osmit2009 Mapnik

  • 1. INTRODUZIONE A MAPNIK Luca Delucchi OSMit 2009
  • 2. Mapnik è un software libero per la rappresentazione di dati geografici Permette la realizzazione di immagini singole oppure di tile per la pubblicazione sul web Multipiattaforma Linux - Mac OS X - Windows Luca Delucchi OSMit 2009
  • 3. Scritto in C++ con python bindings che facilitano l'utilizzo Utilizza standard OGC, librerie GDAL/OGR, proj, agg e cairo Utilizza l'algoritmo di Painter per determinare l'ordine degli elementi Luca Delucchi OSMit 2009
  • 4. Utilizzo Script per il rendering: Regole per gli stili: - per le immagini - file XML - per le tile - python - c++ Luca Delucchi OSMit 2009
  • 5. Stampa: png #!/usr/bin/python from mapnik import * import cairo mapfile = "progetto.xml" map_output= 'prova_dim.png' m = Map(1192, 840) projection = '+proj=latlong +datum=WGS84' load_map(m, mapfile) bbox = Envelope(Coord(9.04311180114746, 45.7490234375), Coord(12.0447950363159, 47.1829261779785)) m.zoom_to_box(bbox) render_to_file(m, map_output, 'png') Luca Delucchi OSMit 2009
  • 6. Stampa: png #!/usr/bin/python from mapnik import * import cairo mapfile = 'progetto.xml' map_output = 'mapfile.pdf' projection = '+proj=latlong +datum=WGS84' m = Map(1192, 840) load_map(m, mapfile) bbox = Envelope(9.470383644104, 43.2393798828125, 12.4720678329468, 44.673282623291) mapnik_map.zoom_to_box(bbox) file = open(map_output, 'wb') surface = cairo.PDFSurface(file.name, m.width, m.height) render(m, surface) surface.finish() Luca Delucchi OSMit 2009
  • 7. File XML: map <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE Map> <Map bgcolor="#b5d0d0" srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over"> ................................................................................................. ................................................................................................. ................................................................................................. </Map> Luca Delucchi OSMit 2009
  • 8. File XML: raster layer <Layer name="dem" status="on"> <StyleName>raster</StyleName> <Datasource> <Parameter name="type">gdal</Parameter> <Parameter name="file">/path/al/file/</Parameter> <Parameter name="format">tiff</Parameter> </Datasource> </Layer> <Datasource> <Parameter name="type">raster</Parameter> <Parameter name="file">/path/file.tiff</Parameter> <Parameter name="format">tiff</Parameter> <Parameter name="lox">5.0</Parameter> <Parameter name="loy">35.0</Parameter> <Parameter name="hix">20.0</Parameter> <Parameter name="hiy">50.0</Parameter> </Datasource> Luca Delucchi OSMit 2009
  • 9. File XML: postgis layer <Layer name="misc_boundaries" status="on" srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over"> <StyleName>boundary</StyleName> <Datasource> <Parameter name="type">postgis</Parameter> <Parameter name="user">utente</Parameter> <Parameter name="dbname">italy</Parameter> <Parameter name="password">****</Parameter> <Parameter name="table">(select * from italy_line) as road </Parameter> <Parameter name="estimate_extent">...</Parameter> <Parameter name="extent">833337,5432307, 1119564,5572109</Parameter> </Datasource> </Layer> Luca Delucchi OSMit 2009
  • 10. File XML: shape layer <Layer name="coast-poly" status="on" srs="+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs +over"> <StyleName>coast-poly</StyleName> <Datasource> <Parameter name="type">shape</Parameter> <Parameter name="file">/path/al/file/</Parameter> </Datasource> </Layer> Luca Delucchi OSMit 2009
  • 11. File XML: point style <Style name="amenity"> <Rule> <Filter>[tourism]='viewpoint'</Filter> <PointSymbolizer file="/path/file" type="png" width="16" height="16" allow_overlap="true"/> </Rule> </Style> <Style name="amenity"> <Rule> <Filter>[tourism]='viewpoint'</Filter> <PointSymbolizer width="16" height="16" opacity=”0.5” allow_overlap="true"/> </Rule> </Style> Luca Delucchi OSMit 2009
  • 12. File XML: line style <Style> <Rule> <Filter>[highway] = 'motorway'</Filter> <LineSymbolizer> <CssParameter name="stroke"> #666666</CssParameter> <CssParameter name="stroke-width"> 5</CssParameter> <CssParameter name="stroke-dasharray"> 8 - 3</CssParameter> <CssParameter name="stroke-linejoin"> round</CssParameter> <CssParameter name="stroke-opacity"> 0.7</CssParameter> </LineSymbolizer> </Rule> </Style> Luca Delucchi OSMit 2009
  • 13. File XML: line style <Style name="aerialways"> <Rule> <Filter>[aerialway] = 'cable_car'</Filter> <LinePatternSymbolizer width="16" height="16" type="png" file="/path/to/icon.png"/> </Rule> </Style> Luca Delucchi OSMit 2009
  • 14. File XML: polygon style <Style name="world"> <Rule> <Filter>[na2] = 'IT'</Filter> <PolygonSymbolizer> <CssParameter name="fill">white</CssParameter> <CssParameter name="fill-opacity"> 0.8</CssParameter> </PolygonSymbolizer> </Rule> </Style> <Style name="world"> <Rule> <Filter>[na2] = 'IT'</Filter> <PolygonPatternSymbolizer width="16" height="16" type="png" file="/path/to/icon.png"/> </Rule> </Style> Luca Delucchi OSMit 2009
  • 15. File XML: building style <Style name=”building”> <BuildingSymbolizer> <CssParameter name="fill">#000000</CssParameter> <CssParameter name="fill-opacity">1</CssParameter> <CssParameter name="height">8</CssParameter> </BuildingSymbolizer> </Style> Luca Delucchi OSMit 2009
  • 16. File XML: text & shield style <Style name="autostrade_name"> <Rule> <Filter>[highway] = 'motorway'</Filter> <ShieldSymbolizer name="ref" face_name="DejaVu Sans Bold" size="7" fill="#000000" placement="line" file="/path/file" type="png" width="17" height="17" spacing="100" min_distance="150"/> </Rule> </Style> <Style> <Rule> <Filter>[popolazione] &gt;= 100000</Filter> <TextSymbolizer name="toponimo" face_name= "DejaVu Sans Book" size="15" fill="#000000" halo_radius="2" allow_overlap="true"/> </Rule> </Style> Luca Delucchi OSMit 2009
  • 17. File XML: scaledenom style <Style name="autostrade_name"> <Rule> <Filter>[highway] = 'motorway'</Filter> <MaxScaleDenominator>10000000 </MaxScaleDenominator> <MinScaleDenominator>2000000 </MinScaleDenominator> <ShieldSymbolizer name="ref" face_name="DejaVu Sans Bold" size="7" fill="#000000" placement="line" file="/path/file" type="png" width="17" height="17" spacing="100" min_distance="150"/> </Rule> </Style> Luca Delucchi OSMit 2009
  • 18. File XML: filter style <Filter>[highway] = 'primary'</Filter> <Filter>[popolazione] &gt;= 30000 and [popolazione] &lt; 100000</Filter> <Filter>([highway] = 'primary' or [highway] = 'primary_link' or [highway] = 'trunk' or [highway] = 'trunk_link') and not ([tunnel] = 'yes' or [tunnel] = 'true' or [tunnel] = '1')</Filter> Luca Delucchi OSMit 2009
  • 19. File XML: raster style <Style name="raster"> <Rule> <RasterSymbolizer> </RasterSymbolizer> </Rule> </Style> Luca Delucchi OSMit 2009
  • 20. This work is licensed under the Creative Commons Attribution-Noncommercial-Share Alike 2.5 Italy License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/it/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. Luca Delucchi OSMit 2009