Geonøgler, GeoSearch

Velegnet til implementering af fritekstsøgninger på websites

>> Implementerings eksempel finder du her

GeoSearch understøtter

  • Fritekst søgninger
  • Type ahead
  • Fonetisk genkendelse af stavemåder
  • Søgning i Adresser, Administrative enheder (DAGI), Stednavne og Matrikler

 

Introduktion

Fonetisk søgning er en forædling af Geonøglerne beregnet på opsætning af et søgemodul på en brugergrænseflade.

Geonøgler der er omfattet:

  • Adresser(vejnavn og nummer) - Benytter en service der hostes hos Grontmij
  • DAGI(kommuner ,postnumre, regioner, sogne, retskredse, opstillingskredse, politikredse )
  • Stednavne
  • Matrikler(Ejerlav og matrikel nummer)

Med udgangspunkt en kopi af data genereres der hver nat et index over Geonøglerne. Index' bygger på Open Source søgemaskinen Lucene(http://lucene.apache.org/core/).

 

Generelt

GeoSearch er en service til at returnere objekter i JSON / JSONP format på basis af et REST interface.

Basis URL til service er: https://services.kortforsyningen.dk/Geosearch. Det er muligt både at anvende http og https. Det er muligt at benytte både POST og GET mod servicen.

 

Input parametre til GeoSearch

