Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien...

45
1 Mapnik Eine Werkzeugsammlung für die Ableitung von Webkarten aus GIS-Daten Peter Kunz Bundesamt für Kartographie und Geodäsie

Transcript of Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien...

Page 1: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

1

Mapnik Eine Werkzeugsammlung für die Ableitung

von Webkarten aus GIS-Daten

Peter Kunz

Bundesamt für Kartographie und Geodäsie

Page 2: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

2

Workshop

Erste Schritte mit Mapnik

OSM-Daten vorbereiten

Postgis-DB erzeugen

OSM-Daten in Postgis-DB importieren und für das Rendern

mit Mapnik vorbereiten

Mit GDAL Schummerung und Höhenlinien berechnen

OSM-Karte rendern

Lokales Kachelarchiv rendern

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 3: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

3

Mapnik

Bibliothek für das Rendern von Karten

Bekannteste Anwendung:

Hauptkarte (Slippy Map) von Open Street Map (OSM)

Freie Software (Open Source)

Anwendung

− Web-Server = Rendern bei Request

− Desktop = Vorprozessieren von Kacheln

C++ und Python API

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 4: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

4

Wozu Mapnik?

Nur bedingt geeignet für die Herstellung

herkömmlicher Einzelkarten für den Druck

Hervorragend geeignet für das

Rendern von Kacheln für einen WMTS

Page 5: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

5

WMTS mit Kacheln 256 x 256 Pixel

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

256 Pixel

25

6 P

ixe

l

Page 6: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

6

Warum gerade Mapnik?

Plattformen PC, Mac, Unix/Linux

Konzept Saubere Trennung von

» Programmierlogik,

» Datenhaltung und

» Kartenaufbau/-gestaltung

Ergebnisse Sehr gute grafische Qualität

Robust Erprobt bei Massendaten

Schnell BRD ca. 14 Tage alle Zoomstufen

Skalierbar Rendern kann auf mehrere Prozesse/

Rechner verteilt werden

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 7: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

7

Mapnik Datenformate Ein- und Ausgabe

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Ausgabe

AGG-Renderer

PNG 8, 24 und 32 bit/Pixel

JPEG 24 bit/Pixel

TIFF

Cairo-Renderer

SVG

PDF

PS

Datenquellen

PostGIS-Datenbanken

ESRI Shapefiles

TIFF Rasterdaten

OSM XML

alle OGR-Vektorformate !!

alle GDAL-Rasterformate !!

Page 8: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

8

MAPNIK

Mapnik erzeugt Karten

Postgis

DB1

Postgis

DB2

Shapedatei

Ausgangsdaten Zieldaten

Einzelne Karte

Kachelarchiv Programmierschnittstelle

C++

Python

MAPNIK

Rasterdaten

Page 9: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

9

Die wichtigsten Mapnik-Objekte

Map Die Karte

Layer Ein Karte/Map enthält mehrere Layer. Dort wird die

Datenherkunft beschrieben

Style Ein Layer verweist auf die jeweilige Kartengestaltung

Rule Jedes Styleelement enthält mehrere Regeln

Filter Eine Regel gilt ggf. nur für bestimmte Objekte

Scaledenominatoren Jeder Regel gilt nur für einen oder für

mehrere Maßstäbe

Symbolizern In den Regeln werden die eigentlichen

Zeichenanweisungen mithilfe von Symbolizern beschrieben

Page 10: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

10

Definition des Kartenaufbaus

im Pythonskript

Pythonskript

Hier erfolgt Festlegung

- der Datenquellen

- des Kartenaufbaus

- der Grafikstile / Kartengestaltung und

- der Programmierlogik für die Erzeugung der Tiles

Daten Programmlogik UND Gestaltung

Rein programmatisch in C++ bzw. Python

Page 11: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

11

Reiner Python-Code

für das Rednern einer Karte

# -*- coding: latin-1 -*-

# Import der Mapnik Python bindings

import mapnik2 as mapnik

# Karten-Objekt anlegen

m = mapnik.Map(900,450)

m.background = mapnik.Color('steelblue')

# Style erzeugen

s = mapnik.Style()

# Rule erzeugen

r = mapnik.Rule()

polygon_symbolizer = mapnik.PolygonSymbolizer(mapnik.Color(r=255,g=231,b=88))

r.symbols.append(polygon_symbolizer) # Symbolizer dem Rule-Objekt hinzufügen

line_symbolizer = mapnik.LineSymbolizer(mapnik.Color('rgb(50%,50%,50%)'),0.1)

r.symbols.append(line_symbolizer) # Symbolizer dem Rule-Objekt hinzufügen

s.rules.append(r) # Rule dem Style hinzufügen

m.append_style('My Style',s) # Style der Map hinzufügen

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 12: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

12

Reiner Python-Code

für das Rednern einer Karte

# Layer erzeugen

layer = mapnik.Layer('world')

# Datenquelle

ds = mapnik.Shapefile(file='ne_110m_admin_0_countries.shp')

# dem Layer die Datenquelle hinzufügen

layer.datasource = ds

# Style anwenden auf Layer

layer.styles.append('My Style')

# Layer der Karte hinzufügen

m.layers.append(layer)

# Zoom auf die BBox des Layers

m.zoom_all()

# Karte rendern

mapnik.render_to_file(m,'world.png', 'png')

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Ü5

Page 13: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

13

Definition des Kartenaufbaus

in einem Mapfile

Pythonskript

zum Rendern der Karte

Mapfile mit

- Datenquellen

- Kartenaufbau

- Kartengestaltung

- ggf. Verweis auf weitere

ausgelagerte Dokumente

Daten Programmlogik Gestaltung

z.B. generate_image,py z.B. osm.xml und alle *.inc

Page 14: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

14

Pythonskripte zum Starten des

eigentlichen Renderns

generate_image.py

erzeugt ein einzelnes Bild

entsprechend der

Kartendefinition (Stylesheet)

und des gewünschten

räumlichen Ausschnitts

(Bounding Box)

generate_tiles.py

ist vergleichbar, erzeugt aber

ein Kachelarchiv für den

Webserver in den

gewünschten Zoomstufen

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 15: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

15

Pythonskript mit Verweis auf Mapfile

import mapnik2

m = mapnik2.Map(1000,1000)

kartenaufbau = '/usr/local/share/mapnik/karte.xml'

mapnik2.load_map(m, kartenaufbau)

bbox=mapnik2.Box2d(620512, 5786283, 626050, 5791821)

m.zoom_to_box(bbox)

mapnik2.render_to_file(m,'/home/user/GIS/Uebung_01/karte.png')

Page 16: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

Mapfile Meine_Karte.XML

<?xml version="1.0" encoding="utf-

8"?>

<!DOCTYPE Map [

<!ENTITY % entities SYSTEM

"inc/entities.xml.inc">

%entities;

]>

<Map

bgcolor="&farbe_hintergrund;"

srs="+proj=utm +zone=32 +ellps=WGS84

+datum=WGS84 +units=m +no_defs"

minimum_version="0.7.1">

&fontset-settings;

<!-- *********************** -->

&layer-landbedeckung;

&layer-hoehenlinien;

&layer-schummerung;

&layer-gewaesser;

&landuse-overlay;

&layer-water_features;

&layer-tunnel;

&layer-buildings;

&layer-highway-area-casing;

&layer-strassen-kontur;

&layer-strassen-fuellung;

&landuse-overlay-nsg;

&layer-ferry-routes;

&layer-aerialways;

&layer-roads;

&layer-bridges;

&layer-admin;

&layer-power;

&layer-placenames;

&layer-amenity-stations;

&layer-amenity-symbols;

&layer-amenity-points;

&highway-junctions;

&layer-river-text;

&layer-roads-text;

&layer-text;

&layer-hl-zahlen;

</Map>

Layer in der

Reihenfolge der

Darstellung

Verweis auf Entitäten

Verweis auf Fonts

Hintergrundfarbe und CRS der Karte

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 17: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Landbedeckung

Page 18: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Landbedeckung

Gewässer

Höhenlinien

Page 19: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Landbedeckung

Gewässer

Höhenlinien

Gebäude

Page 20: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Landbedeckung

Gewässer

Höhenlinien

Gebäude

Straßenkonturen

Page 21: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Landbedeckung

Gewässer

Höhenlinien

Gebäude

Straßenkonturen

Straßendecker

Page 22: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Landbedeckung

Gewässer

Höhenlinien

Gebäude

Straßenkonturen

Straßendecker

Schrift

Page 23: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Landbedeckung

Gewässer

Höhenlinien

Gebäude

Straßenkonturen

Straßendecker

Schrift

Schummerung

Page 24: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

<Layer name="buildings" status="on" srs="&osm2pgsql_projection;">

<StyleName>buildings</StyleName>

<Datasource>

<Parameter name="type">PostGIS</Parameter>

