Skip to content
Kristian Julien edited this page May 11, 2026 · 13 revisions

Welcome to the Artskart3 wiki!

Artsdatabanken_logo

Artskart 3.0 - HVOR/NÅR/HVA

Forord

Artskart så dagens lys allerede i 2005 og har siden den gang blitt oppdatert flere ganger. Nå er vi i gang med oppdatering nummer 3. Altså Artskart3. Det er ingen revolusjerende endringer i den første versjonen av Artskart3. Målet er å få stengt ned Artskart2 fordi den er så teknisk gammel at den har problemer med funksjonalitet og hastighet. Så målet er å få fjernet teknisk gjeld, samtidig som vi bereder grunnen for en framtidig løsning med flere funksjonaliteter. Portalen er bare en del av Artskart vi ser også på baksiden av det som foregår og frisker opp både struktur og tilleggstjesntene som API. Artskart er navet i artsdata i Norge og viktig levenrandør av data til GeoNorge og Arter av forvaltningsinteresse.

Mye av WIKI tar utgangspunkt i Artkart2, men vil bli oppdatert til Artkart3 etter hvert som prosessen går fremover.

Bakgrunn

Artskart startet som en enkel portal for artsfunn i 2005. konseptet med Artskart er å vise "hvor når og hva". I starten var det svært lite digitale data. Derfor ble det opprettet et samarbeid med museer om hvordan funndata skal presenteres digitalt. Det startet med 30 datafelt basert på behovene til museene, men man så også til TDWG hadde begynt standardisering med Darwin Core internasjonalt. GBIF-nettverket var også i gang, med de delte ikke data. DarwinCore ble ganske fort etter på en vedtatt standard. DarwinCore Quick Referanse guide.

DarwinCore har svært sjelden hatt komplett vokobular for de forskjellige parameterene, og det meste er kodet som tekst, inkludert dato, men som har noen eksempler på hvordan de kan skrives. Mangelen på en god dokumentert standard med litt for valgfrie datatyper og kolonner er en stor utfording når man skal få alle datasettene til å møtes i en stor base. I Artskart er det brukt mye arbeid på å få dette til å fungere.

Et annet eksempel er "Basis of Record" som har blitt strammet inn, men som historisk har hatt mye rart. Legge inn eksempel på hvilke verdier Artskart sammenstiller. Basis of record er en parameter som er naturlig er i kontinuerlig utvikling og maskinlesing og eDNA er nye metoder som bør kunne defineres.

Her er et eksempel på hvilke verdier Artskart tolker som en obsevasjon ut fra de datasettene vi høster.

Siden DarwinCore ikke har noen endringslogg er det vanskelig å følge med på hva som skjer med datasettene. Man oppdager som oftest at det er trøbbel når dataene uteblir.

Et annet eksempel på utfordriner er parameteren CoordinatPressesion / CoordinateUncertainyInMeters. GBIF/Darwincore har i hovedsak brukt lat/lon i en geografisk projeksjon, derfor var presisjon oppgitt med en desimalverdi som representerte desimalgrader. Når denne parameteren blir tolket som antall meter unøyaktighet i et datasett, men som desimalgrader i et annet datasett blir det krøll.

I starten ble det utviklet en klient som eksponerte data fra databasene til museene på nett. Denne metoden er delvis i bruk enda, men for de fleste datasett er det nå IPT som brukes, IPT kom i 2016, og muliggjorde visning direkte fra relasjonsdatabase eller fra Excel/csv-fil. Artskart høster så langt som mulig dirkete fra IPTene og ikke via GBIF. Unntaket er en del noder utenfor Norge som går i et samlet kall mot GBIF-api, og Artsobservasjoner som hentes direkte internt.

DarwinCoredataene er basert EML META occurences, som er et funn eller en observajon av en art. Kun et felt ScientificName. For å få med bilder legger man til en extension. Og bilder i en relasjonstabell.

DarwinCoreEvent (kom i 2020, f.eks. en felles lokalitet, eller et besøk), DarwinCoreOccurense (f.eks.), DarwincoreTaxon

I Artskart er Events og Occurennce eller kun Occurence samlet til et nivå. DynamicProperties har vært redning og det har blitt brukt i påvente av et fornuftig felt å legge det inn på. Et eksempel kan være en NIN-kode som det er informert en anbefaling for Norge.

Når det kommer til parametre på Taxon er det mye rart, noen har kun scientificName noen har scientificName inkl. Authorship, eller bare til slekt, eller splittet på egen kolonner. Får å få dette til å fungere er det prøvd fikset i et script som går igjennom i prioritert rekkefølge de mulige kombinasjonene som er påkommet så langt.

Backend

Artskart består av i hovedsak 3 databaser, som er speilet for sensitive arter.

Sette inn figur

Artskart2Core

Artskart2Core et register for alt Artskart trenger for få ut informasjon. og hente informasjon. Fylker, kommuner, verneområder, taksonomi. Oversikt over datasett som skal importeres, nodeinndeling o.l.

Artskart2Cache

Artskart2Cache høsteresultatet - nedlasting og speiling av data som ligger ute på nettet. En lokal kopi. På grunn av ustabililtet på kildedatabasene.

Artskart2Index

Artskart2Index importresultatet - Går igjennon Cache og splitter og tilrettelegger for alt det som vi gjør for å få til en god database på alle de rare formatene de ligger på.

  • Index eksporterer også ut kartformat til SQLlite/shape og SQLlite til MDIR. Begge kjøres annenhver dag.
  • BildeCache i zipfila er det ikke med bilder, bare en kobling. Må lages thumbsnail som vi kan ta det med i bildegalleri
  • Eksportfunsjonen fra nettsiden samles også på egen storagekonto

Artskart.import (Swissknife) har vært sentral for vedlikehold av data i systemet.

WindowsService for å håndtere eksportfil men blir også brukt til import og høsting. Kan kjøres manuelt. Kan bli krøll hvis de to tjenestene jobber med samme node samtidig. Egen SQLdatabase. Hangfire som kjører ting.

Artskartgjennomgang

Hovedportal

Frontend applikasjon med et API som skal støtte frontend - Dette er brukt ekstern, uten at vi har gitt noen garantier og uten å si fra.

Grunnlaget for API er Artskart2Indexdatabasen. Det er dbo.Observations som er hovedtabellen. I Modellen nedefor er det viktigste tabellene og relasjonene for APIet som portalen bruker tatt fram. Modell over de viktigste tabellene for APIet til Artskart.

Adminportal

Et behov for å kunne vedlikeholde, loggføre og oppdatere data. Egen løsning pga historiske løsninger.

Pubplikapi (ArtskartApi i koden, ligger på URL publicApi) etablert i 2014 - bestiller MDIR - For å kunne hente funn for arter av forvaltningsinteresse, men også brukes også på sensitive arter. Det er flere som har tatt i bruk dette. Blant annet NIBIO og vi bruker den også sjøl til listearbeid ListHelper. Artskart er oppdatert flere ganger siden 2014, men publicApi har måtte vært holdt kompatibelt. NINA, EU-prosjekt, NIBIO med flere.

Det er et parallelt rigg for sensitive arter, med SensCore, SensCache, SensIndex med det som MDIR trenger ut via publicApiverktøyet.

Mapserver WMS/WFS, Rest? Rødliste/fremmedart med SQLlite som orginaldatabase og kan lastes direkte også. Ikke hele Artskart, men de som oppnådd en status for rødliste eller fremmedartsliste, dato og presisjon. Et utvalg med filter. Mer dokumentasjon?

Tidlig varslig (notification) - Brukerene kan be om varsling for sitt søk. Kan gjøres flere ganger, Autoraisjonsloop via "eier" av Artskart. Vil få status som innlogget. Egen database med et par tabeller. Brukerne og de varslene de har satt opp. Antall ca. et par 2000. Tar en runde pr natt og kjører en jobb med å sende epost til de som etterspurt disse dataene. Med lenke.

Annoteringsapi - Egen database, eget API. Behovet for å kunne blokkere støy, korrigere feil, og overstyre det som ligger i GBIF. ca. 170 000 funn. Koblet til occurenceID som primærnøkkel.

DOI - er ikke helt lansert, men en permanent ID for nedlastinger. DOI.org resolvertjenteste. Metadata i selve DOIen, må vi API for å se metadata.

Hovedscriptene i løsningen

