Offline Kartenmaterial für Java-Swing

Hallo Community

ich habe derzeit eine OpenStreetMap in eine Java Application mittels Java-Swing eingebettet. Um diese Karten anzuzeigen wird aber eine Internetverbindung benötigt.

Nun habe ich im Internet gelesen, dass es bei OpenStreetMap auch möglich ist, die Daten offline zu verwenden. Leider habe ich kein Package oder ähnliches im Internet gefunden.

Könnte mir bitte jemand sagen, was ich dazu genau brauche und wie ich es verwenden kann?

Danke schon im Voraus.

Greets
Sc0rP1En

Hallo und herzlich willkommen bei OSM :slight_smile:

Die Frage ist, was du konkret machen möchtest. Willst du nur die Kartenkacheln runterladen? Oder willst du die Daten runterladen und die Karte selber rendern?

Ein paar Sachen haben wir schon zusammengetragen:
http://wiki.openstreetmap.org/wiki/Develop/Frameworks

Danke für deine schnelle Antwort :slight_smile:

Öhm ich muss leider gestehen,dass ich keine Ahnung davon habe. Ich möchte eigentlich nur eine Karte integrieren, die auf dem PC gespeichert wurde. Auf dieser wird dann mittels Koordinaten ein Live-Tracking durchgeführt. Eigentlich brauche ich nur die Karte von Vorarlberg in Österreich.

Kannst du mir erklären was du mit Kartenkacheln oder rendern meinst? :slight_smile:

Nun bisher wirst du vermutlich so wie bei der Online Karte auf OSM.org vorberechnete Bilder der OpenStreetMap Karte zusammenführen? Diese heißen bei uns Kacheln(Tiles) damit man nicht immer den gesamten Bildausschnitt berechnen muss.
Du könntest dir also diese Bilder lokal speichern und diese dann zusammensetzen (einige Komponenten in der Liste können das bereits).
http://wiki.openstreetmap.org/wiki/Tiles

Extra ein Rendering nur für eine Hintergrund-Karte aufzusetzen halte ich bei deiner Anwendung für ein wenig übertrieben.

Ah okay, klingt logisch :slight_smile:

Denke auch das ich keine große Karte rendern muss, wenn ich nur ein kleiner Ausschnitt brauche.

könntest du mir eventuell noch helfen wie ich die Ausschnitte herunterlade und dann zusammenführe oder gibt es irgendwo ein geeignetes Tutorial dafür (am besten gleich mit Integration in Java smile)

klaro, die Links waren aber bereits auf der Seite :wink:
http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames
Das ganze musst du dann in einer Komponente passend zusammenzeichnen. Aber wie gesagt es gibt bereits Komponenten dafür.

Bedenke aber, dass das massenhafte kopieren von Tiles nicht gern gesehen wird. Solltest du da etwas kommerzielles draus machen, rate ich dir dringend einen eigenen Karten Server aufzusetzen
http://wiki.openstreetmap.org/wiki/Tile_usage_policy

Jetzt bin ich verwirrt. Auf der 1. Seite werden wieder Links angegeben auf denen aber nur ein png angezeigt wird.

Wo kann ich meine benötigten Karten herunterladen? Was muss ich dann mit diesen heruntergeladenen Karten machen?
Blicke da irgendwie noch nicht so durch :S

Das Projekt wird nicht kommerziell genutzt. Es ist eine Projektarbeit für eine Firma, die es verwendet, aber nicht verkauft.

Alsooooo du willst eine große Karte durch viele kleine Bildchen zusammensetzen:

  1. aktuelle Geokordinaten deines Blickbereiches bestimmen (z.B. Ausdehnung deines GPS Tracks oder was du hast)
  2. Ausrechnen welches Tile links oben und rechts unten dafür benötigt wird. Restliche Tile Names dazwischen auffüllen
  3. Diese PNGs runterladen
  4. Die lokalen PNGs nun Stück für Stück in deinen Canvas zeichnen. ggF. musst du da die Zoomstufe mit einberechnen

