introduzione a mapnik
play

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


  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

Recommend


More recommend