ArtskartCore - Databasen. SQL-database. Starte som open Source, ble betalinsløning RavenDB, så denne har vi som mål å bytte ut. Gateway er i skyen og det er etablert en Proxy for å få kontakt.

  • Lagres i JSON
  • Nodeinfo M Håndtere Noder, en JSON for hver node med info
  • Taxoninfo A - Taxonkonseptet med all informasjon. Kjører hver natt med god loggfunskjon. Hånterer synonomer, rødlistevedier og hieraki, norsknavn, endringslogg, rett skrevemåte inkludert italic
  • GBIF dataset infos A / M (Spør etter datasett som publisert av norsk institusjon, hvis ikke fra før, ta inn.)
  • Areas Håndterer alt av fylker og kommuner og er der Artobshenter samme geometri. Derfor dobling på GoogleMercator.
  • 60 Institutions M Må ligge inn for å akseptere.
  • 200 Collections A Collections kommer automatisk
  • 4700 Dataset A Under Collections kommer datasett for eksempel fugler, planter osv. fra Artsobservasjoner. Private prosjekt. Navneforvikling med GBID datasett.
  • BasisOfRecord M /A - Oppslagstabeller. Logging av rare ting som dukker opp. Kan for eksempel .legge til flere verdier som skal tolkes stasjonær eller næringssøkende.

Database

  • Initialicie -førstegang lager tomme tabeller i Cache og Index
  • Migrate - ved databaseendringer
  • Updata - nattlig vedlikehold. Areas, Taxons osv.

Harvest

  • Normal INCREMENTIELL. kjører kun på endringer
  • Reproscess FULL

Import

  • Normal INCR

  • reprocess Ser på alle poster, men er optimalisert

  • reprocess nohash FULL Kjører alt på nytt listekategorier, areal osv. men sjekker mot det som ligger der før den skriver tilbake.

  • Retry taxons (Kun de som har feilet på taxonomi) Hvis det har vært noe skikkelig feil Nortaxa må man kjøre nohash istedet

  • GetDataSets - Se etter nye datakilder for Norge

  • Load Areas - importerer ney fylker, kommuner og verneområder

  • downloadimages - thumbnails

Arbeidsflyt

Nattjobber

  1. Henter siste versjon av consoll-apper fra drop-folders (fra deploy)
  2. Kjører første steg av taksonomivedlikehold - henter endringer i navn fra artsdatabanken.no api til ArtskartCore
sequenceDiagram
    TaxonomyWash->>+ArtskartCore: Importer navn fra Artsdatabanken api
    ArtskartCore-->>-TaxonomyWash: Done!
Loading
  1. Kjører annen prosessering, høster data, prosesserer data
sequenceDiagram
    ArtskartImport->>+ArtskartCore: Importer nye datasett-kandidater for norge
    ArtskartImport->>+ArtskartIndex: Importer Areal (kommuner/verneområder)
    ArtskartImport->>+ArtskartIndex: Oppdater og behandle endrede navn
    ArtskartImport->>+ArtskartIndex: Annet db vedlikehold
    ArtskartImport->>+ArtskartCache: Høste data fra kilde datasett
    ArtskartImport->>+ArtskartIndex: Prosessere og importere datasett
    ArtskartImport->>+ArtskartIndex: Reprosessere tidligere feilede navn 
Loading

Deployment - Azure DevOps

Mer tekst

Taksonomivedlikehold

Konsollapplikasjon og rammeverk som leser oppdatert taksonomi ut fra https://artsdatabanken.no/api/taxon og overfører til databasen ArtskartCore, som er kjernen for informasjon i Artskart. Tilsvarende konsollapplikasjon vedlikeholder Artsobservasjoner 2.

Denne bygges, og konfigureres og deployes inn i en drop-katalog på Azure VM. Deretter for å unngå forsøk på deploy mens applikasjonen faktisk kjører blir den ved kjøring via ett .bat skript kopiert fra drop-katalog og kjørt via en sheduled task.

http://artskart.artsdatabanken.no - Automatisk videresende til app/eventuelt overordnet info side, litt for å unngå arv av config til underliggende applikasjoner

Kjøre solution lokalt

Trenger sql server, og ravendb 3.5 lokalt som basis.

For Azure storageAcoount - bruk azurite:

cd C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\IDE\Extensions\Microsoft\Azure Storage Emulator