<Parameter name="host">141.74.243.77</Parameter>

<Parameter name="dbname">hausumringe3</Parameter>

<Parameter name="user">postgres</Parameter>

<Parameter name="password">kennwort</Parameter>

<Parameter name="table">hu_brd</Parameter>

<Parameter

name="extent">1092780,5985032,1129239,6021567</Parameter>

</Datasource>

</Layer>

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Extent der Kachel in der

Projektion der DB

Layername Referenzierter Stil

Datenquelle

Layer

Woher kommen die Daten?

In welchem SRS liegt Datenquelle vor?

Welche Objekte sollen ausgewählt / dargestellt werden?

Welcher Stil soll für die Darstellung verwendet werden?

Page 25: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und

Geodäsie

TextSymbolizer

ShieldSymbolizer

PolygonPatternSymbolizer

LineSymbolizer

PointSymbolizer RasterSymbolizer

PolygonSymbolizer LinePatternSymbolizer

Page 26: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

<Style name=„Siedlung“>

<Rule>

&maxscale_zoom11;

&minscale_zoom12;

<PolygonSymbolizer>

<CssParameter name="fill">&farbe_haus12;</CssParameter>

<CssParameter name="gamma">0.7</CssParameter>

</PolygonSymbolizer>

<LineSymbolizer>

<CssParameter name="stroke">&farbe_haus12;</CssParameter>

<CssParameter name="stroke-width">0.2</CssParameter>

</LineSymbolizer>

</Rule>

</Style>

Style

Wie sollen die Objekte dargestellt werden?

In welchen Zoomstufen / Maßstabsbereichen wird ein Objekt dargestellt?

Einschränkung der Objektauswahl durch Filter

Welcher Symbolizer wird für das Zeichnen verwendet?

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Darstellung nur in Zoomstufen 8 bis 12

Polygonfüllung

Kontur des Polygons

Page 27: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

ShieldSymbolizer und PolygonPatternSymbolizer

<Rule>

<Filter>[landuse] = 'hopfen'</Filter>

&maxscale_zoom8;

&maxscale_zoom12;

<PolygonPatternSymbolizer file="&symbols;/SK25_41510kl3.png" />

</Rule>

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Symbol für Füllung

Bild für ShieldSymbolizer

<Rule>

<Filter>[highway] = 'BAB' and [length] = 3</Filter>

&maxscale_zoom15;

&minscale_zoom15;

<ShieldSymbolizer fontset-name="bold-fonts" size="20"

fill="&farbe_bab_nummer;" placement="line"

file="&symbols;/bab_shield3.png" minimum-distance="120"

spacing="800">[ref]</ShieldSymbolizer>

</Rule>

106 4

106

Page 28: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

28

Koordinatenreferenzsysteme

Falls in Pythonskript keine Angabe gilt SRS des Mapfile <Map background-color="#b5d0d0" srs="+init=epsg:4326" minimum-

version="2.0.0">

SRS des Mapfile kann in Pythonskript überschrieben werden m.srs = „+proj=utm +zone=32 +ellps=WGS84 +datum=WGS84 +units=m

+no_defs“

Jeder Layer muss auch mit den Angaben des SRS der Datenquelle ausgestattet werden

<Layer name="roads-text-name" status="on"

srs="&osm2pgsql_projection;">

<StyleName>roads-text-name</StyleName>

<Datasource>

<Parameter name="table">&prefix;_line</Parameter>

&datasource-settings;

</Datasource>

</Layer>

Page 29: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

29

Entities (sg. Enitity) deutsch Einheiten, Gebilde, um wiederkehrende

Informationseinheiten zu standardisieren

Wiederholungen im Mapfile

− Datenquellen

− Verzeichnisse für die Symbole/Icons

− Farbdefinitionen

− Maßstabsbereiche

− Koordinatenreferenzsysteme

Entities vergleichbar mit Variablen/Konstanten

Mapfile kann in mehrere handliche Dokumente unterteilt

werden.

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 30: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

30

Verweis auf eine Entität

<!ENTITY % entities SYSTEM "inc/entities.xml.inc">

%entities;

<!ENTITY % settings SYSTEM "settings.xml.inc">

%settings;

<!ENTITY datasource-settings SYSTEM "datasource-settings.xml.inc">

&datasource-settings;

<!ENTITY fontset-settings SYSTEM "fontset-settings.xml.inc">

&fontset-settings;

<!ENTITY srs900913 "+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">

