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 kommunekodeDu 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/standardkommune2. 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
- kystnaerhedszoneUdkommenté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.cvrRækkefølgen bestemmer i hvilken orden søgeresultaterne vises. Fjern linjer du ikke vil have med.
Hvad står der til rådighed?
| Navn | Hvad finder den? |
|---|---|
dawa | Adresser, vejnavne og adgangsadresser (DAWA). |
gsearch | Matrikler, postdistrikter, sogne m.fl. — styret af gsearch.targets. |
plansystem | Lokalplaner, kommuneplanrammer, byggefelter m.fl. — styret af plansystem.targets. |
stednavne | Stednavne |
ejendomme | Samlet fast ejendom og BFE |
bbr | Bygninger og enheder fra BBR. |
cvr | Virksomheder 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
- Definér søgningen under
searchers:med et uniktsourceogtypeId. - Tænd den ved at tilføje
- _ref: $.searchers.<navn>icontroller._options.searchers. - (Valgfrit) kobl søgningen til et kortlag så hittene vises som symboler — se Kobling til kortlag.
Felter du oftest bruger
| Felt | Hvad gør det? |
|---|---|
source | Dit navnerum — fx minkommune, park, ah. |
typeId | Id for typen — fx bibliotek, graesflade. |
iconURI | Ikon ved hittet, typisk en data:image/svg+xml;base64,... URI. |
singular / plural | Visningsnavn — fx "Bibliotek" / "Biblioteker". |
searchProperties | Felter i dataen der matches mod brugerens søgetekst. |
displaynameProperty | Feltet der vises som titel i listen. |
descriptionProperty | Feltet der vises som undertekst. |
geometryProperty | Feltet med geometrien. |
idProperty | Entydig nøgle pr. række. |
srid | Koordinatsystem — fx epsg:25832 eller epsg:4326. |
data | URL 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.geojsonTæ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=graesfladeEksempel 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_produktionsenhederEksempel 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: ByggesagerEksempel 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: trueKobling 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.ymlangiver fxsource: minkommune, typeId: bibliotek. - Kortlaget defineres i
style.ymlmed sammesource: minkommune, type: bibliotekog 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
| Symptom | Hvad skal du tjekke? |
|---|---|
| Søgningen vises ikke i dropdown'et | Den 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 hits | parameters.kommunekode er tom, eller standardkommune er ikke importeret. |
| Ingen resultater fra egen GeoJSON | Tjek 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å kortet | srid passer ikke til dataen. Brug epsg:25832 for dansk UTM32 eller epsg:4326 for lat/lon. |
| Detaljer-fane er tom ved klik | Din detailhandler's targets matcher ikke hittet. Brug source: '*' hvis den skal virke for alle, eller skriv de konkrete source/typeId. |
| YAML giver parse-fejl | Tjek indrykning og bindestreger — controller._options.searchers skal være en liste hvor hvert element starter med - _ref: .... |