Skip to content

Repository files navigation

Administrative inndelinger OGC API

OGC API for Administrative inndelinger bygd med pygeoapi. Tjenesten deler data fra Kartverket som OGC API Features og tilbyr en OGC API Process for bopliktsjekk som sjekker om en eiendom ligger innenfor et bopliktområde.

Oppsett

Forutsetninger

  • uv (Python 3.12, styres av .python-version)
  • Docker med Compose
  • Bruker til dockerhub (for å hente Docker Hardened Image i prod-bygget)

Virtuelt miljø (venv)

For å sette opp et lokalt virtuelt miljø for bruk i f.eks. Neovim eller VS Code:

uv sync

Dette oppretter en .venv-mappe og installerer alle avhengigheter.

Manuell aktivering

Hvis du ønsker å aktivere miljøet manuelt i terminalen:

source .venv/bin/activate

Lokal kjøring

Appen kjøres med samme image som i prod (deploy/Dockerfile), mot en PostGIS-database som fylles med mockdata fra dev/init-db.sql. Alt er definert i compose.yaml:

docker compose up --build

Dette starter to tjenester:

Tjeneste Adresse Beskrivelse
api http://localhost:5000 OGC API (pygeoapi + gunicorn)
db localhost:5432 PostGIS med mockdata

Prometheus-metrikker er tilgjengelig på http://localhost:8181.

Databasen og API-et er forhåndskonfigurert med brukeren boplikt og API-nøkkelen settes til testkey lokalt. Disse verdiene ligger i compose.yaml og trenger ikke å endres for lokal utvikling.

Live reload under utvikling

Bruk --watch for å bygge api-tjenesten om automatisk når du endrer kode. Compose ser etter endringer i processes/, pygeoapi-config.yml, deploy/, pyproject.toml og uv.lock:

docker compose up --build --watch

Konfigurasjon

All konfigurasjon ligger i pygeoapi-config.yml. Her defineres:

  • Databasetilkobling (PostgreSQL/PostGIS)
  • Hvilke collections som serveres
  • Koordinatsystem (EPSG:25833 / UTM33)

Data lagres og serveres i EPSG:25833 (EUREF89 UTM sone 33) uten transformasjon.

Bygg og deploy

Produksjonsimagen bygges fra deploy/Dockerfile med et uv multi-steg-bygg, slik at både lokalt og deploy bruker samme uv.lock som kilde.

Runtime-imagen er ett Docker Hardened Image

docker build -f deploy/Dockerfile -t smia-ogc-api:test .

Ved oppstart genererer deploy/start.py OpenAPI-spesifikasjonen mot databasen (krever at databasen er tilgjengelig) og starter gunicorn.

Testing

Prosjektet bruker pytest. Testene ligger i tests/. Enhetstester i tests/unit/ og integrasjonstester i tests/integration/.

uv run pytest -m "not integration"                                    # kun enhetstester
uv run pytest                                                         # alle tester
uv run pytest --cov=processes --cov=deploy --cov-report=term-missing  # med coverage

Integrasjonstestene starter en postgis-container med testcontainers.

Testene kjøres i CI på hver pull request og ved merge til main, se .github/workflows/test.yml. Coverage rapporteres i CI-loggen, men ingen terskel feiler bygget.

Linting og formatering

Prosjektet bruker Ruff for linting og formatering.

uv run ruff check     # lint
uv run ruff format    # formater

For VS Code-brukere finnes det ferdig oppsett i .vscode/settings.json som formaterer og fikser imports ved lagring. Bruker du en annen editor, se Ruff editor-integrasjoner.

Monitorering

Det finnes et dashboard i Grafana for dette APIet. Gå til Smia: Matrikkeltjenester i Grafana, og velg smia-ogc-api under "tjeneste". Husk å justere om du skal se prod eller dev aktivitet.

Det finnes også er dashboard for databasene denne applikasjonen bruker i de forskjellige miljøene. Gå til denne lenken for å se dashboardet. Logg in med Microsoft-bruker.

Det er satt opp syntetisk overvåking for API-et. Se dashboardet her.

About

No description, website, or topics provided.

Resources

Security policy

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages