You are not logged in.

#26 2012-03-29 22:34:04

ikonor
Member
Registered: 2010-11-08
Posts: 614
Website

Re: eigene Tiles hosten

MikeOSM wrote:

Weiß jemand wie ich dieses mbutil zum laufen bekomme? Python habe ich installiert aber ich habe keine Ahnung was ich da starten oder ob ich das Ding noch installieren muss.

Ich habe jetzt doch mal TileMill ausprobiert und auch gleich das mbutil. Eine Installation ist nicht notwendig, hätte nur den Vorteil, dass mb-util direkt als Kommando verwendet werden kann.

Bei mir hat folgender Aufruf funktioniert (Pfade und Dateiname anpassen):

python C:\Tools\mbutil\mb-util --scheme=osm open-streets-dc.mbtiles D:\tmp\tiles

Offline

#27 2012-03-30 06:03:51

MikeOSM
Member
Registered: 2012-03-16
Posts: 15

Re: eigene Tiles hosten

Habs gestern auch noch hinbekommen. Ich rufe es so auf:

python mb-util test.mbtiles /tmp

Jetzt muss ich nur noch eine passende openlayers oder leaflet Vorlage finden. Weiß jemand zufällig wie man die eigenen tiles einbindet? Hatte gestern schon mit der Anleitung im Wiki http://wiki.openstreetmap.org/wiki/Open … es_Example getestet aber das schein nicht ganz das richtige zu sein.

Edit: Was machste du denn mit dem Schalter --scheme ?

Last edited by MikeOSM (2012-03-30 06:05:24)

Offline

#28 2012-03-30 06:20:27

ajoessen
Member
Registered: 2009-09-16
Posts: 2,074

Re: eigene Tiles hosten

MikeOSM wrote:

Habs gestern auch noch hinbekommen. Ich rufe es so auf:

python mb-util test.mbtiles /tmp

Jetzt muss ich nur noch eine passende openlayers oder leaflet Vorlage finden. Weiß jemand zufällig wie man die eigenen tiles einbindet?

http://wiki.openstreetmap.org/wiki/User … _GPXviewer

Und die dort verlinkte zip-Datei studieren ;-)

Weitere Nutzungsmöglichkeiten siehe hier:
http://wiki.openstreetmap.org/wiki/User … _der_Tiles

Gruß,
ajoessen

Last edited by ajoessen (2012-03-30 06:21:37)

Offline

#29 2012-03-30 07:13:55

MikeOSM
Member
Registered: 2012-03-16
Posts: 15

Re: eigene Tiles hosten

Das schaut gut aus. Habs grad mal getestet und wie nicht anders zu erwarten geht es nicht. Ich habe mein Verzeichnis auf dem Webspace eingebunden und meine Karte wird nicht angezeigt. Habe das dann mal mit Chrome untersucht. Meine Verzeichnisstruktur nach dem Export mit mbutil stimmt soweit. Er findet aber die einzelnen Kacheln nicht. Er sucht nach dateien die bspw. so heißen: http://www.blabla/tiles/14/8801/5291.png bei mir heißen die Tiles nach dem Export aber http://www.blabla/tiles/14/8801/11092.png. Die Dateien haben also den falschen Dateinamen. Ich hatte irgendwo gelesen das das mbtiles Format spherical Mercator benutzt. Kann ich das bei der Projektion in der karten.js des gpx viewers irgendwo einstellen?

Man alles schwerer als gedacht. Wenn ich das zum laufen bekomme muss ich wohl ein dickes Tutorial dafür schreiben.

Offline

#30 2012-03-30 07:19:55

ajoessen
Member
Registered: 2009-09-16
Posts: 2,074

Re: eigene Tiles hosten

MikeOSM wrote:

Das schaut gut aus. Habs grad mal getestet und wie nicht anders zu erwarten geht es nicht. Ich habe mein Verzeichnis auf dem Webspace eingebunden und meine Karte wird nicht angezeigt. Habe das dann mal mit Chrome untersucht. Meine Verzeichnisstruktur nach dem Export mit mbutil stimmt soweit. Er findet aber die einzelnen Kacheln nicht. Er sucht nach dateien die bspw. so heißen: http://www.blabla/tiles/14/8801/5291.png bei mir heißen die Tiles nach dem Export aber http://www.blabla/tiles/14/8801/11092.png. Die Dateien haben also den falschen Dateinamen.

Es gibt da verschiedene Weltanschauungen, wie man die Tiles nummeriert. Google und OSM fangen oben an (bei 85° Nord, die offizielle TMS_Spezifikation fängt unten an, bei 85° Süd.

Umrechnung: ty1=(2**zoom - 1) - ty

Du kannst dir mal probeweise maptiler anschauen. Die nummerieren auch "verkehrt herum", und bauen eine eigene Openlayers-Anwendung, die es dann richtigherum darstellt. Oder per script umnummerieren, oder sich einfach an die Standard-Mapnik-Toolchain halten ;-)

EDIT: Hier gibts was zum Anschauen:
http://www.maptiler.org/google-maps-coo … rojection/

Ich hatte irgendwo gelesen das das mbtiles Format spherical Mercator benutzt. Kann ich das bei der Projektion in der karten.js des gpx viewers irgendwo einstellen?

Man alles schwerer als gedacht. Wenn ich das zum laufen bekomme muss ich wohl ein dickes Tutorial dafür schreiben.

Das hab ich schon hinter mir ;-)

Gruuß,
ajoessen

Last edited by ajoessen (2012-03-30 07:34:05)

Offline

#31 2012-03-30 08:09:13

ikonor
Member
Registered: 2010-11-08
Posts: 614
Website

Re: eigene Tiles hosten

MikeOSM wrote:

Edit: Was machste du denn mit dem Schalter --scheme ?

MikeOSM wrote:

Er sucht nach dateien die bspw. so heißen: http://www.blabla/tiles/14/8801/5291.png bei mir heißen die Tiles nach dem Export aber http://www.blabla/tiles/14/8801/11092.png. Die Dateien haben also den falschen Dateinamen.

Genau das kann man mit --scheme ändern, indem man vom Nummerierungs-Schema TMS auf Google/OSM umstellt, ajoessen hat das ja schon erklärt:

python mb-util -h wrote:

  --scheme=SCHEME  Tiling scheme for exporting tiles. Default is "tms"
                   (z/x/y), other option is "osm" which is also z/x/y but uses
                   a flipped y coordinate

Offline

#32 2012-03-30 08:32:02

MikeOSM
Member
Registered: 2012-03-16
Posts: 15

Re: eigene Tiles hosten

Na das muss man erstmal wissen. In der Beschreibung zu mbutil steht ja zu den Schaltern gar nichts, oder ich habe es nicht gefunden sad D.h. wenn ich mb-util mit dem Schalter --scheme=osm nochmal laufen lasse geht das mit einer Standard implementierung von Openlayers?

Offline

#33 2012-03-30 08:43:14

ikonor
Member
Registered: 2010-11-08
Posts: 614
Website

Re: eigene Tiles hosten

Ich habs aus der Hilfe (mb-util -h). Ja, die mit --scheme=osm generierten Files können ganz normal mit OpenLayers.Layer.OSM verwendet werden.

Es gibt zwar auch OpenLayers.Layer.TMS, das mit der jetzigen Struktur umgehen könnte, weiß aber nicht ob das so ganz ohne Meta-Infos funktioniert.

Offline

#34 2012-04-01 18:19:14

ajoessen
Member
Registered: 2009-09-16
Posts: 2,074

Re: eigene Tiles hosten

Nop wrote:
ajoessen wrote:

Doch, so läuft das bei mir. Am Ende der generate_tiles.py trägst du Wunschgebiet und Zoomstufen ein, und los gehts. Wobei ich für jeden meiner transparenten Layer eigene py-Dateien angelegt habe.

Klar funktioniert das. Man muß sich nur im Klaren sein, daß es extrem ineffizient ist, ich kann mich erinnern daß damals ein Python Skript, das ähnlich wie die Web-Renderchain mit 10x10 Metatiles gearbeitet hat, mehr als 50 mal schneller war als generate_tiles.

Schade, Tante guhgel scheint es nicht zu kennen. War das nicht eventuell doch in C programmiert?

Gruß,
ajoessen

Offline

#35 2012-04-04 13:21:11

MikeOSM
Member
Registered: 2012-03-16
Posts: 15

Re: eigene Tiles hosten

So habe es jetzt hinbekommen und die Karte funktioniert so. Danke nochmal für die Hilfe.

Nun habe ich gleich ein neues Problem: Ich lasse mir per Overpass API verschiedene Pois auf meine Karte einblenden. Die lassen sich ja an- und abschalten. Wenn ich meine Karte lade sind die aber grundsätzlich eingeschaltet, ich will das jetzt aber so das die Pois beim Laden der Karte nicht angezeigt werden. Hat dafür jemand ein Codebeispiel? Ich kann ja mal meinen Code posten mit dem ich die Abfrage mache:

arztlayer = new OpenLayers.Layer.Vector("Ärzte in NB", {styleMap: styleMaparzt,
                    strategies: [new OpenLayers.Strategy.Fixed()],
                    protocol: new OpenLayers.Protocol.HTTP({
                        url: "arzt.xapi",   
			format: new OpenLayers.Format.OSM()
                    }),
                    projection: new OpenLayers.Projection("EPSG:4326")
                });
 
                map.addLayers([arztlayer]);
				
				var options = {hover: false, onSelect: onFeatureSelect, onUnselect: onFeatureUnselect };
				selectControl = new OpenLayers.Control.SelectFeature(arztlayer, options);
				map.addControl(selectControl);
				selectControl.activate();

Man kann dann auf die angezeigten Punkte auf der Karte klicken und die Daten werden aus der Overpass Api bzw. der arzt.xapi angezeigt:

//Beginn Popuhandling
	var selectControl;
	var selectedFeature;
	function onPopupClose(evt) {
    selectControl.unselect(selectedFeature);
}
	function onFeatureSelect(feature) {
    selectedFeature = feature;
    var tags = feature.attributes;
    var infoHtml = "<table>";
    for (var key in tags) {
       infoHtml += "<tr><td>" + key + "</td><td>" + tags[key] + "</td></tr>";
    }
    infoHtml += "</table>";
    popup = new OpenLayers.Popup.FramedCloud("chicken", 
                             feature.geometry.getBounds().getCenterLonLat(),
                             null,
                             infoHtml,
                             null, true, onPopupClose);
    feature.popup = popup;
    map.addPopup(popup);
}
	function onFeatureUnselect(feature) {
    map.removePopup(feature.popup);
    feature.popup.destroy();
    feature.popup = null;
}
 //Ende Popuphandling

Kann ich die Größe des Popups beeinflußen, im speziellen die Breite?

Offline

#36 2012-04-04 13:29:13

Netzwolf
Member
Registered: 2008-04-01
Posts: 1,665

Re: eigene Tiles hosten

MikeOSM wrote:

[…], ich will das jetzt aber so das die Pois beim Laden der Karte nicht angezeigt werden. Hat dafür jemand ein Codebeispiel? Ich kann ja mal meinen Code posten mit dem ich die Abfrage mache:

arztlayer = new OpenLayers.Layer.Vector("Ärzte in NB", {styleMap: styleMaparzt,
                    strategies: [new OpenLayers.Strategy.Fixed()],
                    protocol: new OpenLayers.Protocol.HTTP({
                        url: "arzt.xapi",   
			format: new OpenLayers.Format.OSM()
                    }),
                    projection: new OpenLayers.Projection("EPSG:4326")
                });

Bei allen OpenLayers.Layer.WasAuchImmer kannst Du einen Parameter “visibility” übergeben. Übergibst Du “false”, ist der Layer per Default deaktiviert:

arztlayer = new OpenLayers.Layer.Vector("Ärzte in NB", {styleMap: styleMaparzt,
                    visibility: false,
                    strategies: [new OpenLayers.Strategy.Fixed()],
[…]

Gruß Wolf

Offline

#37 2012-04-04 13:38:15

Netzwolf
Member
Registered: 2008-04-01
Posts: 1,665

Re: eigene Tiles hosten

Nahmd,

MikeOSM wrote:
    popup = new OpenLayers.Popup.FramedCloud("chicken", 
                             feature.geometry.getBounds().getCenterLonLat(),
                             null,
                             infoHtml,
                             null, true, onPopupClose);
    feature.popup = popup;
    map.addPopup(popup);
}

Kann ich die Größe des Popups beeinflußen, im speziellen die Breite?

Der Konstruktor der “OpenLayers.Popup.FramedCloud”-Klasse akzeptiert als drittes Argument eine Pixelgröße. Du übergibst an der Stelle ein “null”. Du kannst da auch eine gewünschte Größe angeben:

popup = new OpenLayers.Popup.FramedCloud("chicken", 
    feature.geometry.getBounds().getCenterLonLat(),
    new OpenLayers.Size (300, 200),
    infoHtml,
[…]

Gruß Wolf

Offline

#38 2012-04-04 14:07:05

MikeOSM
Member
Registered: 2012-03-16
Posts: 15

Re: eigene Tiles hosten

Danke Dir für den Code smile

Offline

Board footer

Powered by FluxBB