OSM Tiles in Mapserver anzeigen

Hi !

ich möchte in einem GIS auf Basis des Mapservers gerne die Mapnik-Karte (später vielleicht auch einmal andere Varianten) anzeigen lassen.

Das man einen WMS einbinden kann ist mir bekannt auf folgendem Wege in der map-Datei.

########################### WMS GEP - OPEN Street Map
LAYER
	NAME "WMS_OSM" 
	TYPE RASTER
	CONNECTION "http://osm.wheregroup.com/cgi-bin/osm_basic.xml?SERVICE=WMS&" 
    CONNECTIONTYPE WMS
	METADATA
		"wms_srs" "EPSG:25832"
		"wms_name" "OSM_Basic"        #siehe Name unterhalb von Layer
		"wms_server_version" "1.1.1"  # siehe WMT_MS_Capabilities version
		"wms_format_list"    "image/png"
		"wms_format"         "image/png"
		"wms_style"          "default" 
			# muss ab MapServer 4.10 angegeben werden
	END
END

Leider war meine Suche bisher nicht ganz erfolgreich (immer nur selber rendern) - kann mir einer weiterhelfen, wenn das überhaupt funktioniert.

Gruß Jan :slight_smile:

So weit ich weiss, geht das nur über einen Umweg. Du kannst Mapproxy benutzen, um die Tiles von OpenStreetMap als Source zu lesen, und dann mittels Mapproxy-WMS-Dienst wieder in den Mapserver laden. Oder deinen Mapserver -Dienst in Mapproxy einbinden und die Vorteile des Proxies nutzen :slight_smile:

hi !

das ist erst einmal ein Wink in die richtige Richtung - mapproxy werde ich mir auf der Fossgis mal näher ansehen.

Gruß Jan :slight_smile:

Ja, Mapproxy ist schon ein feines Stück Software. Ich benutze den auch, um OSM Mapnik XML Karten zu rendern und z.B. in OpenLayers einzubinden. Sozusagen eine Alternative zur Standard-Renderchain

Moin,

mich würde vielmehr interessieren ob es mal einer hinbekommen hat die normalen OSM-Tiles (also die Bildpyramide) von Original-Server über den Mapserver als WMS auszuliefern?

Ich bin bisher nur den Weg gegangen, einen bestimmten Zoomlevel für eine begrenzte Region selbst zu rendern und mit einem Shape – http://mapserver.org/de/optimization/tileindex.html – in EPSG:3875 zusammenzuknoten.

LG,

-moenk

hi !

das wäre auch interessant weil die Daten nur für eine Stadtgebiet benötigt werden in der Regel.

Gruß Jan :slight_smile:

Jan,

das kannste ja einfach machen - rechneste nur Level 17 für Deine Stadt, erstellst den Tlieindex als Shape und legst den Layer an wie im verlinkten Text beschrieben.

Hier ein ähnliches Beispiel für einen Bluemarble-Layer:

#!/bin/bash
tiles="D1 D2 D3 D4 E1 E2 E3 E4 F1 F2 F3 F4 G1 G2 G3 G4 H1 H2 H3 H4"
for tile in `echo $tiles`
do
        wget http://129.123.16.127/globe/TrueMarble_GeoTIFF/TrueMarble.250m.21600x21600.$tile.tif.gz
        gunzip TrueMarble.250m.21600x21600.$tile.tif.gz
        gdaladdo TrueMarble.250m.21600x21600.$tile.tif 2 4 8 16 32 64 128
done
gdaltindex -write_absolute_path ../bluemarble.shp *.tif

Dann im Mapfile:

LAYER
    NAME "bluemarble"
    METADATA
      "ows_enable_request" "*"
      "wms_title"       "Bluemarble"
      "wfs_enable_request" "*"
    END
    HEADER 'wms_header.html'
    TEMPLATE 'wms_none.html'
    FOOTER 'wms_footer.html'
    TILEINDEX "bluemarble.shp"
    TILEITEM "Location"
    TYPE RASTER
    STATUS ON
END

LG,

-moenk

hi !

und der würde immer die aktullen osm-Tiles einbinden ?

das wäre ja cool.

Gruß Jan

Jan,

das Shape verweist nur auf die Tiles. Aktualisieren musste die mit Mapnik dann schon selber, also da ist nun nicht so ein Mechanismus wie mod_tile drin, der die angeforderten Tiles neu berechnet wenn sie gebraucht werden.

LG,

-moenk