Jobbar du med data från Lantmäteriet och vill visa den på Google Maps eller i andra moderna karttjänster? Då känner du säkert till problemet: svenska kartor använder koordinatsystemet SWEREF 99 TM medan Google Maps och GPS använder det globala formatet WGS 84. De två systemen pratar helt enkelt inte samma språk.
Det här Excel-verktyget löser precis det problemet. Med en enkel formel i Excel kan du konvertera tusentals svenska koordinater på några sekunder och få ut latitud och longitud som fungerar direkt i Google Maps, Google Earth eller vilket annat kartverktyg du föredrar.
Vad kan du använda det till?
Det här är perfekt för dig som arbetar med fastighetsinformation, naturdata, infrastrukturprojekt eller annan geografisk data från svenska myndigheter. Istället för att manuellt knappa in koordinater en i taget låter du Excel göra jobbet åt dig i ett svep.
Hur står det sig mot alternativen?
Det finns onlinekonverterare och olika GIS-program som QGIS som kan hantera koordinatomvandling. Men de kräver antingen att du laddar upp filer till en extern tjänst eller att du lär dig ett helt nytt program. Med det här verktyget direkt i Excel slipper du allt det. Du arbetar i den miljö du redan känner till och resultatet hamnar direkt i ditt befintliga kalkylblad utan extra steg och utan att din data behöver lämna din dator.
Varför det här verktyget?
När du har hundratals eller tusentals rader med koordinater är manuella lösningar helt enkelt inte ett alternativ. Det här verktyget är byggt för den verkligheten. Snabbt. Enkelt. Direkt i Excel.
För de flesta användningsområden som att peka ut fastigheter, naturområden eller infrastruktur på Google Maps är noggrannheten utmärkt (+-1 meter). Google Maps egen visningsprecision är ofta den begränsande faktorn snarare än konverteringen.
Om du däremot jobbar med professionell geodesi eller lantmäteriarbete där millimeternoggrannhet krävs bör du använda certifierade verktyg som Lantmäteriets officiella API. Men det får jag anta att du visste i så fall 😉
Gör-så-här
Så här installerar och använder du verktyget
Koden är skriven i VBA och fungerar direkt i Excel (skrivbordsversionen) utan några tillägg eller installationer. Följ stegen nedan så är du igång på några minuter.
Installera koden
- Öppna din Excel-fil
- Tryck på
Alt + F11för att öppna VBA-editorn - Klicka på
Infogai menyn och väljModul - Klistra in koden i det tomma fönstret som öppnas
- Stäng VBA-editorn och spara filen som
.xlsm(makroaktiverad arbetsbok)
Använd funktionen i ditt kalkylblad
Funktionen tar emot en X-koordinat (easting) och en Y-koordinat (northing) från SWEREF 99 TM och returnerar latitud och longitud i WGS 84.
Markera två tomma celler bredvid varandra och skriv in följande formel i den vänstra cellen:
=SWEREF99ToWGS84(A2; B2)
Tryck på Ctrl + Shift + Enter för att bekräfta formeln som en matrisformel. Resultatet fyller automatiskt ut i båda cellerna där den vänstra visar latitud och den högra visar longitud.
Har du många rader med data markerar du båda resultatcellerna och kopierar formlerna nedåt i kolumnerna så konverteras alla koordinater automatiskt.
Tips
Koordinaterna från Lantmäteriet har ibland X och Y i olika ordning beroende på källan. Om resultatet ser konstigt ut provar du att byta plats på X och Y i formeln.
VBA-kod att kopiera:
Function SWEREF99ToWGS84(X As Double, Y As Double) As Variant
' Constants specific to SWEREF 99 TM
Dim a As Double, f As Double, k0 As Double, e2 As Double
Dim lambda0 As Double, E0 As Double, N0 As Double
a = 6378137# ' Semi-major axis in meters
f = 1 / 298.257222101 ' Flattening
k0 = 0.9996 ' Scale factor
lambda0 = 15 * (3.14159265358979 / 180) ' Central meridian in radians for SWEREF 99 TM (15°)
E0 = 500000# ' False easting in meters
N0 = 0 ' False northing in meters
' Calculate the eccentricity squared
e2 = f * (2 - f)
' Convert Y into the latitude using the Transverse Mercator formulas
Dim m As Double, mu As Double
Dim phi1 As Double, e1 As Double
m = (Y - N0) / k0
mu = m / (a * (1 - e2 / 4 - 3 * e2 ^ 2 / 64 - 5 * e2 ^ 3 / 256))
e1 = (1 - Sqr(1 - e2)) / (1 + Sqr(1 - e2))
' Series expansion for initial latitude approximation
phi1 = mu + (3 * e1 / 2 - 27 * e1 ^ 3 / 32) * Sin(2 * mu) _
+ (21 * e1 ^ 2 / 16 - 55 * e1 ^ 4 / 32) * Sin(4 * mu) _
+ (151 * e1 ^ 3 / 96) * Sin(6 * mu) + (1097 * e1 ^ 4 / 512) * Sin(8 * mu)
' More calculations for latitude and longitude
Dim C1 As Double, T1 As Double, R1 As Double, N1 As Double, D As Double
C1 = e2 * Cos(phi1) ^ 2 / (1 - e2)
T1 = Tan(phi1) ^ 2
R1 = a * (1 - e2) / ((1 - e2 * Sin(phi1) ^ 2) ^ 1.5)
N1 = a / Sqr(1 - e2 * Sin(phi1) ^ 2)
D = (X - E0) / (N1 * k0)
' Final latitude and longitude calculations in radians
Dim lat As Double, lon As Double
lat = phi1 - (N1 * Tan(phi1) / R1) * (D ^ 2 / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 ^ 2 - 9 * e2) * D ^ 4 / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 ^ 2 - 252 * e2 - 3 * C1 ^ 2) * D ^ 6 / 720)
lon = lambda0 + (D - (1 + 2 * T1 + C1) * D ^ 3 / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 ^ 2 + 8 * e2 + 24 * T1 ^ 2) * D ^ 5 / 120) / Cos(phi1)
' Convert radians to decimal degrees
lat = lat * (180 / 3.14159265358979)
lon = lon * (180 / 3.14159265358979)
' Return the result as an array [latitude, longitude]
SWEREF99ToWGS84 = Array(lat, lon)
End Function
Gör koordinaterna Google Maps-kompatibla
När du har latitud och longitud i två separata celler behöver du sätta ihop dem till en enda koordinatsträng som Google Maps förstår direkt. Google kräver att koordinaterna skrivs med punkt som decimalavskiljare och ett kommatecken mellan latitud och longitud, till exempel 59.12345, 18.12345.
I en ny cell bredvid dina koordinater skriver du in följande formel där S2 innehåller latitud och T2 innehåller longitud:
=SAMMAN(BYT.UT(AVRUNDA(S2;5);”,”;”.”);”, “;BYT.UT(AVRUNDA(T2;5);”,”;”.”))
Formeln gör tre saker. Den avrundar koordinaterna till 5 decimaler vilket ger en noggrannhet på ungefär en meter. Den byter ut det svenska kommatecknet mot en punkt som decimaltecken. Sedan sätter den ihop latitud och longitud med ett kommatecken och ett mellanslag mellan dem.
Den färdiga strängen kan du antingen klistra in direkt i Google Maps sökfält för att hitta en enskild plats, eller använda när du laddar upp en hel datafil med många koordinater till Google Maps eller Google My Maps för att visualisera alla platser på en gång.