OpenLayers Datenbankanbindung

Hallo Liebe Community,

ich bin gerade auf einer Weltreise mit dem Motorrad. Aktuell befinde ich mich in Dakar, der Hauptstadt des Senegal. Weiter geht es bis Kapstadt und dann die Ostküste wieder hoch.

Während meiner Reise läuft ein GPS-Tracker mit, welcher alle 60 Sekunden einen Trackpunkt setzt. Jeden Abend lade ich die GPX-Datei auf einem Server, mittels PHP-Script füge ich dann alle GPX-Dateien automatisiert zu einer großen GPX-Datei zusammen. Die große GPX-Datei stelle ich mit folgendem Script auf einer Karte dar:

  <div id="mapdiv"></div>
  <script src="http://www.openlayers.org/api/OpenLayers.js"></script>
  <script>
    map = new OpenLayers.Map("mapdiv");
    map.addLayer(new OpenLayers.Layer.OSM());


var AFRIKAREISE = new OpenLayers.Layer.Vector("", {
				strategies: [new OpenLayers.Strategy.Fixed()],
				protocol: new OpenLayers.Protocol.HTTP({
					url: "../gpx/Master.gpx",
					format: new OpenLayers.Format.GPX()
				}),
				style: {strokeColor: "green", strokeWidth: 5, strokeOpacity: 0.5},
				projection: new OpenLayers.Projection("EPSG:4326")
			});
			map.addLayer(AFRIKAREISE);     

    var layer_switcher= new OpenLayers.Control.LayerSwitcher({});
    map.addControl(layer_switcher);

    var lonLat = new OpenLayers.LonLat( 10, 50 )
          .transform(
            new OpenLayers.Projection("EPSG:4326"), // transform from WGS 1984
            map.getProjectionObject() // to Spherical Mercator Projection
          );
    var zoom=5;
    map.setCenter (lonLat, zoom);  
    
  </script>

Soweit überhaupt kein Problem. Das ganze funktioniert absolut problemlos.

Nun habe ich jedoch folgendes Problem:
Meine “Master-GPX” hat mittlerweile 70mb, welchen Einfluss das auf meinen Server-Traffic und auf die Ladezeiten hat, brauche ich denke ich nicht erklären. Zwar könnte ich die Tages-GPX jeweils einzeln in die Karte einbinden, in Summe wären es ja aber trotzdem noch 70mb, Tendenz steigend.

Überlegung: Ich lade die Trackpunkte alle in eine SQL-Datenbank. Je nach Karten-Zoomlevel nutze ich für die Darstellung des Tracks nur jeden 10, 50, 100 oder gar 1000. Trackpunkt, da man ja ab einem gewissen Zoomlevel sowieso keinen Unterschied mehr erkennt. Außerdem übertrage ich nur die Trackpunkte, auf dem aktuellen Bildschirmausschnitt.

Mein Problem: Ich bin fit in PHP. Die Trackpunkte in eine Datenbank zu schreiben ist überhaupt kein Problem. Ich bin aber weder fit in JavaScript noch finde ich irgend ein Beispiel oder für mich verständliches Example.

Kann mir jemand helfen? Ich würde mich auch entsprechend erkenntlich zeigen.

Viele Grüße

Philipp

1 Like

Chapeau!

Helfen kann ich Dir leider nicht weil keine Ahnung, aber den Hut ziehen vor Deinem Unterfangen möchte ich wohl …

Bist Du bei der Rallye dabei?

Du könntest die Punkte vereinfachen und die Daten “tilen”, z.B. mit tippecanoe, und dann als Quelle deines Vektordatenlayers die resultierende mbtiles-Datei (osm als pbf Kacheln, je nach zoom reduziert auf ein sinnvolles Maß, das macht er schon in den default-Einstellungen mit brauchbarem Ergebnis) setzen. Als input brauchst Du für tippecanoe geojson.

Dieser Befehl erstellt die mbtiles-Datei:

tippecanoe -zg -o AFRIKAREISE.mbtiles --drop-densest-as-needed --extend-zooms-if-still-dropping AFRIKAREISE.geojson

https://github.com/mapbox/tippecanoe

das Geojson kannst du aus den gpx-Daten generieren, z.B. im browser:

dazu diese Datei runterladen:
https://raw.githubusercontent.com/mapbox/togeojson/master/togeojson.js

Und eine html Datei erstellen mit diesem script, die außerdem jQuery einbindet (wegen ajax):

<script src='jquery.js'></script>
<script src='togeojson.js'></script>
<script>
$.ajax('test/data/linestring.gpx').done(function(xml) {
    console.log(toGeoJSON.gpx(xml));
});
</script>
1 Like

Ich nochmal!

Mit Verlaub @Netzwolf, ich bin mal so frei und verlinke für @Lion1993 zu Deinem heutigen Textbeitrag #313 ins alte Forum.

Vielleicht kann der Phillip ja was damit anfangen und von meiner Seite ist es ja auch keine Werbung für gar nichts :slightly_smiling_face: .

1 Like

@Peer_van_Daalen Die Rallye Dakar findet ja leider nicht mehr in Afrika statt, sondern hat nur noch den Namen. Ausgetragen wird sie ja in Bolivien/Peru bzw. dieses Jahr in Saudi Arabien statt. Die Strecke durch Marokko, Mauretanien und den Senegal soll angeblich zu gefährlich sein (Terrorismus). Ich bin jedoch außer den Schlenker über Mali zum Teil auf der Strecke von 2007 gefahren und habe mich nie unsicher gefühlt.

@dieterdreist Da ich nur einen Webspace habe, funktioniert das leider nicht

Peer_van_Daalen Die Lösung von Netzwolf ist für mich die perfekte Lösung. Jedoch bekomme ich sie nicht zum laufen. Ich vermute, weil in der longtrack.cgi ein “require ‘config.pl’” ist, die config.pl jedoch nicht im Download-Paket dabei ist. Ich habe Netzwolf diesbezüglich schon angeschrieben.

@dieterdreist Da ich nur einen Webspace habe, funktioniert das leider nicht

doch, es gibt ein php script dass aus der mbtiles die passenden Kacheln liefert. Für so wenige Daten und Nutzer sollte das reichen.

@dieterdreist danke, aber ich bin gedanklich bei der @Netzwolf Lösung, wenn ich sie denn zum laufen bekomme (vermutlich fehlende Datei). Die erscheint mir aktuell am einfachsten

einfacher als selbermachen wäre übrigens, dich bei einem professionellen provider zu bedienen, der einen free-tier fürs Hosting von Vektorgeodaten anbietet (z.B. Openmaptiles oder Mapbox).

2 Likes