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
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] >= 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] >= 30000 and [popolazione] < 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
Recommend
More recommend
Explore More Topics
Stay informed with curated content and fresh updates.