azurite.exe --skipApiVersionCheck

Azurite Blob service is starting at http://127.0.0.1:10000
Azurite Blob service is successfully listening at http://127.0.0.1:10000
Azurite Queue service is starting at http://127.0.0.1:10001
Azurite Queue service is successfully listening at http://127.0.0.1:10001
Azurite Table service is starting at http://127.0.0.1:10002
Azurite Table service is successfully listening at http://127.0.0.1:10002

Få en kopi av ArtscartCore RavenDB databaseinstans - RavenDb 3.5: https://ravendb.net/download

Sentralt er Artskart.Import.

Opprett en tom db lokalt med navnet Artskart2Hangfire

Første gang Artskart.import.exe database initialize - førstegangsinitisering av tomme databaser Artskart.import.exe database migrate - lager cache database og kjører eventuelle manglende migreringer

"Nattlig" - for å høste databaser og prossesere dem Artskart.import.exe database update Artskart.import.exe harvest 1 (høste node 1) Artskart.import.exe import 1 (høste node 1)

Kjøre frontend lokalt: modifisere web.config - til lokale con strings Start appapi Start WebApp

Artskart.UI tilsvarer det som ligger på /admin

For å kjøre annotering lokalt må du også kjøre Artskart.Annotations fra Artskart.Core

Signal R issue

The following three packages are required to be kept below v6.*:

  • Microsoft.AspNetCore.Connections.Abstractions
  • Microsoft.AspNetCore.Http.Connections.Common
  • Microsoft.AspNetCore.Http.Connections.Client

https://stackoverflow.com/questions/54039861/azure-signalr-service-connection-is-not-active

https://github.com/Azure/azure-signalr/issues/1503#issue-1071040076

Trolig ikke lengre et problem når man er over på .net core

Artskart.import

SwissKnife (in VS solution explorer: right-click Properties -> Debug )

Artskart.Import.exe {param} [{modifier}] [{Ids}]
{Ids} Empty for all or comma-separated list of node ids

Possible parameters....
harvest - Harvest to Cachedatabase from sourcedatabases
  harvest normal - [Default] Normal quick harvest of records
  harvest reprocess - Full reprocessing of records - optional 4th argument - start at partitionyear
import - Import and process records from Cachedatabase into index
  import normal - [Default] Normal import of records
  import reprocess - Full import of records - optimized with hashcodes
  import reprocessnohash - Full import of every records ignoring hashcodes
  import reprocessoccurenceid - Import of list of records - optimized with hashcodes - provide full file path as an argument
  import reprocessoccurenceidnohash - Import of a list of records ignoring hashcodes - provide full file path as an argument
  import retrytaxons - Retry rejected records for new taxon match
  import recover - try to recover failing reprocess
  import updatestatistics - Only update observationcounts
Facets - (undocumented parameter)
taxons - Reimport all Taxon documents
AnalyzeDataset - (undocumented parameter)
database - Maintain data from core database in index and run database migrations
  database initialize - import data from core database to a new index database
  database update - update exisiting data in index from core
  database migrate - run database migration scripts on both index and cache databases
LoadAreas - (undocumented parameter)
GetNewDatasets - (undocumented parameter)
DownloadImages - (undocumented parameter)
Municipality - (undocumented parameter)

Artskart.artsdatabanken.no (c) Artsdatabanken 2024

To process some specific occurences, use parameter proxies:

import 40 proxies urn:catalog:MBA:CPR:35T--13-5,urn:catalog:MBA:CPR:35T--13-5 
Underliggende applikasjoner
/App - Mobilvennlig nettside - SPA applikasjon

/AppApi - Underliggende Api for SPA applikasjon

/Map - Dynamisk WMS/WFS/Tile server - index.html -> dokumentasjon

/PublicApi - Public Api - index.html -> dokumentasjon

/Admin - Administrative side/log

Portal

Portalen er det vanlige innsynet i databasen til Artskart. Her kan man søke både på parametere og på ved hjelp av geografiske objekter. Hovedvinduetvinduet består av et Norgeskart med en enkle visning av objektetene i basen. I tillegg er det en menybar øverst og en menybar til venstre side som består av søk, filter og presentasjon av enkelttreff.

Kartvisning

Dette er oppstartsvinduet, i dag vises det bare cluster for data innen for terretoriellgrensa, men vi har mye data i havet mellom Jan Mayen, Svalbard og Norge.

Skjermdump av oppstartsvinduet

Listevisning

Listevisning er en liste med pageinering over det som til en hver tid er filtrert. Her får man tilbud om eksport.

Skjermdump av listevisning

Søk og filter

Skjermdump av søk og filtermenyen

Søk er en av de viktigste verktøyene i Artskart. Her kan man filterer datasettet til en eller flere arter, men kan definere en kommune, eller et verneområde som et geografisk filter. Målet er et å utvide mulighetene for geografisk filter med flere ferdigdefinerte polygon, men også tilby brukeren å kunne laste opp sine egen polygon for filterering.

Det er satt søk på:

  • Artsnavn
  • Geografisk
  • Artsgrupper
  • Rødliste- og fremmedartslistekategori
  • Funntype
  • Aktivitet
  • Institusjoner
  • Måneder
  • Årsspenn
  • Koordinatpresisjon
  • Prosjekt
  • Samling
  • Katalognummer
  • Med og uten bilde
  • Funnet/ ikke funnet
  • Gjenfunnet/ ikke gjenfunnet
  • Valideringstatus
  • Sikker/ usikker artsbestemmelse
  • Spontan/ uspontan
  • Sensitive funn
  • Annoerte funn
  • Kvalitetsproblemer

Det kan komme til flere filtreringsmuligheter og vi bør se om vi får på plass noen ferdige søk sammen med forvaltningen. For eksempel filteret Arter av forvaltningsinteresse som er definert av Miljødirektoratet og som er en viktig ressurs for arealforvaltningen.

Vi bør også som prinsipp vise alle data, gode og dårlige, men vi kan være tjent med å skjule de dårligste dataene slik at man aktivt må velge å få se dataene. Utfordringer kan svært lav koordinatpresisjon eller manglende stedfesting utover kommune eller fylkesnavn.

Eksport

Eksport av det til en hver tid valgte data, i dag kun tilgjengelig via "Listevisning". Eksporten tilbys som CSV og excel. Resultatet kan bestå av både flater og punkter. I tabelleksporten er det alle registreringene representert med punkt eller senterpunkt innenfor flata. I tilbys WKT-geometri for de objektene med flate. Her bør vi se på en eksport som også tilbyr en fullverdig kartfil med punkt og flater. For eksempel Open file geodatabase, GeoPackage, geojson eller GML. All eksport må sees i sammenheng med DOI.

DOI

Digital object identifier, her er det flere nivå. Alle datasett har en DOI som identifiserer hvert datasett i GBIF. Disse må vi speile i Artskart. I tillegg kan vi tilby egne DOI for et filter/søk/eksport fra Artskartløsningen. Vi bør se på datamodellen om datasett DOI kan følge datasettet mer enn det gjør i dag da det er viktig metadata og mange henter og laster ned data fra API, Arter av forvaltningsinteresse og mulig flere plasser.

Design

Artkart 3 skal følge retningslinjene for enhetlig design for Artsdatabanken så langt som mulig. Det er vikitg å vise slektkskap med Artsobservasjoner, så valg som er tatt der vil kunne påvirke valgene i nye Artskart.

Designet må kunne fungere for både PC, nettbrett og mobil.

Increo har laget et forslag på design og noe funksjonalitet.

Tegnforklaring

Her er det flere muligheter, dagens oppstart er farge etter rødliste og fremmedartskategori. Det er også mulig splitte det på arter, men det er kun mulig med 20 arter. Selv med 20 fargekoder pusher man lesbarheten til kartet. Størrelse på prikken viser/ kan vise antall registreringer pr. lokalitet. Her er det utviklingsmuligheter. I tillegg er det mulig å trykke på et punkt å få opp presisjon som en buffer rundt punktet.

Enkeltoppslag

Enkeltoppslag er en svært viktig funskjon for Artskart. Her vil vi vise alle egenskaper som følger objektet fra orginaldatabase, vise hva vi har gjort med dataene og henvise til DOI for datasettet. Vi har mange brukere av dataene som ikke kommer via Artskartportalen, det er viktig for oss og brukerene at de kan linke til enkeltoppslag for funn. Enkeltoppslag har i dag et par egne kartvisninger som viser hvor i Norge registreringen er og et kartbilde som er litt nærmere. Her skal vi se om vi berger med et kart, men at kartet har en knapp Zoom til punkt eller zoom til oversiktskart, et knippe kartverktøy er aktuell.

