SlideShare une entreprise Scribd logo
1  sur  20
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à Mapnik: Introduzione al software libero per la rappresentazione di dati geografici

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 SourceOSCON Byrum
 
Microsoft Accademic Cloud Tour Genova
Microsoft Accademic Cloud Tour GenovaMicrosoft Accademic Cloud Tour Genova
Microsoft Accademic Cloud Tour Genovaantimo 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] 2016Colin O'Dell
 
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 MobileSVWB
 
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 webPablo Garaizar
 
Simulation of urban mobility (sumo) prest
Simulation of urban mobility (sumo) prestSimulation of urban mobility (sumo) prest
Simulation of urban mobility (sumo) prestJaskaranpreet Singh
 
Deck: A Go Package for Presentations
Deck: A Go Package for PresentationsDeck: A Go Package for Presentations
Deck: A Go Package for PresentationsAnthony Starks
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Sadaaki 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 2013Luis 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 WebFabio 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, HadoopPaco Nathan
 
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, EDINAJISC 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 DesignChristopher 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 javascriptwendy017
 

Similaire à Mapnik: Introduzione al software libero per la rappresentazione di dati geografici (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
 

Plus de luca delucchi

OpenStreetMap @ ITIS Pininfarina
OpenStreetMap @ ITIS PininfarinaOpenStreetMap @ ITIS Pininfarina
OpenStreetMap @ ITIS Pininfarinaluca 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 apiluca delucchi
 
OpenStreetMap android
OpenStreetMap androidOpenStreetMap android
OpenStreetMap androidluca delucchi
 
Humanitaria OpenStreetMap Team (HOT)
Humanitaria OpenStreetMap Team (HOT)Humanitaria OpenStreetMap Team (HOT)
Humanitaria OpenStreetMap Team (HOT)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 GISluca delucchi
 
Introduzione a OpenStreetMap
Introduzione a OpenStreetMapIntroduzione a OpenStreetMap
Introduzione a OpenStreetMapluca delucchi
 
Introduzione a OpenStreetMap (book version)
Introduzione a OpenStreetMap (book version)Introduzione a OpenStreetMap (book version)
Introduzione a OpenStreetMap (book version)luca delucchi
 

Plus de 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
 

Dernier

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
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
 
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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
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
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 

Dernier (20)

Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
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!
 
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
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
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)
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 

Mapnik: Introduzione al software libero per la rappresentazione di dati geografici

  • 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