okay^^

also ich soll auf der normalen Homepage über Export meinen Bereich runterladen?
Das mache ich bis ich den ganzen Bereich abgedeckt habe.

Ich stelle mir das so vor:

Ich habe einen Ordner in dem alle Bilder sind (ganzer Bereich und die jeweilige Zoomstufe)
Dann erstelle ich eine Tilefactory in Java und gebe als URL den lokalen Pfad des Ordners an.
Mithilfe der X und Y Koordinate und der Zoomstufe bastle ich dann den richtigen Pfad.

Könnten wir evt. über einen IM miteinander kommunizieren?

Sorry aber für Einzel-Betreuung fehlt mir die Zeit. Wenn du aber konkrete Fragen/Probleme hast, kannst du sie hier gerne posten :slight_smile:

Okay kein Problem.

Gibt es eine Anleitung im Internet oder im Forum wie ich die einzelen Tiles exportiere, zusammenfüge und dann die Zoomstufen etc. anpasse?

Mach dir das Leben doch einfacher und suche dir auf http://wiki.openstreetmap.org/wiki/Software/J2ME eine passende Software, die Offline-Tiles unterstützt und deine sonstigen Anforderungen erfüllt, aus und installiere das.

Edbert (EvanE)

Ich würde mir das Leben gerne einfacher machen ^^ … leider verstehe ich nichts davon und darum frage ich ja im Forum :slight_smile: … so weit ich das sehe, ist das J2ME für Mobile Geräte gedacht.

Und da ich mich nicht auskenne, weiß ich auch nicht, nach was genau ich suchen muss.

http://wiki.openstreetmap.org/wiki/Software
Hier werden mir nur ganze Programme angeboten, die die Karte anzeigen und bearbeiten. Ich muss aber nur eine Karte offline abgelegt haben und mit Swing einbinden. Aber ich glaube das ist komplizierter als ich dachte :S

Einfach wird leicht mal teuer.

  • Sei es dass du in die falschen Dnge investierst und du mehrere Versuche (+ mehrmals Geld) brauchst.
  • Sei es dass du sehr viel Zeit (und letztlich damit Arbeitsentgelt) benötigst.
  • Sei es dass du jemand bezahlen musst, der dir die ‘einfache’ Lösung implementiert.

Da du uns über dein Umfeld und die Aufgabe dafür im Dunkeln tappen lässt, werden wir dir höchstens durch Zufall helfen können.

Vielleicht wärst du im Developer-Forum mit deinem Problem besser aufgehoben?

JM2C
Edbert (EvanE)

Ich denke der oben beschriebene Weg ist auf jeden Fall einer der Möglichen:

  • Die Tiles herunterladen die du brauchst (auf Policy achten)
  • Eventuell als großes Gesamtbild zusammenfügen
  • Dieses Bild in deinem Programm anzeigen

Was anderes noch: Nicht vergessen, auf die Herkunft/die Lizenz hinzuweisen, siehe http://wiki.openstreetmap.org/wiki/DE:Legal_FAQ#Ich_m.C3.B6chte_OpenStreetMap_verwenden._Wie_soll_ich_auf_euch_hinweisen.3F

Hallo

Umfeld:
Ich habe ein Programm, welches mittels einer GPS-Maus die Koordinaten der aktuellen Position ausliest. Diese Koordinaten werden an einen Server geschickt und in eine Datenbank gespeichert. Auf einem PC läuft dann noch eine Java Application, welche die Koordianten aus der Datenbank liest und auf einer OSM anzeigt. Diese Karte wird mit dem JXMapViewer implementiert und zeigt damit auch immer die neueste Koordinate auf der Karte an. Leider wird die Karte zurzeit über das Internet hineingeladen.

