Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi OpenStreetMaps Karten rendern (https://www.delphipraxis.net/144876-openstreetmaps-karten-rendern.html)

robinWie 18. Dez 2009 14:26


OpenStreetMaps Karten rendern
 
Hi,
ich wollte bei einem Programm eine Karte hinzufügen. Erst hab ich einfach Bilder von Karten genommen und dann darauf die Koordianten interpoliert, aber das ist sehr aufwändig zu verwalten und man muss ständig, teilweise große Bilder laden.
Da hab ich gesehen, dass man sich bei OpenStreetMaps die rohdaten von Karten runterladen kann. Das sind osm Dateien die genauso wie XML aufgebaut sind, also hab ich nach nem XML parser gesucht und himXML gefunden, aber das läuft bei mir nich weil ich noch D2005 habm kennt ihr noch einen anderen der unter D2005 läuft und schnell ist?

Mein weiteres Problem ist, ich hab noch nicht wirklich erfahrung mit dem rendern von Graphiken (außer Anloge zeiger) und würde das jetzt mit nen TImage und Canvas angehen ist das vernünftig und gibt es da bessere Methoden? Nich das ich mich schon am anfang total verenne^^

Ich bräuchte da mal nen paar Denkanstöße... ich weiss nämlich nicht wirklich wie ich das angehen soll...

mfg
Robin

[edit=SirThornberry]Titel korrigiert - Mfg, SirThornberry[/edit]

TurboMartin 18. Dez 2009 14:39

Re: OpenSteetMaps Karten rendern
 
http://www.delphipraxis.net/internal...t.php?t=156014

mkinzler 18. Dez 2009 14:40

Re: OpenSteetMaps Karten rendern
 
http://www.delphipraxis.net/internal...t.php?t=154963

Mithrandir 19. Dez 2009 08:43

Re: OpenSteetMaps Karten rendern
 
Huch, soviele meiner Themen. :mrgreen:

Die einfachste Möglichkeit wäre es, sich die Karten vom OSM-Server herunterzuladen. Dafür musst du die Geokoordinaten in Slippy Map Tilenames umwandeln, um dann die Kacheln für eine Slippy Map herunterladen zu können. Die solltest du aber local cachen. Außerdem solltest du nur die herunterladen, die du auch wirklich brauchst.

Es ist nicht ohne, das Ganze. Ich habe mich auch an einem eigenen Renderer versucht, bin aber (vorerst) dran gescheitert. Das Problem ist, dass du auf dem Recher keine unendlichen Resourcen hast. D.h., auch auf dem Rechner solltest du Kacheln erstellen. Nur musst du dann drauf achten, dass du auch alle Weg usw. bis zu den Kachelngrenzen bekommst. D.h., die erstellte Kachel muss aus einer Kachel resultieren, die um ein vielfaches Größer ist. Anschließend müssen die Kacheln ja auch noch einzeln auf dem Zielrechner erstellt werden.

Wenn du also nicht die Resourcen hast, einen eigenen MapServer aufzusetzen, würde ich den Onlinezugriff mit Cachefunktionalität einbauen. Der Cache sollte dabei eine Verweildauer von 7 Tagen haben. Solltest du doch einen eigenen Render schreiben, freue ich mich auf Ergebnisse. :stupid:

//Nachtrag: Hinzu kommt außerdem noch, dass du dich auch noch für eine winkelgetreue Projektion entscheiden solltest. Mercator ist hier die gängigste. Auch das musst du dann in der Erstellung deiner Karten beachten.

//2. Nachtrag: Ich habe an dieser Stelle mal eine kleine Importklasse für OSM zum Testen veröffentlicht. Arbeitet mit RegEx. Du kannst ja mal einen Blick drauf werfen, wenn du magst. ;)

robinWie 20. Dez 2009 12:21

Re: OpenSteetMaps Karten rendern
 
Zitat:

Zitat von Daniel G
//2. Nachtrag: Ich habe an dieser Stelle mal eine kleine Importklasse für OSM zum Testen veröffentlicht. Arbeitet mit RegEx. Du kannst ja mal einen Blick drauf werfen, wenn du magst. ;)

Thx ich schau mir das mal an. Dran gedacht mir die fertigen Karten vom Server zu laden hab ich auch schon, aber ich will nicht so vom Internetabhängig sein wenn man das mal unterwegs braucht ;)

Namenloser 20. Dez 2009 14:15

Re: OpenSteetMaps Karten rendern
 
Zitat:

Zitat von Daniel G
Arbeitet mit RegEx

XML + Regex ist aber eine recht gefährliche Mischung. Ein Parser ist eigentlich immer die bessere Wahl, wenn man einen hat.

robinWie 20. Dez 2009 14:35

Re: OpenSteetMaps Karten rendern
 
Zitat:

Zitat von NamenLozer
Zitat:

Zitat von Daniel G
Arbeitet mit RegEx

XML + Regex ist aber eine recht gefährliche Mischung. Ein Parser ist eigentlich immer die bessere Wahl, wenn man einen hat.

Das ist ja gerade das Problem ich hab kein Parser^^ und ich glaub selber einen zu entwickeln steht von der Arbeit her nicht umbedingt in einem Verhältnis zum Resultat, das würde ja bald genauso viel Zeit kosten wie das eigentliche Projekt.
Kennst du evtl einen?

Namenloser 20. Dez 2009 14:42

Re: OpenSteetMaps Karten rendern
 
Zitat:

Zitat von robinWie
Kennst du evtl einen?

Gibt es TXMLDocument unter Delphi2005? Ansonsten könntest du es noch mit der xmllib von Muetze1 probieren, falls du die noch irgendwo findest.

himitsu 20. Dez 2009 14:51

Re: OpenSteetMaps Karten rendern
 
Zitat:

Zitat von robinWie
und ich glaub selber einen zu entwickeln steht von der Arbeit her nicht umbedingt in einem Verhältnis zum Resultat, das würde ja bald genauso viel Zeit kosten wie das eigentliche Projekt.

Och, soooooo schwer ist das garnicht :roll:

[add]
TXMLDocument gab es schon in D7 und da es zu Microsoft gehört, gibt es das in jedem Delphi.

Mützes Lib gibt's auf seiner Webseite.
Und es gibt auch noch einige andere Libs ... diese liegen sogar teilweise meinem himXML bei ... im Unterordner "other".

Mithrandir 20. Dez 2009 19:38

Re: OpenStreetMaps Karten rendern
 
Das Thema hatten wir damals schon sooooooo sehr durchgekaut. Das Problem war einfach, dass es keinen vernünftigen SAX-Parser gibt/gab. Denn man kann nicht eine 4 Gigabyte große Datei im RAM vorhalten. Deshalb scheidet Mütze's Lib auch aus. ;)

Dass RegEx gefährlich ist, ist mir bewusst, allerdings ist das in diesem Falle nicht tragisch, denn das Format ist bekannt. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:02 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz