Skip to content

SDFIdk/Koordinattransformation

Repository files navigation

Koordinattransformation

Koordinattransformation er en Vue.js applikation der gør det let at transformere koordinater mellem forskellige referencesystemer. Projektet er scaffolded med [Vite]{https://vitejs.dev/} og kørt igennem NPM Projektet er scaffolded med [Vite]{https://vitejs.dev/} og kørt igennem NPM

For at udvikle og bygge projektet skal man have følgende For at udvikle og bygge projektet skal man have følgende

  • node.js version: >=17.6.0 link til download
  • npm version: >=8.5.2, dette gøres igennem node.js installeren.

Setup a projektet

For at kunne køre projektet, er der nogle miljøvariable, der skal føres ind i root directory i projeket.

.env.development til development miljøet og .env.production til produktionsmiljøet. Et eksempel på en miljøfil er:

module.export = {
  VITE_NODE_ENV = development
  VITE_VUE_APP_SHOW_UNPUBLISHED = true
  VITE_NODE_OPTIONS = --openssl-legacy-provider
  VITE_TOKEN = <token>
  VITE_API_BASE_URL = https://api.dataforsyningen.dk/rest/webproj_test
}

Kopier disse filer fra config repoet ind i root directory af projektet.

disse refereres efterfølgende med import.meta.env.[field]
læs mere om Vite og miljøvariable her

Diagram over programmet:

Diagrammet ligger som en redigerbar drawio fil sammen med en .png i root directory. Download vs code extention her
Husk at opdatere diagrammet og exporter nyt billede, hvis programmet opdateres
Diagram




  • Naviger til projektet i terminalen

  • Installer dependencies igennem npm

npm install

dependencies er senere at finde i ./node_modules

Herfra har man tre muligheder:
Kør projektet i localhost. (portnummeret vil blive vist i terminalvinduet):

npm run dev

Compile og minify projektet til produktion:

npm run build

Lint med eslint:

npm run lint

Selve transformationerne sker igennem WEBPROJ
dokumentation til WEBPROJ findes her

Koderne fra WEBPROJ bliver derefter store'et i en VUEX store. Under runtime, kan denne ses i developer tools i browseren med Vue extention til henholdsvis Chrome, firefox Edge

Formattering af koordinater

Koordinater Antal decimaler
Meter 4 decimaler
Grader 8 decimaler
Grader og minutter 0, 6 decimaler
Grader, minutter og sekunder 0, 0, 4 decimaler

Formattering af koordinater

Koordinater Antal decimaler
Meter 4 decimaler
Grader 8 decimaler
Grader og minutter 0, 6 decimaler
Grader, minutter og sekunder 0, 0, 4 decimaler

Geodæsi

Nogle gode generelle ting at vide:

  • CRS (Coordinate Reference System) er en fællesbetegnelse for forskellige typer geografiske koordinatsystemer. Typisk tildeles CRS'er en unik kode, fx en EPSG-kode, der gør det let at give geospatial data en entydig geografisk reference.
  • EPSG er en database over CRS'er varetaget af 'International Association of Oil and Gas Producers'
  • En transformation, hvor et to-dimensionelt system indgår, enten som in- eller output, skal ikke have en højdeparameter på outputtet, selvom man umiddelbart har lyst. I en geodætisk sammenhæng er det meningsløst og i sidste ende misvisende at tage højdeparameteren med.

Geodæsi

Nogle gode generelle ting at vide:

  • CRS (Coordinate Reference System) er en fællesbetegnelse for forskellige typer geografiske koordinatsystemer. Typisk tildeles CRS'er en unik kode, fx en EPSG-kode, der gør det let at give geospatial data en entydig geografisk reference.
  • EPSG er en database over CRS'er varetaget af 'International Association of Oil and Gas Producers'
  • En transformation, hvor et to-dimensionelt system indgår, enten som in- eller output, skal ikke have en højdeparameter på outputtet, selvom man umiddelbart har lyst. I en geodætisk sammenhæng er det meningsløst og i sidste ende misvisende at tage højdeparameteren med.

Note om Vue

Vue bliver hele tiden opdateret, og der er mange forskellige måder at gøre de samme ting på. Denne applikation kører på Vue 3 igennem composition API'en med script setup syntax. Dette giver mindre boilerplate og exposer variable og functioner direkte til template'en uden explicit skulle expose dem.
Vær opmærksom, når du finder referencer og tutorials rundt omkring på nettet, at der bliver snakket om den rigtige version.

Liste over indlejrede teknologier

  • Vuex til state management
  • Vite som det underliggende build-step
  • Sass til nemmere styling
  • Vue Router til... ja... routing

Note om Vue

Vue bliver hele tiden opdateret, og der er mange forskellige måder at gøre de samme ting på. Denne applikation kører på Vue 3 igennem composition API'en med script setup syntax. Dette giver mindre boilerplate og exposer variable og functioner direkte til template'en uden explicit skulle expose dem.
Vær opmærksom, når du finder referencer og tutorials rundt omkring på nettet, at der bliver snakket om den rigtige version.

Liste over indlejrede teknologier

  • Vuex til state management
  • Vite som det underliggende build-step
  • Sass til nemmere styling
  • Vue Router til... ja... routing

Note om Inputs og Outputs

Det er ikke helt let at holde styr på hvad input og output er i de forskellige sammenhænge. eksempelvis har OutputCard et output field, som har både inputkoordinater og outputKoordinater. Disse inputkoordinater skal ikke forvirres med koordinaterne i InputCard. Vær opmærksom på, hvor ting kommer fra og skal hen.

Integration af KDS' design system

Alt styling så vidt muligt (nogle ting er specifikke for Koordinattransformation) følger KDS' design system. Også at finde på Github.

Der er to måder hvorpå man kan bruge variabler fra @dataforsyningen:

  • <style> tag må ikke være scoped
  • inline css

inline CSS er ikke muligt på pseudo elementer og heller ikke på conditional classes (:class={someClass: booleanValue}) Derfor giver det mening slet ikke at bruge <style scoped> for at holde koden strømlinet og ensformig.

Ikoner

Alle ikoner kommer fra design-system-icons
Findes også på Github. Disse bliver i øjeblikket implementeret som separate Vue components i components/shared/icons, da farverne ikke kan tilpasses, hvis man hiver dem fra npm. Nogle ikoner som ArrowIcon.vue er implementeret med et par props til at vende den korrekt.

Baggrundskort

Danmarkskortet kommer fra Dataforsyningen's API, mens grønlandskortet er en OMS integration. Vi har indtil nu ikke haft en intern WMTS over grønland, men der ligger nu en WMS version på dataforsyningen