Die Klasse MapPoint definiert geografische Punkte (Länge, Breite) sowie Methoden, um mit den geografischen Punkten im 'World Geodetic System 1984' (WGS84 oder EPSG:4326) zu arbeiten.
Wenn Sie noch nie mit geografischen Koordinaten gearbeitet haben, dann hilft ein Blick auf diese Webseiten weiter:
Folgende Startwerte sind in den Gambas-Projekten erfolgreich erprobt worden:
Die Klasse MapPoint verfügt über diese Eigenschaften:
Eigenschaft | Datentyp | Beschreibung |
---|---|---|
Lat | Float° | Gibt die geografische Breite eines Karten-Punktes (MapPoint) als dezimalen Grad-Wert zurück. |
Lon | Float° | Gibt die geografische Länge eines Karten-Punktes als dezimalen Grad-Wert zurück. |
Tabelle 24.8.3.2.1 : Eigenschaften der Klasse MapPoint
Die Funktion MapPoint(Latitude As Float, Longitude As Float) As MapPoint initialisiert ein Karten-Objekt mit einem geografischen Start-Punkt (Breite°, Länge°):
Dim myMapPoint As MapPoint = MapPoint(52.78631, 11.73872) ' Ort Osterburg
24.8.3.3 Methoden Die Klasse MapPoint besitzt die folgenden drei Methoden:
Methode | Rückgabetyp | Beschreibung |
---|---|---|
Distance ( PointA As MapPoint, PointB As MapPoint ) | Float | Die Funktion berechnet den (direkten) Abstand (Distanz in Metern!) zwischen zwei geografischen Punkten, von denen die geografische Breite und Länge als dezimaler Grad-Wert bekannt sind. |
Bearing(From As MapPoint, To As MapPoint) | Float | Berechnet die (Start-)Peilung in Grad zwischen zwei geografischen Punkten, von denen die Breite und Länge als dezimaler Grad-Wert bekannt sind. |
From(MapPoint as MapPoint, Bearing As Float, Distance As Float) | MapPoint | Errechnet den Zielpunkt B aus einem Startpunkt A, einer Peilung (im Gradmaß) und einer Distanz (in Metern). In diesem Sinne ist From() invers zu Distance() und Bearing(). |
Tabelle 24.8.3.3.1 : Methoden der Klasse MapPoint
Das Beispiel bezieht sich auf die Berechnungen der Entfernung und der Start-Peilung für die beiden Städte Osterburg und Berlin:
Dim mpOsterburg, mpBerlin As MapPoint mpOsterburg = New MapPoint(52.78631, 11.73872) mpBerlin = New MapPoint(52.516250, 13.378870) Print "Geografische Breite 'Osterburg' = "; mpOsterburg.Lat; "°" Print "Geografische Länge 'Osterburg' = "; mpOsterburg.Lon; "°" Print "Entfernung Osterburg-Berlin = "; Round(Distance(mpOsterburg, mpBerlin) / 1000, -3); " km" Print "Start-Peilung = "; Round(Bearing(mpOsterburg, mpBerlin), -3); "°"
Ausgabe in dere Konsole der IDE:
Geografische Breite 'Osterburg' = 52,78631° Geografische Länge 'Osterburg' = 11,73872° Entfernung Osterburg-Berlin = 114,994 km Start-Peilung = 104,532°
Abbildung 24.8.3.4.1: Entfernung Osterburg – Berlin (Luftlinie)
Auch das Konsolen-Programm geod liefert sehr gute Ergebnisse, da es – wie auch die Komponente gb.map – das Modell WGS84-Ellipsoid zur Berechnung verwendet. Es ist schnell installiert:
hans@linux:~$ sudo apt-get install proj-bin
und liefert mit dem folgenden Aufruf und den danach einzugebenden geografischen Koordinaten für zwei Orte (Osterburg und Berlin (Mitte)) adäquate Ergebnisse (Angabe der Entfernung in Kilometern) wie die MapPoint.Distance-Methode:
hans@linux:~$ geod +ellps=WGS84 +units=km -I 52.78631 11.73872 52.516250 13.378870 104d29'46.077" -74d11'59.931" 114.994
Artikel