Grundidee: Access liefert die Daten, Kartenanwendung zeigt sie an
Access kann keine Karten darstellen.
Aber Access kann Geokoordinaten speichern, liefern und verarbeiten.
Die Darstellung passiert dann ĂŒber:
- Google Maps
- OpenStreetMap
- ArcGIS
- QGIS
- oder eigene Weblösungen mit Leaflet oder Mapbox
Ziel: Daten mit Koordinaten in Access verwalten und extern auf Karten nutzen.
Schritt 1: Koordinaten sauber speichern
Du brauchst Felder wie:
Breitengrad
(Latitude)LĂ€ngengrad
(Longitude)- Optional:
Adresse
,PLZ
,Ort
Format: Double
, möglichst auf 6â8 Nachkommastellen.
Beispiel:
CREATE TABLE tblStandorte (
ID AUTOINCREMENT PRIMARY KEY,
Bezeichnung TEXT,
Breitengrad DOUBLE,
LĂ€ngengrad DOUBLE
)
Schritt 2: Google Maps im Formular öffnen
Public Sub KarteĂffnen(Breitengrad As Double, LĂ€ngengrad As Double)
Dim url As String
url = "https://www.google.com/maps/search/?api=1&query=" & Breitengrad & "," & LĂ€ngengrad
Application.FollowHyperlink url
End Sub
Button im Formular:
Private Sub cmdKarte_Click()
Call KarteĂffnen(Me.Breitengrad, Me.LĂ€ngengrad)
End Sub
Ăffnet direkt im Browser die richtige Position.
Schritt 3: Adressen in Koordinaten umwandeln (Geocoding)
Geht z.âŻB. ĂŒber die OpenCage-API oder Google Maps API.
Hier mit OpenCage (https://opencagedata.com):
Public Function GeocodeAdresse(adresse As String) As String
Dim http As Object
Set http = CreateObject("MSXML2.XMLHTTP")
Dim apiKey As String
apiKey = "dein-api-key"
Dim url As String
url = "https://api.opencagedata.com/geocode/v1/json?q=" & Replace(adresse, " ", "+") & "&key=" & apiKey
http.Open "GET", url, False
http.Send
GeocodeAdresse = http.responseText
End Function
Ergebnis ist JSON â Koordinaten extrahieren mit Parser oder String-Split.
Schritt 4: Koordinaten an QGIS oder ArcGIS ĂŒbergeben
QGIS: CSV exportieren und einlesen
DoCmd.TransferText acExportDelim, , "qryGeodaten", "C:\Export\geodaten.csv", True
In QGIS:
- CSV mit
X=Longitude
,Y=Latitude
einlesen - als Punktlayer darstellen
ArcGIS: REST oder CSV-Import
ArcGIS kann REST-Schnittstellen nutzen.
Oder Du lieferst eine CSV mit Koordinaten, die dann automatisiert eingelesen wird.
Schritt 5: Access als Geo-Backend fĂŒr Webkarte
Du willst z.âŻB. mit Leaflet oder OpenLayers arbeiten?
Dann bau Dir eine kleine REST-API in z.âŻB. Python oder Node.js, die Access per ODBC abfragt und GeoJSON ausgibt.
Beispiel fĂŒr GeoJSON-Ausgabe:
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [10.12345, 53.54321]
},
"properties": {
"name": "Standort A",
"id": 1
}
}
Zugriff aus Access ĂŒber Shell oder Webbrowser.
Bonus: Entfernung berechnen in VBA (Haversine-Formel)
Public Function BerechneEntfernung(lat1 As Double, lon1 As Double, lat2 As Double, lon2 As Double) As Double
Const PI = 3.14159265359
Const R = 6371 ' Erdradius in km
Dim dLat As Double
Dim dLon As Double
dLat = (lat2 - lat1) * PI / 180
dLon = (lon2 - lon1) * PI / 180
Dim a As Double
a = Sin(dLat / 2) ^ 2 + Cos(lat1 * PI / 180) * Cos(lat2 * PI / 180) * Sin(dLon / 2) ^ 2
BerechneEntfernung = R * 2 * Atn2(Sqr(a), Sqr(1 - a))
End Function
NĂŒtzlich fĂŒr Umkreissuche oder Radiusfilter.
Einsatzbeispiele aus der Praxis
- Kundenstandorte auf Karte
- AuĂendienst-Routenplanung
- GerÀte- oder Anlagenverortung
- Baustellen, MĂ€ngel, Meldungen
- Entfernungslogik (z.âŻB. < 20âŻkm Umkreis)
Fazit fĂŒr Entwickler
Access kann keine Karte darstellen.
Aber mit Webservices, APIs oder Exportformaten kannst Du Geodaten nahtlos integrieren.
No responses yet