Skip to content

Sådan opsætter du søgninger i OneDoor

Denne vejledning viser hvordan du aktiverer de almindelige søgninger (adresser, matrikler, planer, ejendomme m.fl.) og hvordan du tilføjer jeres egne data som søgninger.

Søgning konfigureres i config.yml

Hvor konfigureres søgningerne?

Find mappen for din konfiguration og åbn config.yml:

text
config/
  organisations/
    <din-organisation>/
      configurations/
        <din-konfiguration>/
          config.yml        ← her ligger søgningerne
          params.yml        ← her ligger parametre som kommunekode

Du arbejder typisk i to filer:

  • config.yml — her importeres standardbiblioteket, og her tændes de søgninger brugeren skal have.
  • params.yml — her står kommunekode og hvilke kategorier standard-søgningerne viser.

Standard søgninger

OneDoor leveres med et bibliotek af forkonfigurerede søgninger (DAWA, matrikel, plandata, ejendom, BBR, CVR m.fl.). Du bruger dem ved at importere biblioteket og vælge hvilke der skal være tændt.

1. Importér biblioteket i config.yml

yaml
import:
  sections:
    - name: params
      dir: $.env.configDir
    - name: standardkommune
      dir: $.env.libDir/lib/standardkommune

2. Sæt kommunekode og kategorier i params.yml

yaml
parameters:
  kommunekode: "0751"           # Aarhus. Brug "*" for hele landet.

  gsearch:
    targets:                    # Hvilke geografiske kategorier vises
      - matrikelnumre
      - postdistrikter
      - opstillingskredse
      # - kommuner
      # - sogne

  plansystem:
    targets:                    # Hvilke plantyper vises
      - vedtagetlokalplan
      - lokalplanforslag
      - kommuneplanramme
      - kommuneplantillaeg
      - byggefelt
      - delomraade
      - zonestatus
      - kystnaerhedszone

Udkommentér de linjer ud du ikke har brug for. Standard-søgningerne tilpasser sig automatisk.

3. Tænd søgningerne i config.yml

yaml
controller:
  _type: Septima.Search.Controller
  _options:
    blankBehavior: search
    searchers:
      - _ref: $.standardkommune.dawa
      - _ref: $.standardkommune.gsearch
      - _ref: $.standardkommune.plansystem
      - _ref: $.standardkommune.stednavne
      - _ref: $.standardkommune.ejendomme
      - _ref: $.standardkommune.bbr
      - _ref: $.standardkommune.cvr

Rækkefølgen bestemmer i hvilken orden søgeresultaterne vises. Fjern linjer du ikke vil have med.

Hvad står der til rådighed?

NavnHvad finder den?
dawaAdresser, vejnavne og adgangsadresser (DAWA).
gsearchMatrikler, postdistrikter, sogne m.fl. — styret af gsearch.targets.
plansystemLokalplaner, kommuneplanrammer, byggefelter m.fl. — styret af plansystem.targets.
stednavneStednavne
ejendommeSamlet fast ejendom og BFE
bbrBygninger og enheder fra BBR.
cvrVirksomheder og p-enheder.

Gyldige værdier i gsearch.targets: matrikelnumre, kommuner, opstillingskredse, politikredse, postdistrikter, regioner, retskredse, sogne, matrikelnumre_udgaaet.

Gyldige værdier i plansystem.targets: vedtagetlokalplan, lokalplanforslag, kommuneplanramme, kommuneplantillaeg, byggefelt, delomraade, regionplan, zonestatus, kystnaerhedszone, transportkorridor, vedtagetkloakopland, mulighedforudtraedenkloakopland.

Egne søgninger

Når I vil kunne søge i jeres egne data — fx biblioteker, arbejdspladser, græsflader — opretter I en ny søgning under searchers: og tænder den i controller.searchers.

Sådan gør du

  1. Definér søgningen under searchers: med et unikt source og typeId.
  2. Tænd den ved at tilføje - _ref: $.searchers.<navn> i controller._options.searchers.
  3. (Valgfrit) kobl søgningen til et kortlag så hittene vises som symboler — se Kobling til kortlag.

Felter du oftest bruger

FeltHvad gør det?
sourceDit navnerum — fx minkommune, park, ah.
typeIdId for typen — fx bibliotek, graesflade.
iconURIIkon ved hittet, typisk en data:image/svg+xml;base64,... URI.
singular / pluralVisningsnavn — fx "Bibliotek" / "Biblioteker".
searchPropertiesFelter i dataen der matches mod brugerens søgetekst.
displaynamePropertyFeltet der vises som titel i listen.
descriptionPropertyFeltet der vises som undertekst.
geometryPropertyFeltet med geometrien.
idPropertyEntydig nøgle pr. række.
sridKoordinatsystem — fx epsg:25832 eller epsg:4326.
dataURL eller fil der leverer dataen.

Eksempel A: Statisk GeoJSON fra assets

Læg en GeoJSON-fil under assets/data/ i din konfiguration og peg på den:

yaml
searchers:
  biblioteker:
    _type: Septima.Search.DataSearcher
    _options:
      iconURI: data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij48cGF0aCBkPSJNMTgsMjJMMTIsMTlMNiwyMlYyQzYsMC44OSA2Ljg5LDIgNiwySDEyVjIwTDE4LDE3VjJIMThWMjJaIiBmaWxsPSJjdXJyZW50Q29sb3IiLz48L3N2Zz4=
      source: minkommune
      typeId: bibliotek
      searchableData:
        _type: Septima.Search.SearchableGeoJson
        _options:
          singular: Bibliotek
          plural: Biblioteker
          searchProperties:
            - navn
            - adresse
          displaynameProperty: navn
          descriptionProperty: adresse
          geometryProperty: geometry
          idProperty: id
          srid: epsg:25832
          data: /api/onedoor/v1/organisations/min-kommune/configurations/byggesager/assets/data/biblioteker.geojson

Tænd den derefter med - _ref: $.searchers.biblioteker i controller.

Eksempel B: GeoJSON fra WFS / egen server

Mange GIS-servere leverer GeoJSON via et WFS GetFeature-kald. Peg data på URL'en:

yaml
searchers:
  graesflader:
    _type: Septima.Search.DataSearcher
    _options:
      source: park
      typeId: graesflade
      searchableData:
        _type: Septima.Search.SearchableGeoJson
        _options:
          singular: Græsflade
          plural: Græsflader
          searchProperties:
            - arbejdssted
          displaynameProperty: objekt_id
          descriptionProperty: arbejdssted
          geometryProperty: geometry
          idProperty: objekt_id
          srid: epsg:4326
          data: https://gis.min-kommune.dk/ows?VERSION=1.1.0&SERVICE=WFS&REQUEST=GetFeature&outputformat=geojson&typename=graesflade

Eksempel C: REST / PostgREST

Hvis I har et JSON-endpoint der returnerer en liste af objekter (fx PostgREST), bruges SearchableData:

yaml
searchers:
  kommunaleproduktionsenhed:
    _type: Septima.Search.DataSearcher
    _options:
      source: cvr
      typeId: kommunal_produktionsenhed
      searchableData:
        _type: Septima.Search.SearchableData
        _options:
          singular: kommunal produktionsenhed
          plural: Kommunale p-enheder
          searchProperties:
            - navn
            - adresse
          displaynameProperty: navn
          descriptionProperty: branche
          geometryProperty: geometri
          idProperty: pnummer
          srid: epsg:25832
          data: https://min-kommune.dk/postgrest/kommunale_produktionsenheder

Eksempel D: ArcGIS REST

Hvis datakilden er en ArcGIS REST-service, brug ArcGisSearcher:

yaml
searchers:
  arcgis_weblager:
    _type: Septima.Search.ArcGisSearcher
    _options:
      source: weblager
      layers: "Weblager"
      catalogUrl: https://kort.min-kommune.dk/ekstern/rest/services
      serviceName: DIVERSE/Weblager/
      resultTypes:
        Weblager:
          singular: Byggesag
          plural: Byggesager

Eksempel E: Egen PostgreSQL via pgindex

Hvis I bruger Septimas pgindex-udvidelse i databasen:

yaml
searchers:
  fredede_omr:
    _type: pgindex.Searcher
    _options:
      connection:
        _ref: $.pgindex.connection
      typeId: fredede_omr
      info: true

Kobling til kortlag

Hvis brugeren skal kunne se jeres egne søgehits som symboler på kortet, skal søgningen og kortlaget dele samme source + typeId:

  • Søgningen i config.yml angiver fx source: minkommune, typeId: bibliotek.
  • Kortlaget defineres i style.yml med samme source: minkommune, type: bibliotek og et symbol.
  • Lagvælgeren viser laget som en normal mulighed.

Se Egne lag i lagvælger-vejledningen for hvordan kortlaget og dets symbol defineres i style.yml.

Fejlfinding

SymptomHvad skal du tjekke?
Søgningen vises ikke i dropdown'etDen er ikke tændt — tilføj - _ref: $.searchers.<navn> i controller._options.searchers.
Serveren fejler ved opstart med "…doesn't exist"En fil under import.sections mangler. Tjek filnavn (uden .yml) og dir.
Standardsøgningerne giver ingen hitsparameters.kommunekode er tom, eller standardkommune er ikke importeret.
Ingen resultater fra egen GeoJSONTjek at URL'en svarer i browseren, at searchProperties matcher feltnavnene i features[].properties, og at srid passer til koordinaterne.
Hits vises på forkert sted på kortetsrid passer ikke til dataen. Brug epsg:25832 for dansk UTM32 eller epsg:4326 for lat/lon.
Detaljer-fane er tom ved klikDin detailhandler's targets matcher ikke hittet. Brug source: '*' hvis den skal virke for alle, eller skriv de konkrete source/typeId.
YAML giver parse-fejlTjek indrykning og bindestreger — controller._options.searchers skal være en liste hvor hvert element starter med - _ref: ....