![]() |
TSVOGISImage GPS Position in Karte anzeigen
Hallo alle zusammen und schonmal danke für Eure Hilfe...
Ich sitze an einem Schulprojekt, es geht um folgende Aufgabe... Eine Software schreiben die anhand eines GPS-Empfängers die aktuelle Position auf einer Karte anzeigt. Eine passende GPS-Maus habe ich, das Delphi-Programm um übern Com-Port die Koordinaten aus den empfangenen Daten auszulesen habe ich auch fertig. Soweit ich bisher erfahren konnte, werden die Karten z.B. als *.shp Dateien genutzt, scheinbar gibt es da aber noch wesentlich mehr Formate. Aktuell habe ich nur eine Kompo gefunden die scheinbar genau dafür gedacht ist, TSVOGISImage auf der seite suchen nach Shape Viewer Objects GIS v.2 ![]() Direkter Link: ![]() Ist kostenlos und sehr einfach zu installen... Aber dann gehts los, ich sehe da kein bischen durch wie man in diese Kompo eine Karte lädt und die aktuelle Position auf dieser anzeigen lässt... Wer weiß Rat? |
Re: TSVOGISImage GPS Position in Karte anzeigen
ok, freies kartenmaterial habe ich schonmal gefunden... nur wie kriege ich das in mein programm und wie zentriert man das dann????
![]() |
Re: TSVOGISImage GPS Position in Karte anzeigen
Weiß hier niemand wie ich meine aktuelle Position (GPS) in Delphi auf einer Karte darstellen kann?
|
Re: TSVOGISImage GPS Position in Karte anzeigen
Wenn bisher keiner die von dir verwendete Komponente genutzt hat: Nein
(Ausserdem ist es unfair anderen Fragestellern gegenüber sein Thema ständig zu pushen) Edit: Da ist eine Demo bei und eine Hilfe. Da musst du dich mal durchackern. (Wobei ich schon einen fehler aufgedeckt habe, aber so ist das hin udn wieder bei kostenloser Software) |
Re: TSVOGISImage GPS Position in Karte anzeigen
Hallo,
hier eine Möglichkeit, wie es einige schon verfügbare GPS Programme machen, die mit eigenem Kartenmaterial gefüttert werden können. 1. Man braucht die Karte in einem Format (PDF,JPG,PNG, ...) 2. Man muß die Auflösung ermitteln (in Pixeln) 3. Man muß von der Karte 2 möglichst weit voneinander entfernte Punkte möglichst sehr genau kennen also Beispielsweise eine Kreuzung oben Links und unten Rechts (als GPS Koordinaten) Damit Kalibriert man die Karte. Damit kann man anhand der GPS Koordinaten die echten Entfernungen berechnen und somit "X-Scale und Y-Scale" Der Rest sollte ja nicht zu schwer sein. Mit den Punkten muß man nun mit einem Viewer nun den Kartenausschnitt anzeigen. z.B. mal hier nachsehen: ![]() Am Besten mal durchlesen und genauso (oder besser) machen. So nun viel Spaß beim Coden. Mich würde mal der Source für das Ansprechen der RS232 interessieren. Wie es in Turbo Pascal funktioniert, weiß ich. In Delphi habe ich das aber noch nicht gemacht. Vielleicht als "PN" schicken. Wäre nett. Viele Grüße Herbert |
Re: TSVOGISImage GPS Position in Karte anzeigen
Super das ist doch mal eine antwort ;)
für den empfang der daten des usb GPS Empfängers nutze ich eine Komponente aus AsyncPRO => TapdComPort ![]() oder die hier => ![]() zieh die mal auf die form der rest ist eingentlich ganz einfach, wenn du hilfe brauchst melden ;) 1. Man braucht die Karte in einem Format (PDF,JPG,PNG, ...) => Klar und verständlich, sollte man ja diese hier nutzen können ich brauche lediglich eine karte von berlin ist eine regionale sache ![]() 2. Man muß die Auflösung ermitteln (in Pixeln) => auch kein Problem, sehe ich ja einfach in den Angaben im Explorer 3. Man muß von der Karte 2 möglichst weit voneinander entfernte Punkte möglichst sehr genau kennen, also Beispielsweise eine Kreuzung oben Links und unten Rechts (als GPS Koordinaten) damit Kalibriert man die Karte. => Könnte man über Google Earth 2 Referenzpunkte suchen und diese verwenden, sollte korrekt sein ansonsten fahr ich auch hin und mess das per gps aus ;) Damit kann man anhand der GPS Koordinaten die echten Entfernungen berechnen und somit "X-Scale und Y-Scale" Das habe ich jetzt noch nicht so richtig verstanden, kannst du mir das genauer erläutern bitte? |
Re: TSVOGISImage GPS Position in Karte anzeigen
"X-Scale und Y-Scale" ist natürlich noch etwas Gehirnschmalz:
Nehmen wir mal als Beispiel ein kleines Fenster 200 Breit(x) 300 Hoch(y) und unten Links wäre 0,0. Dein GPS Standort möchtest Du ja wohl (verschieben lassen wir erst mal weg) in der Mitte haben also bei x=100,y=150. Du berechnest also erst mal wo dieser Punkt innerhalb Deiner Karte liegt. Dieser Punkt liegt dann bei 100,150 auf dem Bildschirm (wenn man zentriert). So weit alles klar oder? (Zoom lassen wir auch erst mal weg - jeder freut sich ja über ein "Hello World" bevor es schwierig wird.) Mal angenommen Dein GPS Standort hast Du in der Karte ermittelt bei x=2000,y=3000. Also mußt Du als Ausschnitt darstellen den Bereich Links unten x=2000-100,y=3000-150 bis Rechts oben x=2000+100,y=3000+150. Je nach Auflösung der eingescannten Karte (oder was auch immer) siehst Du jetzt 1 Haus oder 1 Dorf oder .... - halt je nach Auflösung. Die +/- 1 Pixel Abweichung vom echten Mittelpunkt da einzubauen überlasse ich Dir mal. Das kann kommen, wenn es bis dahin funktioniert. Und für ZOOM muß man da noch jetzt halt noch eine Scalierung einbauen. Wenn man mehr Umland haben möchte, zeigt man halt den Ausschnitt Links unten x=2000-(100*xzoom),y=3000-(150*yzoom) bis Rechts oben x=2000+(100*xzoom),y=3000+(150*yzoom) ein. Normalerweise sind xzoom und yzoom identisch. Wie UNIT´s JPG/PNG/PDF skalieren keine Ahnung - da gibt es bestimmt irgendwo was fertiges. So und PAN (also verschieben) muß man dann nur den Mittelpunkt verschieben. Aber das sollte jetzt nicht mehr so schwer sein. Ich hoffe, ich habe mich jetzt nicht vertan. Wenns funktioniert, würden sich alle hier sicher mal über einen Screenshot freuen (ich jedenfalls). Ich habs noch nicht programmiert - ist Theorie - wenn nicht so müßte es aber so ähnlich vom Prinzip her funktionieren. Viel Erfolg beim Coden! |
Re: TSVOGISImage GPS Position in Karte anzeigen
genau so stelle ich mir das auch vor ;)
aaabbberr... jetzt hab ich entweder ne blockade oder ich bin doof ;) ich weise 0,0 pixel ecke oben links meiner karte mit hile von google earth einer geokoordinate zu, das ist klar... nur wie rechne ich jetzt andere geokoordinaten in pixel um damit ich weiß welchen teil meiner karte ich anzeigen muss ?? müsste ich nicht dazu 2 referenzpunkte haben??? oder ich etwas nicht verstanden ;) |
Re: TSVOGISImage GPS Position in Karte anzeigen
Ja, richtig. Es werden 2 Referenzpunkte gebraucht. Ich schrieb das unter #5 schon. Karte kalibrieren kann man das auch nennen.
Am Besten mal auf 1 DINA4 Seite mal ne Karte ausdrucken. 1) Koordinaten der Ecken in Pixel mal auf die Kartenecken schreiben. 2) Dann irgendwo 2 Kreuzungen bekommen dann GPS Koordinaten. Dazu auch die Pixel Koordinaten aufschreiben (einfach mal die 2 Punkte einzeichnen). Bis dahin ist ja nur Karte kalibrieren. Bis hier ist auch nicht festgestellt, wieviel Pixel auf der Karte wieviel Meter sind. Das ist noch alles ohne Maßstab! Wenn Du alles fertig hast, kannst Du ja einfach aus den 2 Punkten den Abstand X1,Y1 in Pixeln und den Abstand X2,Y2 aus den GPS Koodinaten errechnen. Weg 1: Damit kannst Du dann z.B. am Rand unten den Maßstab anzeigen (Bsp. 10 Pixel = 10m) oder so. Dann ist halt bei der einen Karte 300 Pixel = 250m bei einer anderen Karte 300 Pixel = 330m. Das steht ja dann im Maßstabsbalken/-linie. Der 2. Weg einen festen Maßstab vorzugeben bei der Anzeige ist natürlich viel schwerer. Also ich meine 300 Pixel = 300m und das egal, welche Auflösung die Karte hat. Ich würd erst mal die einfache Version coden. Wie ich hier beschrieben habe. Dabei kommt dann sicher die eine / andere Idee, wie man das machen kann. Jetzt noch ein Bildschirmfenster ausschneiden (kleines Notizblat oder Hafti). Da auch die Koorinaten in die Ecken und die Mitte schreiben. Das ist Dein Bildschrimfenster. In die Mitte machst Du ein kleines Loch. Das ist das "Auto" = 150/100. Die Karte unter dem Notizblatt schiebst Du nun herum, denn die Daten ändern sich ja, während der Notizzettel genau an der gleichen Stelle bleibt. Die Maus gibt Dir die GPS Daten durch das Loch ... (nicht andersherum). Wenn es heute noch nicht klick macht. Mal ne Nacht darüber schlafen. Wichtig: Es bewegt sich die Karte - nicht der Zettel. Schönen Abend noch! :hi: :coder: |
Re: TSVOGISImage GPS Position in Karte anzeigen
Die Frage mit dem JPG hat sich vielleicht hier schon gelöst:
![]() Ich hatte dann eben beim Autofahren noch eine Idee: Ich habe ja schon mal eine Karte für ein GPS kalibriert. Die Software hat das so gemacht, das sie zur der Bilddatei (z.B. BERLIN.JPG) auch eine Beschreibungsdatei hatte (z.B. BERLIN.PIX). In der Datei steht Teil 1 = Kalibrierung drin. Da ich keine Lust habe, das Stundenlag zu suchen - was kann da rein? Alles was statisch zur Karte ist: Also Bild einlesen (in Pixeln) X_MIN, Y_MIN (sagen wir mal meist ist das 0,0) -> Datei X_MAX, Y_MAX -> Datei ABS aus X_MIN, X_MAX = SIZE_X -> Datei ABS aus Y_MIN, Y_MAX = SIZE_Y -> Datei Wenn man nun das Bild darstellt in einem Fenster kann man über den Mausklick die X,Y des Fensters von Punkt1 bekommen. Das muß man nun auf das reale Bild umrechnen (Dreisatz). Diesen Punkt würd ich auch mal in die Dateischreiben P1X, P1Y Dann könntest Du ein Fenster aufpoppen lassen und gibst die GPS Koordinaten (GPS1B, GPS1L) ein -> Datei dto. mit Punkt2. P2X,P2Y, GPS2B, GPS2L (B=Breiten,L=Länge) -> Datei Aus ABS(GPS1B,GPS2B) kannst Du die Differenz der Breitengrade ermitteln -> Datei dto. für die Länge -> Datei dto. für die ABS(P1X,P2X) und ABS(P1Y,P2Y) -> Datei Über Dreisatz bekommst Du jetzt Pixel/Längengrad, Pixel/Breitengrad -> Datei Damit kannst Du auch X_MIN_GPS, Y_MIN_GPS -> Datei X_MAX_GPS, Y_MAX_GPS -> Datei ausrechnen. Also die Ecken - auch wenn die mitten in einem See liegen. Das mußte ich alles per Hand machen und ich hab es einmal gemacht. Du kannst das gleich besser machen (s.o.). Dann kannst Du noch ein Text eingeben, wo die Karte mit Beschriftet wird Text1="Berlin 2008" Close Datei. 1 x für jede Karte - die Daten ändern sich nicht - außer man bekommt eine neue Karte. Damit ist das Kalibrieren fertig. Was in der Datei steht, kann man ja auch noch erweitern, vielleicht macht ja die dpi Zahl noch Sinn. Wirst Du ja sehen. Diese Daten kannst Du dann wie eine LOG Datei mal mit goo earth oder so vergleichen. ---------------------------- Bei jedem Programmstart liest Du aus der Datei dann nur noch die Eckpunkte bzw. alles was Du brauchst. und Teil2 überlasse ich nun Dir oder Anderen. :hi: :coder: |
Re: TSVOGISImage GPS Position in Karte anzeigen
*grins* danke dir für deine ideen, mir lässt es auch keine ruhe... wollte heute eigenlich mal nicht die nacht vorm pc verbringen aber geht nich anders ;)))
ich überlege nur gerade was sinnvoller ist: 1. man macht 1 grosses bild z.b. von berlin, wie baut man dann aber im programm ein "frame" in welchem sich darunter das entsprechende (wesentlich grössere) bild bewegt => dürfte flüssiger sein 2. man macht ein riesen bild und kopiert sich je nach standort die benögtigten ansichten aus diesem heraus => könnte rechenintensiv werden wenn die karte zu gross ist 3. man macht lauter einzelbilder, diese benötigen dann aber jeweils immer eine zusätzliche configdatei ich tendiere zu version 1 allerdings weiß ich aktuell keinen rat wie ich die grosse karte (1000x1000pixel) unter einem "frame" hin und herschiebe... wie weit diese zu schieben ist wäre ja kein prblem, wenn ich weiß wieviel pixel in geokoordinaten sind rechne ich mir den erforderlichen kartenauscchnitt aus => fast das selbe wie 2. ;) |
Re: TSVOGISImage GPS Position in Karte anzeigen
Liste der Anhänge anzeigen (Anzahl: 1)
sooooooo ich bin nun auf jeden fall ein riesen stück weiter ;)
riesen dankeschön und guten morgen an ppc2008 ;) anbei mal ein kleiner screenshoot, man kann schon die karte im dem fesnter in alle richtungn scrollen, im mittelpunkt wird ein roter o angezeigt, der bleibt beim scrollen unverändert... man kann 2 referenzpunkte per maus + gps daten hinterlegen und morgen bzw. nachher gehts weiter mit der berechnung... dann bau ich das teil in mein gps programm und fahre los mal sehen obs geht ;) |
Re: TSVOGISImage GPS Position in Karte anzeigen
Sehr schön! Hab mir das JPG angesehen. Schön das ich Dir helfen konnte. :cheer:
Vielleicht läuft Dir ja mal eine Serial Unit für WinCE über den Weg: ![]() Dann laß es mich bitte wissen. :roll: Bis um 1 hab ich gegoog elt aber nichts gefunden. Alles geht nur auf Hardwarenähe von PC Boards bzw. als Betriebssystem W32. |
Re: TSVOGISImage GPS Position in Karte anzeigen
wenn ich dazu was finden sollte melde ich mich sofort ;)
danke dir nochmal :) |
Re: TSVOGISImage GPS Position in Karte anzeigen
hmmmmm jetzt habe ich ein problem...
mein gps sendet mir die signale long,lat im format Latitude 3723.2475 ddmm.mmmm Longitude 12158.3416 dddmm.mmmm gleiche ich meinen standpunkt aber mit google earth ab weichen die daten erhbelich ab ;( woran kann das liegen? |
Re: TSVOGISImage GPS Position in Karte anzeigen
|
Re: TSVOGISImage GPS Position in Karte anzeigen
sehr komisch... habe programm und gps maus mal mit nach hause genommen....
hier stimmen die daten mit google earth überein!!!!???? ganz geringe abweichen die allein durch runden der letzten stelle verschwindet mein programm => 01334,4389 (E) google earth => 13° 34.439'O wie geht das denn auf einmal????????? |
Re: TSVOGISImage GPS Position in Karte anzeigen
jetzt hab ich endlich die berechnung der pixel raus ;)
morgen dazu mehr :D danke nochmal an alle !!!!!!!!!! |
Re: TSVOGISImage GPS Position in Karte anzeigen
Einen guten Artikel zu GPS gibt es in Toolbox 1/2008, Seite 18-25, Koordinatentransformation mit Delphi.
Wobei das mehr Grundlagenwissen ist, als eine fertige GPS Toolbox. Hab aber noch nicht alles gelesen. Heft ist gerade eben angekommen. Kann man auch als Einzelheft bestellen: ![]() Dabei sind auch Artikel: Tips und Tricks für Delphi, Lazarus/FPC, Cross-Plattform-Design, Zugriff auf die PDA Registry und eine DVD mit den Ausgaben von 1997-2007. Kostet 10 EURO. |
Re: TSVOGISImage GPS Position in Karte anzeigen
ich hab die 10 euro auch investiert, deine anmerkungen und anregungen haben mich wesentlich weiter gebracht als sämtliche beispiele und texte auf der dvd...
wie du schon sagst gehts da rein ums grundwissen und es sind einige kleine rechentootls dabei, ich konnte für meinen zweck davon rein gar nix nutzen bisher ;( aber gut zu meiner frage... habe nun koordinaten des berliner fernsehturms <longitude>13.34986907121193</longitude> <latitude>52.51449860214778</latitude> wasn das nun wieder fürn format??? laut google earth wäre korrekt ca. 13° 24.568'O 52° 31.250'N |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz