INTRODUZIONE A MAPNIK Luca Delucchi OSMit 2009 Mapnik un software - - PowerPoint PPT Presentation

introduzione a mapnik
SMART_READER_LITE
LIVE PREVIEW

INTRODUZIONE A MAPNIK Luca Delucchi OSMit 2009 Mapnik un software - - PowerPoint PPT Presentation

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


slide-1
SLIDE 1

Luca Delucchi OSMit 2009

INTRODUZIONE A MAPNIK

slide-2
SLIDE 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

Luca Delucchi OSMit 2009

Multipiattaforma Linux - Mac OS X - Windows

slide-3
SLIDE 3

Scritto in C++ con python bindings che facilitano l'utilizzo Utilizza standard OGC, librerie GDAL/OGR, proj, agg e cairo

Luca Delucchi OSMit 2009

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

slide-4
SLIDE 4

Utilizzo Script per il rendering:

  • per le immagini
  • per le tile

Regole per gli stili:

  • file XML
  • python
  • c++

Luca Delucchi OSMit 2009

slide-5
SLIDE 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

slide-6
SLIDE 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

slide-7
SLIDE 7

<?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>

File XML: map

Luca Delucchi OSMit 2009

slide-8
SLIDE 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

slide-9
SLIDE 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

slide-10
SLIDE 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

slide-11
SLIDE 11

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

File XML: point style

Luca Delucchi OSMit 2009

<Style name="amenity"> <Rule> <Filter>[tourism]='viewpoint'</Filter> <PointSymbolizer width="16" height="16"

  • pacity=”0.5” allow_overlap="true"/>

</Rule> </Style>

slide-12
SLIDE 12

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

File XML: line style

Luca Delucchi OSMit 2009

slide-13
SLIDE 13

File XML: line style

Luca Delucchi OSMit 2009

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

slide-14
SLIDE 14

<Style name="world"> <Rule> <Filter>[na2] = 'IT'</Filter> <PolygonSymbolizer> <CssParameter name="fill">white</CssParameter> <CssParameter name="fill-opacity"> 0.8</CssParameter> </PolygonSymbolizer> </Rule> </Style>

File XML: polygon style

Luca Delucchi OSMit 2009

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

slide-15
SLIDE 15

File XML: building style

Luca Delucchi OSMit 2009

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

slide-16
SLIDE 16

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

File XML: text & shield style

Luca Delucchi OSMit 2009

slide-17
SLIDE 17

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

File XML: scaledenom style

Luca Delucchi OSMit 2009

slide-18
SLIDE 18

File XML: filter style

Luca Delucchi OSMit 2009

<Filter>[highway] = 'primary'</Filter> <Filter>[popolazione] &gt;= 30000 and [popolazione] &lt; 100000</Filter> <Filter>([highway] = 'primary' or [highway] = 'primary_link'

  • r [highway] = 'trunk' or [highway] = 'trunk_link') and not

([tunnel] = 'yes' or [tunnel] = 'true' or [tunnel] = '1')</Filter>

slide-19
SLIDE 19

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

File XML: raster style

Luca Delucchi OSMit 2009

slide-20
SLIDE 20

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.