Weitere ähnliche Inhalte Ähnlich wie Mapnik: Introduzione al software libero per la rappresentazione di dati geografici Ähnlich wie Mapnik: Introduzione al software libero per la rappresentazione di dati geografici (20) Mehr von luca delucchi (19) Kürzlich hochgeladen (20) Mapnik: Introduzione al software libero per la rappresentazione di dati geografici2. 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] >= 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] >= 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
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