std.geo

Geografische Koordinaten im WGS-84-System als GeoPoint (Längengrad/Breitengrad in Mikro-Grad: 1 Grad = 1.000.000 Einheiten). Berechnet Abstände über die Haversine-Formel (sphärische Erde, Erdradius 6.371.000 m), Peilung (Bearing), Mittelpunkte, Bounding-Boxes und prüft Punkt-in-Rechteck. Unterstützt DMS-Format (Grad, Minuten, Sekunden) und Umrechnung.

Einsatzbereiche: Standortdienste, Kartenanwendungen, Geo-Fencing, Umkreissuche (SEO-Local-Pack), Routenberechnungen, Point-of-Interest-Filterung.

Autor: Andreas Röne
Copyright: 2024-2025 Andreas Röne


Typen

GeoPoint (struct)

Feld Typ
x int64
y int64

Konstanten

Name Typ Wert Sichtbarkeit
EARTH_RADIUS_METERS int64 6371000 priv
COS_TABLE_SIZE int64 91 priv

Funktionen

Signatur Sichtbarkeit Beschreibung
ParseLat(s: pchar): int64 pub Parst Breitengrad-String zu Mikro-Grad
ParseLon(s: pchar): int64 pub Parst Längengrad-String zu Mikro-Grad
ParseCoord(s: pchar): int64 priv Parst Koordinaten-String intern zu int64
FormatDecimal(coord: int64): pchar pub Formatiert Mikro-Grad als Dezimalstring
IsValidLat(lat: int64): bool pub Prüft Breitengrad auf WGS-84-Gültigkeit
IsValidLon(lon: int64): bool pub Prüft Längengrad auf WGS-84-Gültigkeit
IsValidGeoPoint(p: GeoPoint): bool pub Prüft GeoPoint auf gültige Koordinaten
GeoPointNew(lon: int64, lat: int64): GeoPoint pub Erstellt neuen GeoPoint aus Koordinaten
DistanceM(p1: GeoPoint, p2: GeoPoint): int64 pub Berechnet Abstand in Metern (Haversine)
DistanceMLegacy(lat1: int64, lon1: int64, lat2: int64, lon2: int64): int64 pub Berechnet Abstand aus Einzelkoordinaten
DistanceKm(p1: GeoPoint, p2: GeoPoint): int64 pub Berechnet Abstand in Kilometern
DistanceSq(p1: GeoPoint, p2: GeoPoint): int64 pub Berechnet quadratischen Näherungsabstand
IsWithinDistanceM(p1: GeoPoint, p2: GeoPoint, thresholdM: int64): bool pub Prüft ob Abstand unter Schwellenwert liegt
Midpoint(p1: GeoPoint, p2: GeoPoint): GeoPoint pub Berechnet geografischen Mittelpunkt zweier Punkte
MidpointLat(lat1: int64, lat2: int64): int64 pub Berechnet Mittel-Breitengrad
MidpointLon(lon1: int64, lon2: int64): int64 pub Berechnet Mittel-Längengrad
IsPointInRect(p: GeoPoint, min: GeoPoint, max: GeoPoint): bool pub Prüft ob Punkt in Bounding-Box liegt
BoundingBoxMin(p1: GeoPoint, p2: GeoPoint): GeoPoint pub Berechnet Minimaleckpunkt der Bounding-Box
BoundingBoxMax(p1: GeoPoint, p2: GeoPoint): GeoPoint pub Berechnet Maximaleckpunkt der Bounding-Box
DoBoundingBoxesOverlap(min1: GeoPoint, max1: GeoPoint, min2: GeoPoint, max2: GeoPoint): bool pub Prüft Überschneidung zweier Bounding-Boxes
BoundingBoxCenter(min: GeoPoint, max: GeoPoint): GeoPoint pub Berechnet Mittelpunkt einer Bounding-Box
Bearing(p1: GeoPoint, p2: GeoPoint): int64 pub Berechnet Peilwinkel zwischen zwei Punkten
CosLatTable(latDeg: int64): int64 priv Liefert Kosinus-Näherung des Breitengrades
HaversineDistanceM(p1: GeoPoint, p2: GeoPoint): int64 pub Berechnet Haversine-Abstand in Metern
ParseDMS(degrees: int64, minutes: int64, seconds: int64, direction: int64): int64 pub Parst Grad-Minuten-Sekunden zu Mikro-Grad
FormatDMS(coord: int64, isLatitude: bool): pchar pub Formatiert Koordinate als DMS-String
IsPointInRect2(p: GeoPoint, minLat: int64, minLon: int64, maxLat: int64, maxLon: int64): bool pub Prüft Punkt gegen explizite Bounding-Box
CalculateBoundingBoxMin(center: GeoPoint, radiusM: int64): GeoPoint pub Berechnet Min-Eckpunkt für Umkreis
CalculateBoundingBoxMax(center: GeoPoint, radiusM: int64): GeoPoint pub Berechnet Max-Eckpunkt für Umkreis
AddOffsetM(center: GeoPoint, bearing: int64, distanceM: int64): GeoPoint pub Verschiebt GeoPoint um Distanz in Richtung
CorrectLongitudeForLatitude(dLon: int64, lat: int64): int64 pub Korrigiert Längengrad-Delta für Breite
DistanceMCorrected(p1: GeoPoint, p2: GeoPoint): int64 pub Berechnet breitengradkorrigierten Abstand