Mappoint Längen-Breitengrade

Rund um MS-MapPoint

Moderator: Moderatoren

Antworten
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Mappoint Längen-Breitengrade

Beitrag von AUGE_OHR »

hi,

Wenn ich einen Waypoint über das Resultat von FindAddressResults() setzte habe ich nicht seine
Koordinaten. Wenn ich über GetLocation() gehe muss ich ja die Koordinaten setzten um einen
Punkt zu bekommen. Wenn ich nun 2x GetLocation() habe, müsste ich doch die Koordinaten des
3th. Waypoint errechnen können wenn ich die Distanzen habe ?

Wie wende ich nun den "Pythagoras" auf Geo-Koordinaten an ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Mappoint Längen-Breitengrade

Beitrag von AUGE_OHR »

http://www.mp2kmag.com/articles.asp?ArticleID=13

Code: Alles auswählen

def CalcPos(objMap, locX):
    locNorthPole = objMap.GetLocation(90, 0)
    locSantaCruz = objMap.GetLocation(0, -90)
    dblHalfEarth = objMap.Distance(locNorthPole, objMap.GetLocation(-90, 0))
    dblQuarterEarth = dblHalfEarth / 2
    
    # Compute latitude from distance to north pole
    dblLat = 90 - 180 * objMap.Distance(locNorthPole, locX) / dblHalfEarth
    
    # Compute great circle distance to locX from point 
    # on Greenwich meridian and computed Latitude
    d = objMap.Distance(objMap.GetLocation(dblLat, 0), locX)
    
    # convert latitude to radian
    l = (dblLat / 180) * math.pi
    
    # Compute Longitude from great circle distance
    dblLon = 180 * math.acos((math.cos((d * 2 * math.pi)/(2 * dblHalfEarth)) -
             math.sin(l) * math.sin(l))/(math.cos(l) * math.cos(l))) / math.pi

    # Correct longitude sign if located in western hemisphere
    if objMap.Distance(locSantaCruz, locX) < dblQuarterEarth:
        dblLon = -1 * dblLon
    
    return (dblLat, dblLon)
stimmt es das :
As an aside, you only need to use CalcPos with MapPoint 2002 & 2004.
2006 supports this functionality as properties of the Location object.
gruss by OHR
Jimmy
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Mappoint Längen-Breitengrade

Beitrag von Lewi »

Hallo Jimmy,
der Satz des "Phytagoras" gilt nur für rechtwinklige Dreiecke. In Deinem Fall kann ja nicht davon ausgegangen werden, dass die fehlende Koordinate in Verbindung mit den anderen Koordinaten ein rechtwinkliges Dreieck bildet.

Fur die Berechnung eines beliebigen Dreiecks braucht man mind. 3 Seitenlängen oder 3 Winkel.

Gruß, Olaf
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Mappoint Längen-Breitengrade

Beitrag von brandelh »

Lewi hat geschrieben:der Satz des "Phytagoras" gilt nur für rechtwinklige Dreiecke.
lang lang ist es her ... zudem besteht ein Problem durch die Erdkrümmung (je nach Entfernung)
und Straßen bzw. Höhenunterschiede. Das wirkt sich ja alles auf die Länge aus.

Mit dem Zirkel wäre es einfacher ;-)
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Mappoint Längen-Breitengrade

Beitrag von AUGE_OHR »

hi,
Lewi hat geschrieben: Fur die Berechnung eines beliebigen Dreiecks braucht man mind. 3 Seitenlängen oder 3 Winkel.
habe ich : 1st. Nordpol , 2nd Äquator und der 3th. Punkt ist den den ich setzte. Die Entfernungen
habe ich auch.
brandelh hat geschrieben: ... zudem besteht ein Problem durch die Erdkrümmung (je nach Entfernung)
und Straßen bzw. Höhenunterschiede. Das wirkt sich ja alles auf die Länge aus.
ok aber wenn ich 2 BAB Auffahrten habe müsste ich doch damit zumindest feststellen können ob die
weiter östlich oder westlich liegen ... so an der 5th Stelle hintem Komma ...
gruss by OHR
Jimmy
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Mappoint Längen-Breitengrade

Beitrag von Lewi »

Hi Jimmy,
ich habe mir Deine Eingangsfrage nochmals durchgelesen. Allerdings werde ich jetzt nicht ganz schlau daraus. Was möchtest Du denn nun berechnen?
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Mappoint Längen-Breitengrade

Beitrag von AUGE_OHR »

Hi,
Lewi hat geschrieben: ich habe mir Deine Eingangsfrage nochmals durchgelesen. Allerdings werde ich jetzt nicht ganz schlau daraus. Was möchtest Du denn nun berechnen?
Die Geo Koordinaten des 3th Punkt mit Hilfe der Entfernung zum Nordpol und dem Äquator auf
0 Grad Breite = 90 Grad zum Nordpol.
gruss by OHR
Jimmy
Benutzeravatar
Lewi
1000 working lines a day
1000 working lines a day
Beiträge: 830
Registriert: Di, 07. Feb 2006 14:10
Wohnort: Hamburg
Danksagung erhalten: 2 Mal

Re: Mappoint Längen-Breitengrade

Beitrag von Lewi »

Wie errechnest Du Du denn von einem Punkt ausgehend die Entfernungen zum Nordpol und zum Äquator? Beide Längen entsprechen einer geodätischen Linie auf einem Rotationsellipsoid (Erde) und nicht einer geometischen Geraden auf einer planen Fläche.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Mappoint Längen-Breitengrade

Beitrag von brandelh »

Hi,

Grundsätzlich gibt es ja zu jedem Punkt einen Wert aus Breite und Länge.
Solche Werte erhalte ich z.B. auch wenn ich auf der elektronischen Landkarte
meine Wanderroute auswähle bzw. meinen Track ansehe.
Innerhalb der Trackdatei (GPX) wird aber statt der von mir erwarteten Werte
lat="43.1625023" lon="-1.2382736" für einen Punkt in St. Jean Pied de Port angezeigt.

Nachtrag:

negative Werte bezeichnen WESTLICH vom Null-Meridian und wenn man auf dem Globus
nachsieht, wird es klar, dass der Ort nicht weit davon weg ist ;-)

Mit

http://maps.google.com/?ie=UTF8&ll=43.1 ... 04935&z=17

kannst du den Kartenausschnitt aufrufen. Die Rue de la Citadelle.

Warum erzähle ich das ?

Du must nachsehen, welche Daten du erhältst - falls das Naviteil überhaupt solche Werte ausgibt.
Ob ein Punkt nördlicher liegt, müsstest du direkt aus seinem LAT Wert ablesen können.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Mappoint Längen-Breitengrade

Beitrag von brandelh »

Hallo Jimmy,

neben dem Studium, welche Werte du erhältst, solltest du dir das mal ansehen

http://de.wikipedia.org/wiki/Breitengrad

und zusätzlich Google-Earth installieren. Da erhält man schöne Einblicke :-) .
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Mappoint Längen-Breitengrade

Beitrag von Martin Altmann »

Moins,
lasst den armen Jimmy doch man heute seinen 52. Geburtstag in Ruhe feieren... :blob8: :occasion6: :occasion4:

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Mappoint Längen-Breitengrade

Beitrag von brandelh »

Herzlichen Glückwunsch auch von mir,

unten steht es nicht, vielleicht wollte er es geheim halten ;-)
Gruß
Hubert
Benutzeravatar
Martin Altmann
Foren-Administrator
Foren-Administrator
Beiträge: 16502
Registriert: Fr, 23. Sep 2005 4:58
Wohnort: Berlin
Hat sich bedankt: 111 Mal
Danksagung erhalten: 48 Mal
Kontaktdaten:

Re: Mappoint Längen-Breitengrade

Beitrag von Martin Altmann »

Hallo Hubert,
da hättest Du heute ein wenig früher im Forum sein müssen :D
Er hat heute früh sein Geburtsdatum im Profil hinterlegt, den dicken Glückwunschbanner am oberen Rand gesehen und dann lieber wieder sein Datum entfernt - es erschien ihm zu wuchtig... :)

Viele Grüße,
Martin
:grommit:
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/

Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Mappoint Längen-Breitengrade

Beitrag von AUGE_OHR »

hi,

so nun ist der Geburtstag vorbei und die Arbeit ruft.
Lewi hat geschrieben: Wie errechnest Du Du denn von einem Punkt ausgehend die Entfernungen zum Nordpol und zum Äquator? Beide Längen entsprechen einer geodätischen Linie auf einem Rotationsellipsoid (Erde) und nicht einer geometischen Geraden auf einer planen Fläche.
Yup genau das ist mein Problem :)
Ich bin mir noch nicht sicher wie die ganze Geo Koordinaten Rechnerei funktioniert ...

... da ich doch "nur" relative Strecken für mein Dreieck brauche müsste ein gedachtes
Dreieck Quer durch die Erde doch auch die 3 Punkte verbinden ... (ok gäbe dann immer
2 Möglichkeiten +/- Breitengrad ...)

Ich hoffe das ich diesen Teil MapPoint "überlassen" kann und mit der Route Methode
Distance() einfach nur die "Strecke" zwischen den Punkten bekomme um mein Dreieck
zu haben.

Der Code oben ist der "empfohlene" aus dem http://www.mapforums.com/development/
der die "fehlende" Funktion in MapPoint 2004 simulieren soll (Die MP 2006 soll die Geo
Koordinaten zurückgeben ...)

Ich muss den also "nur" übersetzten, aber ich würde auch gerne das Prinzip verstehen
wie die Navi´s nun arbeiten.
gruss by OHR
Jimmy
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Mappoint Längen-Breitengrade

Beitrag von brandelh »

Hi,

also die Navi-Systeme arbeiten garantiert nicht mit "geraden durch die Erde"
noch mit komplizierten Berechnungen der Längen und Breitengrade.
So navigiert man höchstens auf dem Wasser oder in der Luft ;-)

Ein Auto muss sich auf Straßen halten und dabei noch Infos wie Einbahnstraße
Beschränkungen Geschwindigkeit etc. kümmern.
Zu Hause habe ich ein Buch in dem es erklärt wird, im Prinzip ahmt man das
Verhalten von Ameisen nach. Die laufen in alle Richtunge und markieren ihren Weg.
Die Ameise die als erstes ankommt hat den kürzesten Weg gefunden ;-)

Die Navis nützen DATENBANKEN über Straßen. Diese werden verknüpft bis ich von A nach B
gekommen bin. Diese Datenbanken enthalten sowohl CPS Werte als auch andere Infos über
Die Straße. Erstellt werden sie mit Luftbildern, abfahren und nachmessen ... alles
sehr aufwändig, daher sind die Karten so teuer. Viel Rechenleistung haben die Navis auch nicht.
Sie müssen aus den vielen Einzelstrecken die raussuchen die am Besten passen.
Schau dir doch mal eine solche Reiseroute von ViaMichelin an.
Zuerst die kleineren Straßen die zur nächsten Autobahn führen.
Dann Autobahnen bis in die nähe des Ziels, dann dort die kleinen Straßen.
Sicher prüfen die über den Breiten und Längengrad ob sie in die richtige Richtung fahren,
aber ähnlich wie die Ameisen, die in alle Richtungen rennen, kann es nötig sein nach Süden
Richtung Autobahn zu fahren bevor wir nach Richtung Norden kommen.

Diese Aufgabe muss MAPPOINT (bzw. eine andere Routingsoftware) erledigen.
Nur diese hat die Infos aus den Karten und die Karten sind normalerweise sehr gut geschützt.
Warum machst du übrigens mit 2004 herum ?

Wenn du wirklich damit arbeiten willst brauchst du mindestens einmal im Jahr neue Karten.
Gruß
Hubert
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Mappoint Längen-Breitengrade

Beitrag von AUGE_OHR »

hi,
brandelh hat geschrieben: ...Verhalten von Ameisen nach. Die laufen in alle Richtungen und markieren ihren Weg.
Die Ameise die als erstes ankommt hat den kürzesten Weg gefunden ;-)
also hat das ganze auch was mit Labyrinth und Spieltheorie zu tun ...
brandelh hat geschrieben: Warum machst du übrigens mit 2004 herum ?
ich hatte bei einem Kunden eine original verpackte Version entdeckt
und ihm die "abgeschwatzt". Die 2004 reicht ja erstmal zum "spielen"
und kennen lernen. Ich denke ich werde auf die 2009 updaten wenn
die Europa Version rauskommt.
brandelh hat geschrieben: Wenn du wirklich damit arbeiten willst brauchst du mindestens einmal im Jahr neue Karten.
JA ... aber nicht unbedingt für deutsche Autobahnen, das dauert eher Jahre bis alle Einsprüche
(Wachtelkönig ...) abgelehnt werden und die dann endlich bauen können.
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Mappoint Längen-Breitengrade

Beitrag von AUGE_OHR »

moin,

ich hab es ja mit der Berechnung soweit hin bekommen
siehe http://www.xbaseforum.de/viewtopic.php?f=49&t=2730

und nun die nächste Frage :

Code: Alles auswählen

PushPin1:ID  8.414KM       54.23002   10.89815

TC        : 10.000KM       ??.?????   ??.?????

PushPin2:ID 11.310KM       54.20399   10.89938
ich habe den Pushpin jeweils die Distance() vom Ausgangspunkt (Geodaten) als :Name() gegeben.
nun hab ich auch die Längen und Breitengrade.

Leider stimmen "meine" Pushpin nicht mit den Auf-/Ab- fahrten überein (das wäre ja auch viel zu
einfach ...), aber sie liegen alle "auf" der Autobahn sind also "verwertbar".

Die Frage ist die bekomme ich nun von der Toll Collect Angabe (10KM) die Längen und Breitengrade ?
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Mappoint Längen-Breitengrade

Beitrag von AUGE_OHR »

hi,
AUGE_OHR hat geschrieben:

Code: Alles auswählen

PushPin1:ID  8.414KM       54.23002   10.89815
TC        : 10.000KM       ??.?????   ??.?????
PushPin2:ID 11.310KM       54.20399   10.89938
es scheint ganz einfach ...
Set objLocNY = objMap.FindResults("New York, NY").Item(1)
Set objLocLA = objMap.FindResults("Los Angeles, CA").Item(1)

'Den Punkt auf dem Bildschirm mitten zwischen diesen beiden Punkten bestimmen
X1% = objMap.LocationToX(objLocNY)
Y1% = objMap.LocationToY(objLocNY)
X2% = objMap.LocationToX(objLocLA)
Y2% = objMap.LocationToY(objLocLA)
x% = (X1% + X2%) / 2
y% = (Y1% + Y2%) / 2
Set objCenter = objMap.XYToLocation(x%, y%)
mit FindResults() werden 2 Objecte angelegt "NY" und "LA". Diese werden nun mit LocationToX()
bzw. LocationToY() auf die Karte gezeichnet. Da in diesen Fall die "Mitte" angezeigt werden soll
werden nun die X und Y Bildschirm Koordinaten summiert und durch 2 geteilt. Damit hat man nun
auf dem Bildschirm "den" Punkt. Wenn man nun die Location abfragt kann man die Geo Koordinaten
"errechnen".

soweit sogut, aber nun "hänge" ich in einer "Gedankenschleife" ...
BAB1LWL.JPG
BAB1LWL.JPG (206.89 KiB) 17002 mal betrachtet
im oberen Browser sieht man die MapPoint Daten, wobei die KM Angaben "nicht so genau" zu
nehmen sind. Im unteren Browser hab ich nun eine Mauttabelle ... und suche BAB24 Station 12
"Ludwigslust" welches 16.7 KM von BAB24 Station 11 "Hagenow" entfernt liegt.

Im oberen Browser habe ich nun auch "Hagenow" und die nächste Übereinstimmung wäre
BAB24 Station 14 "Neustadt-Glewe". so nun sehen wir uns mal die Karte an
BAB2LWL.JPG
BAB2LWL.JPG (169.83 KiB) 17001 mal betrachtet
Ich habe da man die "Gegenfahrbahn" auch markiert damit man "sieht" was ich mit "nicht so genau"
meine ... es reicht mir ja schon mal ein Anhaltspunkt ...

nun müsste man mal anfangen zu rechnen: Aus der Mauttabelle

Code: Alles auswählen

Hagenow                        │ 16.7 │  53.485700 │  11.214430
Ludwigslust                    │  2.1 │   0.000000 │   0.000000
Schwerin, Dreieck              │  8.0 │   0.000000 │   0.000000
27,8 KM
Neustadt-Glewe                 │  7.8 │  53.373950 │  11.637310
aus den MapPoint Daten

Code: Alles auswählen

Hagenow             │     90.332 │  53.485700 │  11.214430
Wöbbelin            │     98.073 │  53.431130 │  11.487790
Fahrbinde           │     98.073 │  53.431240 │  11.487640
Lüblow              │    101.273 │  53.431740 │  11.462470
Hoort               │    110.013 │  53.457300 │  11.352700
Rastow              │    110.793 │  53.430040 │  11.428700

20,751KM
Neustadt-Glewe      │    111.083 │  53.373950 │  11.637310
die GPS Daten in der Mauttabelle habe "ich" übertragen ... nicht das jemand denkt ...

also ... ich habe ... Ortsnamen (die nicht identische mit GPS sein müssen)
... Auf- / Abfahrten (von TC) ... Punkte auf der Autobahn mit GPS Daten (von MapPoint) ...
"ca." Angaben von KM weil MapPoint manchmal "komische" Calulate() Daten liefert (evtl
Gegenfahrbahn) ...

suchen tue ich BAB24 Station 12 "Ludwigslust" und davon die GPS Koordinaten ...

... und bitte sagt mir nicht das LWL am unteren Bildrand ist und man es deshalb nicht "sieht" den
ich suche nicht die "City" sondern die BAB Abfahrt No.12 "Ludwigslust".

helft mir mal auf die Sprünge ... irgendwie weiss ich z.Z. nicht welche Daten ich wie verarbeiten soll :banghead:
gruss by OHR
Jimmy
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12903
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 44 Mal

Re: Mappoint Längen-Breitengrade

Beitrag von AUGE_OHR »

hi,

ok ich habe mich durch die KM Angaben "verwirren" lassen. Ich habe versucht die MapPoint KM
und die MautTabelle KM zu "synchronisieren", aber "falsche" KM führen auch zu falschen
Resultaten ...

"gemerkt" hab ich es an der BAB 24 weil MapPoint mir da sagt das die Anschlussstelle "Reinbeck"
ca. 22,550KM vom Anfang entfernt sein soll. Das stimmt aber nicht den ich "weiss" das es nur
ca. 11KM sind. Der "Fehler" steckte nun hinter dem BAB Kreuz OST wo MapPoint "über die Dörfer"
fährt ... aber da gibt es keine Auf- / Ab-fahrten ... deshalb ca. 10KM statt 4.6KM die ich als
"Rennstrecke" habe wenn ich den Wagen mal "ausfahren" will ... und wenn er dann mal richtig
gut läuft, gehe ich nicht vom Gas sondern fahre weitere 6.8KM bis nach "Witzhave" ... (jaja es
gibt dort eigentlich eine Beschränkung 120KM/H, aber um 06:00 sind nicht so viele unterwegs ...)

ok zurück zum Thema. Im Thread http://www.xbaseforum.de/viewtopic.php?f=49&t=2730
habe ich ja nun beschrieben wie man mit kartesisches Koordinaten "rechnen" kann. Hierbei ist
zu beachten das man möglichst "viele Stellen hinterm Komma" hat, den schon die 4th Stelle
hinterm Komma macht ja 10m aus.

Relevant ist ja nur die Mauttabelle und die vorgegebenen KM Angaben und ich gehe ja immer von
einer "idealen" Strecke zwischen 2 Punkten aus. Der Ausgangs Punkt wird also, wie bei der Map-
Point Routine, per "manueller" Geo Koordinaten festgelegt. Nun habe ich von MapPoint "irgendwo"
ja den nächsten Waypoint ... und auch eine Entfernung ( Calulate() by MapPoint ) und weiter
Geo Koordinaten ... und irgendwo dazwischen, 10,8 KM von Anfangspunkt, kommt die Anschluss-
stelle "Reinbeck".

