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.
- uv (Python 3.12, styres av
.python-version) - Docker med Compose
- Bruker til dockerhub (for å hente Docker Hardened Image i prod-bygget)
For å sette opp et lokalt virtuelt miljø for bruk i f.eks. Neovim eller VS Code:
uv syncDette oppretter en .venv-mappe og installerer alle avhengigheter.
Hvis du ønsker å aktivere miljøet manuelt i terminalen:
source .venv/bin/activateAppen 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 --buildDette 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.
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 --watchAll 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.
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.
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 coverageIntegrasjonstestene 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.
Prosjektet bruker Ruff for linting og formatering.
uv run ruff check # lint
uv run ruff format # formaterFor 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.
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.