Statistikk

Enkle statistikker som følger en til enhver tid søk/filtrering. Her bør vi videreføre noen av oppslagene, men vi bør se på en større løsningen sammen med Artsobservasjoner med en rapportgenerator.

Annotering

Annotering som konsept er fortsatt under utvikling og har flere utfordringer. Behovet er tilstedet fordi mengden data er enorm og selv om andelen feil er noenlunde stabil blir det etter hvert en utfording, med data som ikke holder mål. For rødlistearbeid er det en utfording med feilregistreringer som for eksempel ligger langt utenfor naturlig utbredelse. Dette vil gi feil utbredelseskart når de er automatisert. I forvaltningssammenheng vil en slik feilregistrering lettere kunne håndteres, men det fremstår som støy og det minsker også forvaltningens mulighet til å bruke datasettet i datamodeller. Men for forvaltningen kan en registering som kun er stedfestet til en kommune skape støy i en konkret arealsak og vi kan få fisk som er registrert på land og motsatt. Så dette er en utfording for verdikjeden.

Vi har tatt på oss et redaktøransvar for å håndtere disse annoteringen, men det er dataeierene som må ha siste ordet på hvilke data som er rett eller ikke. I mange av tilfellene er det ikke uenighet med dataeier, men et ønske om å bidra mer presis informasjon. Lokalkunnskap, kjennskap til stedsnavn og andre lokale forhold kan være til godhjelp for å å flyttet en registrering fra "senter punkt kommune" til der den mest sannsylig ble funnet. Eller man ønsker å gi tilbakemeling på citizen science data for å de som har registert skal lære noe og bli bedre og samtidig "validere" funnet. Gjør oppmerksom på at Artsobservasjoner har sitt eget opplegg for tilbakemeldinger, men flere melder dette direkte til Artskart og vi har pr i dag ingen automatikk at medlingen går til rett løsningen.

Vi har også en utfordring med å melde tilbake hvilke annoteringer som er gjort tilbake til dataeier, og følger spent med på det som skjer i GBIF-samarbeidet.

Her kommer det litt mer tekst om hvordan annotering håndteres i dag.

Bakgrunnskart

Bakkgrunnskartene er de som finnes hos Kartverket. I dag topografiskdata for Norge, Svalbard og Jan Mayen i farge og svart/hvitt, men også flyfoto fra Norge i bilder. Her er det ønskelig å tilby hele pakken til kartverket. Inkludert sjøkartverk. Som backup i bun ligger OpenStreetMap på alle visninger, så det ikke blir helt hvitt når man er utenfor dekningsområdet til tjenestene til Kartverket, eller at en tjeneste skulle feile.

Tegneverktøy

Teg

Andre kartlag

Artsobservasjoner

Adminpanel

Oppsett av dagens Artskart2 adminpanel, som ligger åpent uten for alle, men ikke alle faner er tilgjengelig for publikum og selvsagt ikke mulighet fot å redigere. Men for en leverandør av data er det mulig å se hvordan deres data er tatt inn i Artkart og få utvidet feilmelding.

Oppstartsvindu

Oppstartsvindu

Status

Statusfanen

Her er det mulig å velge "Se" for å få sett akkruat dette datasettet i Artskart. Går man til "Velg" får man opp en oppsummering av statusen for akkurat den noden.

Antall poster er inndelt i poster som er importert, poster som er lastet ned og antallet poster som finnes i orginalkilden Antallet poster

Datanodes

Datanodesfanen

Her kan man velge å se aktive eller slette datanoder. Man kan gå inn å redigere på en enkelt node, eller man kan høste og importere datasettet manuelt, eller kjøre en reprosess på import, eller kjøre full import (inkl. bilder til thumbnails osv.) Enkelt node

Redigering av enkeltnode

Man kan også registrere nye noder, men også se om det er kommet nye datasett på noen utvalgte IPTer. Man kan også reprosessere enkelt poster i datasettet.

Verktøy i datanodefanen

Institutions

Datasets

Exports

Harvest results

Import results

Notifications

Annotations