Ich bin nun "nach Formel" vorgegangen und habe aus den beiden GPS Koordinaten die Strecke "c"
berechnet und siehe da es kommt ein Unterschied zur Optimze()/Calculate() Methode von Map-
Point raus wobei ich nicht nur den Unterschied "Luftlinie" meine.

Also nun mal die Formel umstellen und "c" mit 10.8KM von Anfangsort vorgeben und ich erhalte
eine neues Geo Koordinaten Paar. Dies von MapPoint in der Karte eingetragen "trifft" es schon
recht genau ... je nachdem wie viele Stellen hinterm Komma man nimmt (ich nehme jetzt N,10,6)

Als letztes jetzt noch mal eine "Gegenprobe" und den GPS Wert von MapPoint suchen lassen und
mit "seiner" Tabelle verglichen ... tja da kommt dann "Barsbüttel" raus was nördlich der BAB 24
liegt und "Reinbeck" liegt südlich der BAB 24 ... keine 50m Differenz ...

naja sowas in der Art kenne ich ja von Postleitzahlen. Ich habe hier die 21509, aber wenn ich
über die Strasse gehe bin ich in 21465 ... die Grenze liegt in der Strassenmitte.

Zusammenfassung : Mittels der CalcPos() Routine lässt sich unter MapPoint 2004 rechte genau
eine neue Location berechnen. Wenn man nun zwei Paar Geo Koordinaten hat kann man damit
die "Luftlinie" als Entfernung berechnen. Sucht man nun einen Punkt auf dieser "Luftlinie" so
braucht man die Entfernung zu einem Geo Punkt und dessen Koordinaten und kann damit die
neuen Koordinaten berechnen.

Code: Alles auswählen

METHOD XbMap:CalcPos(oMap, oLoc, nLocLat, nLocLon,nTest)                      
LOCAL oNordPol                                                                
LOCAL oStCruz                                                                 
LOCAL oSuedPol                                                               
LOCAL dblHalfEarth                                                            
LOCAL dblQuarterEarth                                                         
LOCAL Pi := 3.14159265358979                                                  
LOCAL d,l                                                                     
                                                                              
   oNordPol := oMap:GetLocation( 90,  0)                                      
   oStCruz  := oMap:GetLocation(  0,-90) // Center of western hemisphere      
   oSuedPol := oMap:GetLocation(-90,  0)                                      
                                                                              
   // Compute distance between north and south poles == half earth circumference
   dblHalfEarth    := oMap:Distance(oNordPol,oSuedPol)                        
                                                                              
   // Quarter of that is the max distance a point may be away from locSantaCruz 
   // and still be in western hemisphere
   dblQuarterEarth := dblHalfEarth / 2                                        
                                                                              
   // Compute latitude from distance to north pole                            
   nLocLat := 90 - 180 * oMap:Distance(oNordPol, oLoc) / dblHalfEarth         
                                                                              
   // Compute great circle distance to locX from point on Greenwich meridian and computed
   // Latitude
   d := oMap:Distance(oMap:GetLocation(nLocLat, 0), oLoc)                     
                                                                              
   // convert latitude to radian                                              
   l := (nLocLat / 180) * nPi                                                 
                                                                              
   // Compute Longitude from great circle distance                            
   nLocLon := 180 * Arccos((Cos((d * 2 * nPi) / ;
                            (2 * dblHalfEarth)) - Sin(l) * Sin(l)) / (Cos(l) * Cos(l))) / nPi
   // 
   // nur als Gegentest mit Xbase++ Source     
   nTest   := 180 * YYArccos((YYCos((d * 2 * nPi) / ;
                            (2 * dblHalfEarth)) - YYSin(l) * YYSin(l)) / (YYCos(l) * YYCos(l))) / nPi
                                                                           
   // Correct longitude sign if located in western hemisphere                 
   If oMap:Distance(oStCruz, oLoc) < dblQuarterEarth                          
      nLocLon = nLocLon*(-1)                                                  
   ENDIF     
                                                                 
RETURN self
gruss by OHR
Jimmy
Antworten