I starten af 1960’erne anskaffede Geodætisk Institut (GI) sig Danmarks første serieproducerede datamat, GIER, eller ”Geodætisk Instituts Elektronregnemaskine”. Det var dengang en state-of-the-art talknuser, der for alvor markerede starten på den numeriske analyses indtræden i det geodætiske arbejde i Danmark. Tiden er dog rindet ud for de gamle systemer, og nye ser dagens lys.
Af Kristian Evers og Thomas Knudsen, Styrelsen for Dataforsyning og Effektivisering
Med GIER blev det muligt at udføre væsentligt større beregningsopgaver end tidligere, hvor alle beregninger, såsom koordinattransformation og netudjævning, blev udført med papir og blyant. Det førte til en markant effektivisering af arbejdet på Geodætisk Institut, men havde også den sidegevinst at flere af instituttets geodæter i dag må betragtes som datalogiske pionerer, hvis arbejde præger faget den dag i dag.
To af kerneopgaverne, GIER blev brugt til at løse, var som nævnt koordinattransformation og netudjævning. Til dette blev der udviklet programmel, hvis kerne stadig er i brug i dag. Det drejer sig om koordinattransformationsbiblioteket TrLib og udjævningsprogrammet ADJ. ADJ er primært blevet brugt internt på Geodætisk Institut og dets efterfølgere, i dag hos Styrelsen for Dataforsyning og Effektivisering, SDFE. TrLib er bedst kendt via dets moderne pendant, KMSTrans, der er en grafisk brugerflade til TrLib. KMStrans/TrLib har i mange år leveret den officielle (og eneste) implementering af transformationer til og fra ældre danske koordinatsystemer, herunder System 34. Desuden har kildekoden i praksis fungeret som dokumentation af de gamle systemer, da egentlige beskrivelser af mange af de ældre systemovergange aldrig er blevet publiceret. TrLib er derfor, som den eneste eksisterende implementering af disse systemer, blevet bygget ind i en del geospatialt programmel som specialtilpasning til det danske marked.
Sejlivet om end uddateret
ADJ og TrLib har vist sig at være yderst sejlivede, idet de begge den dag i dag stadig er i brug. Koden er naturligvis blevet tilpasset løbende, og flere funktioner er tilføjet gennem årene, men faktum er, at det programmel, der blev udviklet på Geodætisk Institut for over 50 år siden, stadig lever den dag i dag. Begge har dog for længst overskredet sidste salgsdato og bærer præg af at have over 50 år på bagen. Kildekoden lever ikke op til de standarder, man forventer i dag, og består af rundt regnet 200.000 linjers C-kode, der er utilstrækkeligt dokumenteret og yderst krævende at vedligeholde. Derfor er det i forbindelse med SDFE´s ”Strategi for Danmarks Geodætiske Infrastruktur 2015-2025” blevet besluttet at modernisere understøttelsen af de ældre danske systemer og internt i SDFE at tage et nyt udjævningssystem i brug.
En af de vigtigste årsager til beslutningen om at erstatte det eksisterende programmel med nyt er, at vedligeholdelsesbyrden er for stor med de tilgængelige ressourcer. Derfor satses der i kontoret Geografiske Referencer i SDFE i stedet på allerede etableret open source programmel. En af fordelene ved at benytte open source programmel er, at udviklingsbyrden er delt mellem mange parter. Ved at deltage aktivt i udviklingen har SDFE muligheden for at påvirke den retning, udviklingen bevæger sig i, samtidig med at ressourceforbruget, målt i årsværk, holdes på et passende niveau. Derudover drager SDFE nytte af den funktionalitet, andre tilføjer, ligesom andre drager nytte af SDFE‘s bidrag.
Erstatning for ADJ fundet…
Da det eksisterende programmel er højt specialiseret, har det været vigtigt at finde erstatninger, der kan reproducere tidligere beregninger så godt som muligt. Især er der gjort en stor indsats for at finde en egnet erstatning for udjævningsprogrammet ADJ. Med hjælp fra DTU Space er flere kandidater blevet undersøgt, og i sidste ende er valget faldet på GNU Gama. Med GNU Gama er det lykkes at reproducere en større nivellementsudjævning med overensstemmelse på mikrometer niveau mellem de to beregninger. Selve beregningsdelen af programmet er altså funktionelt ækvivalent med det eksisterende programmel. Derudover er både dokumentation og brugerflade væsentligt bedre end det eksisterende programmel. GNU Gama forventes taget i operationel brug inden årsskiftet.
… Og PROJ.4 afløser TrLib
Som erstatning for TrLib har det naturlige valg hele tiden været PROJ.4. PROJ.4 er oprindeligt udviklet ved den Amerikanske Geologiske Undersøgelse, USGS, i 1980’erne, primært som et kartografisk værktøj. Med tiden er basale geodætiske funktioner dog blevet tilføjet. De tillader at lave koordinattransformation på tværs af referencerammer. Desuden er kildekoden på et tidligt stadie i bibliotekets levetid blevet udgivet under en fri og åben licens. Disse to faktorer har skabt grundlaget for, at PROJ.4 i dag er de facto standard i den del af geodataverdenen, der baserer sig på åben kildekode, og transformationsbiblioteket er i dag indbygget i en større mængde geospatialt programmel. Den store udbredelse af PROJ.4 i dag har været den primære årsag til at benytte det som erstatning for TrLib/KMSTrans. Med tiden vil en understøttelse af de danske systemer automatisk blive tilgængelig i det programmel, der i dag allerede anvender PROJ.4, eksempelvis QGIS eller PostGIS.
I forhold til TrLib havde PROJ.4 dog en række mangler, især med henblik på datumskifte, som SDFE over det sidste halvandet år har arbejdet på at udbedre. Størstedelen af de ældre danske koordinatsystemer, eksempelvis System 34, har hidtil ikke være understøttet, og dokumentationen har været decideret mangelfuld. Begge dele er blevet forbedret betragteligt.
Ved at indføre et nyt koncept for koordinattransformation, kaldet ”Transformation Pipelines”, er det blevet muligt at udføre en lang række komplicerede transformationer, som hidtil ikke været mulige i PROJ.4. Selve konceptet består i en arkitekturændring, der gør det muligt at serieforbinde elementære operationer, der til sammen udgør den komplette transformation fra et system til et andet. Dette afviger fra den oprindelige arkitektur i PROJ.4, der forudsætter, at alle transformationer fra et system til et andet udtrykkes i forhold til WGS84-referencerammen, der i denne sammenhæng bruges som et slags bindeled mellem koordinatsystemer. Netop dette bindeled gør det umuligt at udføre mange af de ældre danske transformationer, der er defineret ved en direkte overgang mellem systemerne.
Arven fra GIER
Det nye transformationskoncept forudsætter som sagt en række elementære geodætiske operationer, eksempelvis polynomieovergange, der benyttes i de danske koordinatsystemer. Derfor har vi implementeret en række af disse operationer i PROJ.4. Hvor det har været muligt, er kode fra TrLib genanvendt for at sikre, at transformationerne udføres ens i både TrLib og PROJ.4. Som en lille historisk sidegevinst sikrer det også, at arven fra GIER lever videre, dog nu i nyt programmel.
Det har været en stor udfordring at reimplementere de gamle koordinatsystemer, da de er sparsomt dokumenteret. Det har krævet en stor indsats at forstå den eksisterende kildekode, og i flere tilfælde har det været nødvendigt at interviewe tidligere ansatte for at forstå systemovergangene i detaljen. For at undgå en lignende seance i fremtiden arbejdes der på at dokumentere disse systemovergange. Dokumentationen vil løbende blive publiceret via SDFE´s nye kommunikationskanal til teknisk dokumentation, ”Geomatics Notes”. Geomatics Notes afløser den tekniske rapportserie, der tidligere blev udgivet i regi af Kort- og Matrikelstyrelsen og sidenhen Geodatastyrelsen. Geomatics Notes vil løbende blive udgivet på sdfe.dk i takt med at der opstår nye tiltag, der kræver teknisk dokumentation.
Efter 50 års tro tjeneste er tiden altså rindet ud for det geodætiske programmel, der blev født sammen med GIER, og et langt kapitel i Danmarks computerhistorie nærmer sig sin slutning. Dog lever dele af den oprindelige kode videre i PROJ.4 til gavn for geodatabrugere, ikke bare i Danmark, men i hele verden. Helt slut er det dog ikke endnu. Både TrLib og KMSTrans er stadig tilgængelige, om end PROJ.4 med tiden med al sandsynlighed bliver det naturlige valg, når der skal udføres koordinattransformation mellem danske systemer.