&srs900913;

<!ENTITY % layers SYSTEM "layers.xml.inc">

%layers;

<!ENTITY % color-settings SYSTEM "farben.xml.inc">

%farben;

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 31: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

31

Anwendung von Entities z.B. Maßstabsbereiche und Farben

<Style name="minor-roads-fill">

<Rule>

<Filter>[highway] = 'motorway' and not [tunnel] = 'yes'</Filter>

&maxscale_zoom10;

&minscale_zoom10;

<LineSymbolizer stroke="&farbe_motorway_fuell;" stroke-width="9.5" stroke-

linejoin="round"/>

</Rule>

<Rule>

<Filter>[highway] = 'primary' and not [tunnel] = 'yes'</Filter>

&maxscale_zoom10;

&minscale_zoom10;

<LineSymbolizer stroke="&farbe_primary_fuell;" stroke-width="4.18" stroke-

linejoin="round" stroke-linecap="round"/>

</Rule>

<Rule>

<Filter>[highway] = 'secondary' and not [tunnel] = 'yes'</Filter>

&maxscale_zoom10;

&minscale_zoom10;

<LineSymbolizer stroke="&farbe_secondary_fuell" stroke-width="4.18" stroke-

linejoin="round" stroke-linecap="round"/>

</Rule>

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 32: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

32

Anwendung von Entities

z.B. Verzeichnisse, Datenquellen, SRS

<Style name="points">

<Rule>

&maxscale_zoom12;

&minscale_zoom15;

<Filter>[man_made]='schloss' or [man_made]='burg'</Filter>

<PointSymbolizer file="&symbols;/SK10_23800kl.png" allow_overlap="false"

opacity="0.8"/>

</Rule>

<Rule>

&maxscale_zoom16;

<Filter>[man_made]='schloss' or [man_made]='burg'</Filter>

<PointSymbolizer file="&symbols;/SK10_23800.png" allow_overlap="false"/>

</Rule>

</Style>

<Layer name="amenity-points" status="on" srs="&osm2pgsql_projection;">

<StyleName>points</StyleName>

<Datasource>

<Parameter name="table">

(select way,"natural“ man_made from &prefix;_point

where man_made is not null or "natural" in

('hoehleneingang','nadelbaum','laubbaum','felsblock')) as points</Parameter>

&datasource-settings;

</Datasource>

</Layer>

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 33: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

33

datasource-settings.xml.inc Wichtigste, häufig verwendete Datenquelle

<Parameter name="type">postgis</Parameter>

<Parameter name="password">xxxyyyzzz</Parameter>

<Parameter name="host">141.74.243.234</Parameter>

<Parameter name="port">5432</Parameter>

<Parameter name="user">username</Parameter>

<Parameter name="dbname">bdlm_osm</Parameter>

<Parameter name="multiple_geometries">true</Parameter>

<Parameter name="estimate_extent">false</Parameter>

<Parameter

name="extent">1192991,6835611,1213423,6856068</Parameter>

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 34: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

34

layers.xml.inc

<!ENTITY layer-shapefiles SYSTEM "layer-shapefiles.xml.inc">

<!ENTITY layer-landcover SYSTEM "layer-landcover.xml.inc">

<!ENTITY layer-water SYSTEM "layer-water.xml.inc">

<!ENTITY layer-water_features SYSTEM "layer-water_features.xml.inc">

<!ENTITY layer-buildings SYSTEM "layer-buildings.xml.inc">

<!ENTITY layer-ferry-routes SYSTEM "layer-ferry-routes.xml.inc">

<!ENTITY layer-aerialways SYSTEM "layer-aerialways.xml.inc">

<!ENTITY layer-placenames SYSTEM "layer-placenames.xml.inc">

<!ENTITY layer-amenity-stations SYSTEM "layer-amenity-stations.xml.inc">

<!ENTITY layer-amenity-symbols SYSTEM "layer-amenity-symbols.xml.inc">

<!ENTITY layer-amenity-points SYSTEM "layer-amenity-points.xml.inc">

<!ENTITY layer-power SYSTEM "layer-power.xml.inc">

<!ENTITY layer-admin SYSTEM "layer-admin.xml.inc">

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 35: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

Mapnik: Ableitung von Topographischen Webkarten aus amtlichen Geobasisdaten 14.05.2013

Page 36: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

36

Höhenlinien und Schummerung mit

GDAL - Geospatial Data Abstraction Library http://www.gdal.org/

Informationen

gdalinfo dgm10_geo.tif

