Skip to content

Commit

Permalink
Merge pull request #764 from krebslw/api-tidsserier
Browse files Browse the repository at this point in the history
Tilføjelser og ændinger til det "generelle" Tidsserie-api
  • Loading branch information
kbevers authored Sep 24, 2024
2 parents 8c38779 + 160ab32 commit d560d36
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 15 deletions.
55 changes: 40 additions & 15 deletions fire/api/model/tidsserier.py
Original file line number Diff line number Diff line change
Expand Up @@ -116,9 +116,27 @@ class Tidsserie(FikspunktregisterObjekt):
}

@property
def referenceramme(self):
def referenceramme(self) -> str:
return self.srid.kortnavn

def __len__(self) -> int:
return len(self.koordinater)

@property
def t(self) -> list[dt]:
"""
Liste med t-komponenter fra tidsseriens koordinater givet som datetime objekt.
"""
return [k.t for k in self.koordinater]

@functools.cached_property
def decimalår(self) -> list[float]:
"""
Liste med t-komponenter fra tidsseriens koordinater givet i decimalår.
"""
return [til_decimalår(k.t) for k in self.koordinater]


class GNSSTidsserie(Tidsserie):
__mapper_args__ = {
"polymorphic_identity": TidsserietypeID.gnss,
Expand Down Expand Up @@ -213,20 +231,6 @@ def sz(self) -> List[float]:
"""
return [k.sz for k in self.koordinater]

@property
def t(self) -> List[dt]:
"""
Liste med t-komponenter fra tidsseriens koordinater givet som datetime objekt.
"""
return [k.t for k in self.koordinater]

@functools.cached_property
def decimalår(self) -> List[float]:
"""
Liste med t-komponenter fra tidsseriens koordinater givet i decimalår.
"""
return [til_decimalår(k.t) for k in self.koordinater]

@functools.cache
def _neu(self):
"""
Expand Down Expand Up @@ -950,3 +954,24 @@ class HøjdeTidsserie(Tidsserie):
__mapper_args__ = {
"polymorphic_identity": TidsserietypeID.højde,
}

@functools.cached_property
def kote(self) -> list[float]:
"""
Liste med z-komponenter fra tidsseriens koordinater.
Koterne er givet som ortometriske højder over tidsseriens jessenpunkt.
For tidsserier uden tilknytning til et jessenpunkt (fx DVR90-tidsserier) svarer
koternes referenceramme til tidsseriens referenceramme.
"""
return [k.z for k in self.koordinater]

@functools.cached_property
def sz(self) -> list[float]:
"""
Spredninger for tidsseriens z-komponenter.
Spredning givet i milimeter.
"""
return [k.sz for k in self.koordinater]
34 changes: 34 additions & 0 deletions test/api/tidsserier/test_tidsserie_attributter.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import pytest

import fire
from fire.cli import FireDb
from fire.api.model import (
Tidsserie,
HøjdeTidsserie,
GNSSTidsserie,
)


def test_tidsserie_attributter(firedb: FireDb):
"""
Test at man kan trække de forventede attributter ud med Tidsserie-api'et.
Vi tager udgangspunkt i 'HTS_AARHUS_K-63-19113', der har fire koordinater i tidsserien.
"""

ts = firedb.hent_tidsserie("HTS_AARHUS_K-63-19113")

# Test implementering af __len__
assert len(ts) == 4

assert ts.referenceramme == ts.srid.kortnavn

assert isinstance(ts, HøjdeTidsserie)
assert hasattr(ts, "kote")
assert hasattr(ts, "sz")

assert len(ts.kote) == len(ts.sz)

for k, sz in zip(ts.kote, ts.sz):
assert isinstance(k, float)
assert isinstance(sz, float)

0 comments on commit d560d36

Please sign in to comment.