GeoSearch accepterer en række parametre (angivet i URL'en), som er beskrevet nedenfor.

&search= (obligatorisk)

Parameteren search angiver den tekststreng, der søges efter. Se eksempler på parameteren under punktet ”Eksempler”

&resources= (obligatorisk)

Angiver de ressourcer, som man vil søge i adskilt med komma ”,”. Rækkefølgen af ressourcer er afgørende for rækkefølgen i resultatsættet. Det samlede antallet af resultater er bestemt af limit parameteren. Hvis man f.eks. vælger ”adresser, stednavne, kommuner” og vælger limit 10, vil GeoSearch returnere 4 adresser, 3 stednavne og 3 kommuner i den rækkefølge.

Følgende ressourcer er understøttet af GeoSearch:

  • adresser
  • matrikelnumre
  • matrikelnumre_udgaaet
  • matrikelnumre_incl_udgaaet
  • stednavne (ikke på opdaterede data)
  • stednavne_v2 (Dagligt opdaterede stednavne)
  • kommuner
  • opstillingskredse
  • politikredse
  • postdistrikter
  • regioner
  • retskredse
  • sogne

 

&limit= (default 10)

Angiver hvor mange resultater, man ønsker returneret. Som udgangspunkt (hvis parameteren udelades), returneres maksimalt 10 resultater.

&ticket=

Adgang til servicen gennem kortforsyningens standard ticket system. På kortforsyningens hjemmeside kan man læse mere om GST's ticketsystem.

&login= &password=

Alternativ til ticket er login med brugernavn/password. Man bør ikke anvende denne metode i WEB applikationer, da password i givet fald vil være frit tilgængeligt.

&callback=

Output fra servicen er som standard JSON. Hvis man ønsker at anvende JSONP, tilføjes parameteren “callback”. Dette er specielt anvendeligt i WEB applikationer.

&area=

Begrænsning inden for postdistrikter eller kommuner. Der angives en kommasepareret liste.

Postnumre skrives direkte f.eks. 1454 eller 1454,3400

Kommuner skrives med kommunekoden, der er foranstillet med “muncode”. F.eks. muncode0101 eller muncode0101,muncode0219

Bemærk at følgende ressourcer ikke understøtter postnummerfilter:

  • Matrikelnumre
  • Matrikelnumre_udgaaet
  • Matrikelnumre_incl_udgaaet
  • Stednavne_v2

Bemærk at følgende ressourcer ikke understøtter kommunefilter:

  • Stednavne_v2

&crs=EPSG: (default 25832)

Angiver EPSG koden for det koordinatsystem geometri returneres i. Følgende EPSG koder er understøttet: 25832 og 4326.

EPSG:4326 er kun understøttet på adresser og stednavne.

 

Output fra GeoSearch

Servicen returnerer normalt JSON eller JSONP. Man skal dog være opmærksom på to situationer hvor dette ikke er gældende:

  • Hvis brugeren ikke er gyldig
  • Hvis search parameteren mangler eller er tom

 

I disse tilfælde returneres tekst.

Ellers returneres et JSON objekt der ser ud som følger (resultat ved ingen match):
{
   status: "OK"
   message: "OK"
   data: null
}

Hvis der opstår en fejl, så vil status indeholde “ERROR” og message indeholde en læsbar besked om hvad der er gået galt.

Hvis der er fundet et eller flere match, så indeholder data et array af objekter med det der er fundet. F.eks.:
{
   "status":"OK",
   "message":"OK",
   "data":[
      {
         "type":"politikreds",
         "id":"2",
         "name":"Østjyllands Politi",
         "presentationString":"Østjyllands Politikreds",
         "geometryWkt":"POLYGON((540807.43 6181038.6,5......,540807.43 6181038.6))",
         "myndighedsKode":"1461"
      }
   ]
}
 

Hvert objekt indeholder altid følgende attributter:

  • type - indikerer objekttypen på det returnerede
  • presentationString - en læsbar tekst, som kan vises for en slutbruger
  • geometryWkt - den omsluttende firkant i formatet WKT (se mere på http://wikipedia.org/wiki/Well-known_text) med undtagelse af husnumre, der i stedet er et punkt også på formatet WKT. Denne geometri kan man f.eks. bruge til at navigere til objektet i et kort. Geometrien egner sig ikke til at markere objektet i kortet. Ressourcen Matrikler_udgaaet returnerer ingen geometriske attributter, da disse ikke er tilgængelige i kortforsyningen.

I det følgende listes listes de ressourcer, som man kan kalde servicen med i parameteren “resources”.

Adresser

At søge på adresser er lidt mere avanceret end de andre ressourcer. Her indeholder servicen en logik der gør at der først søges på veje. Når der tilføjes et tal, søges der i husnumre. Derfor returneres to forskellige resultater afhængig af hvad der er skrevet.

Veje

Hvis resultatet er veje jf. ovenfor:

http://services.kortforsyningen.dk/Geosearch?search=larsb&resources=Adresser&limit=1
{

type: "streetNameType"

streetName: "Larsbjørnsstræde"

postCodeIdentifier: "1454"

districtName: "København K"

presentationString: "Larsbjørnsstræde (1454 København K)"

geometryWkt: "POLYGON((724357 6175992,724357 6176126,724457 6176126,724457 6175992,724357 6175992))"

validCoordinates: true

xMax: 724457

yMax: 6176126

xMin: 724357

yMin: 6175992

municipalityCodes: "0101 "

streetCodes: "4176 "

}

Adresser

Hvis resultatet er adresse jf. ovenfor:
http://services.kortforsyningen.dk/Geosearch?search=larsb%203&resources=Adresser&limit=1
{

type: "addressAccessType"

addressAccessId: "0a3f507a-b4f3-32b8-e044-0003ba298018"

municipalityCode: "0101"

municipalityName: "København"

streetCode: "4176"

streetName: "Larsbjørnsstræde"

streetBuildingIdentifier: "3"

mailDeliverySublocationIdentifier: ""

districtSubDivisionIdentifier: ""

postCodeIdentifier: "1454"

districtName: "København K"

presentationString: "Larsbjørnsstræde 3, 1454 København K"

addressSpecificCount: 0

validCoordinates: true

geometryWkt: "POINT(724437 6176005)"

x: 724437

y: 6176005

}

Matrikelnumre

Ressourcen Matrikelnumre, tillader at man søger med et landsejerlavsnummer. Dette vises ikke som en del af ”presentationString”, men teksten anvendes som et eksakt match – dvs. kun matrikelnumre under det landsejerlav, som nummeret modsvarer, vil blive returneret.

Såfremt landsejerlavsnavnet ikke er entydigt (der findes 2 eller flere landsejerlav med det samme navn), præsenteres søgeresultatet med kommunenavn i parentes – f.eks.: ”Søby By, Søby (Syddjurs) - 1a”

Særligt for matrikelnumre, returneres centroid_x og centroid_y – svarende til tilsvarende felter fra øvrigt KF-services.

http://services.kortforsyningen.dk/Geosearch?search=N%C3%B8rre%20Kvarter,%20K%C3%B8benhavn%2013&resources=Matrikelnumre&limit=1
{

type: "matrikelnummer"

elavsnavn: "Nørre Kvarter, København"

elavskode: "2000163"

matrnr: "13"

presentationString: "Nørre Kvarter, København - 13"

centroid_x: "724404.89"

centroid_y: "6175961.524"

geometryWkt: "POLYGON((724404.89 6175961.524,....,724404.89 6175961.524))"

}

Matrikelnumre_udgaaet

Ressourcen Matrikelnumre_udgaaet returnerer kun udgåede matrikelnumre. Ressourcen tillader at man søger med et landsejerlavsnummer. Dette vises ikke som en del af ”presentationString”, men teksten anvendes som et eksakt match – dvs. kun matrikelnumre under det landsejerlav, som nummeret modsvarer, vil blive returneret.

Såfremt landsejerlavsnavnet ikke er entydigt (der findes 2 eller flere landsejerlav med det samme navn), præsenteres søgeresultatet med kommunenavn i parentes – f.eks.: ”Søby By, Søby (Syddjurs) - 1a”

Særligt for matrikelnumre_udgaaet, returneres ingen geografiske attributter, da geografien for udgåede matrikelnumre ikke er tilgængelig fra Kortforsyningen.

http://services.kortforsyningen.dk/Geosearch?search= Esbjerg%20gybrunde &resources=Matrikelnumre_udgaaet&limit=1
{

type:"matrikelnummer_udgaaet"

elavsnavn:"Esbjerg Bygrunde"

elavskode:"2007551"

matrnr:"165"

presentationString:"Esbjerg Bygrunde - 165"

}

Matrikelnumre_incl_udgaaet

Ressourcen Matrikelnumre_incl_udgaaet returnerer både aktuelle og udgåede matrikelnumre. Udgåede matrikelnumre præsenteres med teksten (Udg.) til sidst i ”presentationString”.

Virkemåden og retursvar svarer til ressourcen ”Matrikelnumre_udgaaet”.

Stednavne

Ressourcen, bliver ikke længere opdateret, og forventes at udgå ifm. etablering af Stednavne_v2.

 

http://services.kortforsyningen.dk/Geosearch?search=tivoli&resources=Stednavne&limit=1
{

type: "stednavn"

id: "107161"

name: "Tivoli"

presentationString: "Tivoli (Forlystelsespark/Tivoli - København)"

geometryWkt: "POLYGON((724150.39 6175322.56,....,724150.39 6175322.56))"

regionKoder: "1084"

featKode: "5550"

stednavnType: null

}

Stednavne_v2

Stednavne_v2, returnerer opdaterede stednavne fra stednavneregisteret. Modsat de øvrige ressourcer, returneres en fuld geometri for stednavnet. I de tilfælde hvor geometrien er ”stor”, udtyndes den egentlige geometri. Reglen for udtynding er:

  • Hvis geometrien for et stednavn (repræsenteret som WKT), fylder mere end 5.000 bytes, udtyndes med en tolerance på: Den største udbredelse i meter (øst/vest eller nord/syd) dividéret med 300.

http://services.kortforsyningen.dk/Geosearch?search=Tivoli%20forlystelse&resources=stednavne_v2&limit=1

 

{

"presentationString": "Tivoli (forlystelsespark i København V)",

"id_lokalid": "12423f6c-6175-b1ea-e053-d480220a29f7",

"skrivemaade": "Tivoli",

"skrivemaade_officiel": "Tivoli",

"skrivemaader_uofficiel": "",

"type": "sevaerdighed",

"subtype": "forlystelsespark",

"geometryWkt": "POLYGON((724232.66 6175674.84,724206.65 6175656.28,724196.67 6175649.26,724201.18 6175642.86, ....,724250.02 6175687.08,724232.66 6175674.84))"}

 

Kommuner

http://services.kortforsyningen.dk/Geosearch?search=k%C3%B8benhavn&resources=Kommuner&limit=1
{

type: "kommune"

id: "0101"

name: "København"

presentationString: "Københavns kommune (0101)"

geometryWkt: "POLYGON((716908.1 6168578.56,....,716908.1 6168578.56))"

}

Opstillingskredse

http://services.kortforsyningen.dk/Geosearch?search=indre&resources=Opstillingskredse&limit=1
{

type: "opstillingskreds"

id: "3"

name: "Indre By"

presentationString: "Indre Bykredsen"

geometryWkt: "POLYGON((723552.93 6174824.54,7....,723552.93 6174824.54))"

valgkredsNr: "12"

storkredsNr: "1"

storkredsNavn: "København"

landsdelsNr: "1"

landsdelsNavn: "Hovedstaden"

}
 

Politikredse

http://services.kortforsyningen.dk/Geosearch?search=K%C3%B8benha&resources=Politikredse&limit=1
{

type: "politikreds"

id: "2"

name: "Østjyllands Politi"

presentationString: "Østjyllands Politikreds"

geometryWkt: "POLYGON((540807.43 6181038.6,....,540807.43 6181038.6))"

myndighedsKode: "1461"

}

Postdistrikter

http://services.kortforsyningen.dk/Geosearch?search=K%C3%B8benhavn&resources=Postdistrikter&limit=1
{

type: "postdistrikt"

id: "1000-1499"

name: "København K"

presentationString: "København K, 1000-1499"

geometryWkt: "POLYGON((723673.53 6174962.23,....,723673.53 6174962.23))"

}

Regioner

http://services.kortforsyningen.dk/Geosearch?search=Hoved&resources=Regioner&limit=1
{

type: "region"

id: "1084"

name: "Region Hovedstaden"

presentationString: "Region Hovedstaden"

geometryWkt: "POLYGON((665973.49 6110250.39,....,665973.49 6110250.39))"

}

Retskredse

http://services.kortforsyningen.dk/Geosearch?search=k%C3%B8ben&resources=Retskredse&limit=1
{

type: "retskreds"

id: "23"

name: "Københavns Byret"

presentationString: "Københavns Byret"

geometryWkt: "POLYGON((720706.2 6162388.9,720706.2 6182091.85,740793.89 6182091.85,740793.89 6162388.9,720706.2 6162388.9))"

myndighedsKode: "1101"

}

 

Sogne

http://services.kortforsyningen.dk/Geosearch?search=Abild&resources=Sogne&limit=1
{

type: "sogn"

id: "8478"

name: "Abildgård "

presentationString: "Abildgård sogn (København)"

geometryWkt: "POLYGON((589473.08 6366829.03,589473.08 6370229.17,592311.75 6370229.17,592311.75 6366829.03,589473.08 6366829.03))"

}
 

>> Implementerings eksempel finder du her