Umprojektion von geogr. nach UTM32

gdalwarp -t_srs "+proj=utm +zone=32 +datum=WGS84" -r cubic

dgm10_geo.tif dgm10_utm32.tif

Höhenlinien erzeugen

gdal_contour -a hoehe dgm10_utm32.tif hl_utm32_10m.shp -i 20

Schummerung

gdaldem hillshade dgm10_utm32.tif hillshade.tif -z 3

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Page 37: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

37

Rasterlayer

hier Schummerung

<Style name="hillshadestyle2">

<Rule>

<RasterSymbolizer>

<CssParameter name="scaling">fast</CssParameter>

<CssParameter name="opacity">0.8</CssParameter>

<CssParameter name="mode">multiply</CssParameter>

</RasterSymbolizer>

</Rule>

</Style>

<Layer name="schummerung" status="on">

<StyleName>hillshadestyle2</StyleName>

<Datasource>

<Parameter name="type">raster</Parameter>

<Parameter name="file">&rasterdaten;/schummerung.tif</Parameter>

<Parameter name="format">tiff</Parameter>

<Parameter name="lox">582192</Parameter>

<Parameter name="loy">5235730</Parameter>

<Parameter name="hix">598576</Parameter>

<Parameter name="hiy">5238976</Parameter>

</Datasource>

</Layer>

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Datenquelle

Referenzierter Stil

Rastersymbolizer mit

Parametern

Page 38: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

38

Rasterlayer

Verweis auf georeferenzierte

Rasterdaten vom Typ GDAL

<Style name="hillshadestyle">

<Rule>

<RasterSymbolizer>

<CssParameter name="scaling">fast</CssParameter>

<CssParameter name="opacity">0.8</CssParameter>

<CssParameter name="mode">multiply</CssParameter>

</RasterSymbolizer>

</Rule>

</Style>

<Layer name="GDAL Layer from TIFF file">

<StyleName>schummerung2</StyleName>

<Datasource>

<Parameter name="type">gdal</Parameter>

<Parameter

name="file">/home/user/GIS/dgm10/hillshade.tif</Parameter>

</Datasource>

</Layer>

Page 39: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

39

Problem entsteht vermehrt beim Rendern kleiner Kacheln

256 x 256 Pixel

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Ham

Fehlende Beschriftung

in benachbarten Kacheln

Flens

leswig

Page 40: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

40 Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Hamburg

512 px

buffer_size = 512 Pixel

Größerer Extent je nach Zoomstufe

512 px * Auflösung in Meter/Pixel

Lösung 1:

Berücksichtigung eines größeren Extents beim Rendern

Fehlende Beschriftung

in benachbarten Kacheln

Page 41: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

41 Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Hamburg

2560 Pixel

25

60

Pix

el

Lösung 2:

Rendern von großen Kacheln 2560 x 2560 Pixel

Nachträgliches Unterteilen in 100 kleine Kacheln 256 x 256 px

Fehlende Beschriftung

in benachbarten Kacheln

Ratze

Page 42: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

42

Datenmengen

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

Datenquelle PostGIS und

DGM

Basis-DLM 15 GB

DLM250 1 GB

Höhenlinien 15 GB

Hausumringe (48,4 Mio.) 12 GB

Hauskoordinaten (ca. 22,3

Mio)

3 GB

DGM10 20 GB Kachelarchive

Volltonvariante 300 GB

Schummerungsvariante 500 GB

Graustufen 300 GB

Halbton 300 GB

Summe 1,4 TB

Page 43: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

Mapnik Workshop, Peter Kunz, Bundesamt für Kartographie und Geodäsie

BRD und Luxemburg – Basis-DLM und OSM

Page 44: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

44

Derivation of a Multiscale Topographic Web Map Tile Service based on Federal Datasets

Peter Kunz

[email protected]

Page 45: Musterseite zweite Zeile (optional) · PDF fileMit GDAL Schummerung und Höhenlinien berechnen OSM-Karte rendern Lokales Kachelarchiv rendern Mapnik Workshop, Peter Kunz,

45

Links

Mapnik

http://mapnik.org/

Mapnik Mailing list

http://mapnik.org/contact/

Repositories auf Github

https://github.com/mapnik

OpenStreetMap-Wiki

http://wiki.openstreetmap.org/wiki/Mapnik

OpenStreetMap Subversion-Repository

http://svn.openstreetmap.org/applications/rendering/mapnik/

GDAL

http://www.gdal.org/