Ich möchte es nun schaffen, dass wir die Karte offline hinterlegen und so anzeigen, das kein Internetzugang notwendig ist.
Die Karte zeigt nur Vorarlberg/Österreich an. Man sollte auch zoomen können.

Ich hoffe mit diesen Informationen könnt ihr euch mein Projekt/Problem ein bisschen besser vorstellen. :slight_smile:

So wie ich das bis jetzt aus euren Tipps herauslese, soll ich meinen Kartenausschnitt aus dem Exporttab von www.openstreetmap.org exportieren. Aber wie ich dann weiter komme weiß ich nicht, da ich ja auch die ganzen Zoomstufen benötige und die Karte dann ins Java-Programm laden muss.

Das ich die Lizenz beachten muss, ist natürlich klar. Aber solang ich noch nicht weiß, wie ich das ganze realisiere, hilft mir die Lizenz leider nicht weiter.

Greets
Sc0rP1En

Hallo Sc0rP1En

Mit anderen Worten hast du ein Fahrzeug-Tracking für z.B. Flotten-Management.

Dein Problem ist nicht das Tracking (das scheint bereits zu funktionieren) oder die Darstellung auf einer OSM-Karte (auch das scheint nach deiner Aussage zu funktionieren) sondern nur, dass du die Karte (genauer gesagt die Tiles) von einer lokalen Quelle in deiner Organistion beziehen willst.

Du brauchst also entweder einen Tile-Server (inkl. der Frage wie der zu füllen und zu aktualiseren ist) oder wenn dir vor allem die Menge der Zugriffe aufs Internet zuviel ist, einen Tile-Cache mit für dich/euch geeigneter Update-Strategie.

Ich hoffe, dass ich richtig liege und damit die Dinge für die weitere Diskussion etwas klarer sind.

Edbert (EvanE)

Ehm Scorpien, es geht darum, dass du selbst die Namen der Kachel Bild-Dateien berechnen kannst und die somit cachen/laden kannst. Das Java Swing Control ist nicht OpenSource, oder?
http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames

Du kannst dir auch gerne mal Quellcodes z.B. von JTiledownloader anschauen wie die das machen.

Guten Morgen

Richtig! Wir machen ein Live-Tracking für LKWs. :slight_smile:
Alles funktioniert bereits, das einzige was fehlt sind die Offline-Daten. Internetzugang sollte garkein benötigt werden. Macht es Sinn, für so einen kleinen Kartenausschnitt einen eigenen Map-Server aufzusetzen?

Kann man, wenn man die Tiles einfach als Bild offline hinterlegt auch zoomen oder muss man dann die einzelnen Zoomstufen auch exportieren?

Ob Java Swing open-source ist, kann ich dir nicht sagen. Aber ich glaube nicht.

Ich werde mir mal den JTileDownloader anschauen.

Greets
Sc0rP1En

Den Vorteil eines eigenen Map-Servers sehe ich darin, dass du damit kontinuierlich die Kartendaten aktualisieren kannst. Wenn du die einzelnen Tiles herunterlädst, hast du den derzeitigen Kartenstand. In einer Woche kann die Karte aber schon wieder aktueller bzw korrigiert sein. Dann müsstest du wieder alle Tiles herunterladen, um den aktuellen Stand zu haben. Und ganz Vorarlberg in allen Zoomstufen sind einige Tiles. Ich denke nicht, dass es gemäß der Tile-Download-Policy gerne gesehen wird, immer wieder alle Tiles für ein bestimmtes Gebiet herunterzuladen.
Klar, wenn dir ein einmaliger Download der Karten reicht, sind die Tiles vermutlich die einfachere Wahl.
Bei einem eigenen Karten-Server kannst du kontinuierlich den aktuellen Kartenstand einspielen ohne irgendwelche Policies zu verletzen.

Es muss jede Zoomstufe exportiert werden. Für ganz Vorarlberg sind das insgesamt eine Menge Tiles. Die Anzahl der Tiles kann man sich auch Pi mal Daumen ausrechnen.