Fi:Talonumerot

From OpenStreetMap Wiki
Jump to navigation Jump to search

Talonumerointitiedot kannattaa lisätä alla suomennetun Karlsruhe Scheman mukaisesti. Karlsruhe Scheman mukaisesti merkityt talonumerot näkyvät kartalla käytettäessä suurimpia zoom-tasoja.

Tässä kuvatuilla tavoilla merkittyjä osoitteita on syötetty vuoden päivät eikä merkittäviä puutteita ole havaittu. On todennäköistä, että talonumeroiden merkitsemistapa ei tästä muutu. Vaikka jotain muutettaisiin, tämän mukaan syötetyt tiedot voidaan muuttaa ohjelmallisesti.

Aiemmat ehdotukset (engl.) numerointien merkkaustavoista eivät ole johtaneet ohjelmistotukeen eikä merkittävään tietojen syöttöön, mutta keskustelu niistä paljasti niiden ongelmakohdat.


Perusteet

Koska talot sijaitsevat teiden sivuilla, tulee kunkin talonumeron olla tiestä sivussa. Talo ei ole osa tietä, vaan talo esitetään OSM:ssa solmuna tai alueena (= rakennuksena) talon todellisella sijaintikohdalla.

  • Jos talolla on vain yksi osoite, annetaan taloa kuvaavalle alueelle sopivat addr=* tagit.
  • Jos talolla on useampi osoite, merkataan kukin osoite omaksi pisteekseen, vaikka talo olisi piirretty alueena. Pisteet tulisi sijoittaa talon "sisälle" mutta lähelle osoitenumeroon kuuluvaa tietä lähintä seinää.
  • Jos useammalla irrallisella talolla on sama numero, on usein laitettu näiden keskelle yksi solmu jolle osoitetta kuvaavat tagit. Rakennusten yhdistämiseksi ei ole vielä merkkaustapoja, mutta rappujen kirjaimia voi merkata kullekin talolle.

Koska jokaisen talon merkkaaminen ei aina ole kohtuullisen vaivan takana, voidaan talonumeroiden välejä interpoloida; esim. kahden risteyksen välillä tietyllä puolella tietä on kaikki parittomat numerot annetulla välillä. Lopullinen tavoite on kuitenkin merkata jokainen osoite erikseen.

Tavanomaisten tapausten syötön tulisi olla mutkatonta.

Käytettävät tagit

Seuraavat tagit ovat tarpeen tai mahdollisia:

Tag Vaadittu tieto Elementti Arvot Kuvaus Esimerkki
addr:housenumber kyllä node area teksti Talon numero, Suomessa katunumero, ks. rakennusosoite 1
addr:street ei node area teksti kadun, johon tämä talo kuuluu, nimi Mannerheimintie
addr:postcode ei node area teksti postinumero, jonka alueelle tämän talon osoite kuuluu 00100
addr:city ei node area teksti kaupunki, jota käytetään tämän talon postiosoitteessa Helsinki
addr:country ei node area teksti Kaksikirjaiminen ISO 3166-1 alpha-2 mukainen suuraakkonen maakoodi (lisätietoa wikipediasta). Suomessa "FI" . Huomiota: ISO 3166-1 alpha-2 kaksikirjaiminen koodi Isossa-Britanniassa on "GB" eikä "UK". FI
addr:full ei node area teksti talon täydellinen postiosoite.
addr:interpolation ei way even/odd/all interpolointitapa: parilliset luvut (even) / parittomat (odd) / kaikki (all)

Katunumeron merkintätapa

Katunumero ei Suomessa usein ole yksikäsitteinen numero, vaan samalla tontilla on usein useita rakennuksia, joilla on sama numero. Katunumerossa erottavana tekijänä on tällöin kirjain tai toinen numero, esimerkiksi Siltakatu 123a, Koivutie 15-1 jne.

Kaikki Suomen katunumerot ovat saatavilla avoimena datana Digiviraston ylläpitämästä "Rakennusten osoitetiedot ja äänestysalue" -tietokannasta (https://www.avoindata.fi/data/fi/dataset/rakennusten-osoitetiedot-koko-suomi). Aineiston paha puute on, ettei se sisällä rappukirjaimia. Aineiston 2020-08-14 julkaistussa versiossa on 3678742 osoitetietoa, joissa esiintyy 23067 erilaista katunumeroa. Katunumerot jakautuvat mm. seuraavanlaisiin tyyppeihin:

Esimerkki extended regexp Osoitteita Erilaisia numeroita Huomioitavaa
ei katunumeroa '^$' 468851 1
123 '^[[:digit:]]+$' 2888657 5531 Ainoa rakennus tontilla tai tontin eri rakennuksilla on sama katunumero.
123a '^[[:digit:]]+[a-ö]+$' 295243 10053 Yleisin tyyppi, suositeltava muoto, kun tontin rakennukset on eroteltu kirjaintunnuksella. Tarkemmin: kun tontista 123 on lohkaistu irti pienempi tontti 123a.
123 a '^[[:digit:]]+ +[a-ö]+$' 3178 1347
123A '^[[:digit:]]+[A-Ö]+$' 77 48
123 A '^[[:digit:]]+ +[A-Ö]+$' 65 37 Kansallisissa standardeissa suositeltu muoto, kun tontin rakennukset on eroteltu katunumeron sijaan rappukirjaimilla. (Digiviraston ja kuntien rakennus- ja osoiterekistereihin ei ole kerätty tietoa rappukirjaimista.)
123-a '^[[:digit:]]+ *- *[a-ö]+$' 2 2
123-A '^[[:digit:]]+ *- *[A-Ö]+$' 0 0
123-1 '^[[:digit:]]+ *- *[0-9]+$' 20782 (10136 sellaista joissa saattaa yhdistyä 2, 3, 4 tai 5 peräkkäistä tonttia) 4899 (232) Yleisin ja suositeltava muoto, kun tontin rakennukset on eroteltu numeroin. Monitulkintainen, koska yleensä 1-3 ei tarkoita tontin 1 taloa 3 vaan taloa, jota varten on yhdistetty peräkkäiset tontit 1 ja 3! (Esim. osoitteita, joissa on peräkkäiset numerot kuten 1-2 eivätkä siten voi tarkoittaa peräkkäisten tonttien yhdistämistä, on Suomessa yhteensä vain 142.)
123/a '^[[:digit:]]+ */ *[[:alpha:]]+$' 12 8
123/1 '^[[:digit:]]+ */ *[[:digit:]]+$' 123 108 Kansallisissa standardeissa suositeltu muoto, kun tontin rakennukset on eroteltu numeroin.
123 as A '^[[:digit:]]+ *as *[[:alpha:]]+$' 0 0
123 as 1 '^[[:digit:]]+ *as *[[:digit:]]+$' 40 37
123 rak 1 '^[[:digit:]]+ *rak *[[:alnum:]]+$' 3 3
123a1 '^[[:digit:]]+ *[[:alpha:]] *[[:digit:]]+$' 229 153 Sisältää kolmannen komponentin, joka kuuluu mieluummin addr:unit tai addr:flats -tagiin
muut 1480 840
Yhteensä 3678742 23067

Datan yhteensopivuuden ja tulevien importtien sujuvuuden takia on katunumerot siis syytä tagata muotoon addr:housenumber="123a", kun tontin rakennukset on eroteltu toisistaan kirjaimin, ja muotoon addr:housenumber="123-1", kun ne on eroteltu numeroin.

Käyttötapaukset

Yksi talo yksinäisenä solmuna tien sivussa

NodeNextToRoad.png

<node id="1">
  <tag k="addr:housenumber" v="10" />
</node>

Talonumeron sijainti lasketaan etsimällä linnuntietä lähin piste solmua tai aluetta lähimpää kulkevalta tieltä.

Yksi talo taloksi merkattuna alueena

HousePolygonNextToRoad.png

<way id="1">
  <tag k="addr:housenumber" v="10" />
  <tag k="building" v="(yes|apartments|...)" /> 
</way>

Aivan kuten edellisessä kohdassa, mutta talon keskipistettä tullaan käyttämään talon sijaintina laskettaessa lähintä pistettä lähimmältä tieltä.

Useita taloja tien varrella

HouseNumbersInterpolation.png

Piirretyn tien suuntaisesti lisätään tien sivuun solmuja, jotka yhdistetään uudella way:lla. Tätä uutta way:ta käytetään vain merkkaamaan solmuissa annettujen numeroiden välistä interpolointia ja interpoloinnin laatua.

<node id="01" lat=... lon=...>
  <tag k="addr:housenumber" v="10" /> 
</node>
<node id="02" lat=... lon=...>
  <tag k="addr:housenumber" v="20" /> 
</node>
<node id="03" lat=... lon=...>
  <tag k="addr:housenumber" v="100" /> 
</node>
<way id="??">
  <node ref="01"/>
  <node ref="02"/>
  <node ref="03"/>
  <tag k="addr:interpolation" v="even" />
</node>

Solmuissa annetuista osoitenumeroista vain kokonaislukuarvot huomioidaan interpoloinnissa ja interpolointia tehdään vain niiden solmujen välillä, joissa kummassakin on kokonaisluku. Näin esimerkiksi talonumeron "12b" kummallekin puolelle täytyisi merkitä omana solmunaan talot 10 ja 14 (oikeille kohdilleen), jotta interpolointi voi jatkua näistä numeroista.

Jos tieltä puuttuu osoitenumeroista joku numero, tulisi numerot piirtää kahtena erillisenä way:na; toinen kuvaa numerot esimerkiksi numerot 1-11 ja toinen numerot 15-25, jos 13 puuttuu parittomien numeroiden sarjasta.

Erittäin kaukaisessa tulevaisuudessa OSMista voidaan olettaa löytyvän (maailmanlaajuisesti) kaikki talot muotoisinaan alueina, joilla jokaisella on yksilöity osoitteensa. Tällöin interpolointikäytäntö menettää merkityksensä, mutta siihen asti sitä tarvitaan. Väitetysti joissain muista lähteistä luvallisesti massatuotavissa tiedoissa on myös käytetty interpolointia osoitenumeroiden merkkaamiseen, joten näiden tuominen osaksi OSMin tietokantaa ei onnistuisi ilman interpolointi-viivoja.

Valinnainen osa: talon yhdistäminen oikeaan tiehen

Yhdistäminen nimellä

HousePolygonNextToRoadWName.png

<node id="1" lat=... lon=...>
  <tag k="addr:housenumber" v="10" /> 
  <tag k="addr:street" v="Astreet" /> 
</node>

Ihmiskäyttäjälle lienee, ainakin nykyisillä karttaeditoreilla, helpointa syöttää taloja kuvaaville solmuille tarvittaessa tagi addr:street jonka arvoksi annetaan tien name-tagissa annettu arvo. Tietä ohjelmallisesti etsittäessä tutkitaan vain way:t, joilla on tagi highway=*.

Vaikka tässä on mahdollisuus kirjoitusvirheisiin ja päivitysvirheisiin tien nimen mahdollisesti muuttuessa, oletetaan tämän olevan useimmissa tapauksissa riittävä käytäntö.

Yhdistäminen relaatiolla

Tiedon yhtenäisyyden ja koska karttakohteiden yhteyksien kuvaamisen rakenteeksi on OSMissa luotu relaatio-rakenne, on relaatioiden käyttö "oikeampi" tapa.

Relaatioiden lisääminen oletetaan onnistuvan helposti kun kartta-aineistoa esikäsitellään kullekin etsintäsovellukselle sopivampaan muotoon. Näitä relaatioita voi kuitenkin lisätä editoreilla manuaalisestikin.

Relaation tagit

Tagi Arvo Kommentti
type associatedStreet
name streetname On suositeltavaa käyttää kadunnimeä tai muuta relaation selkeästi yksilöivää nimeä

Relaation jäsenet

Tie tai solmu Rooli Lukumäärä Kommentti
way street yksi Tie jota pitkin interpoloidaan
node way house yksi tai useampi Yksi tai useampi määritelty talonumeron paikka
<node id="1" lat=... lon=...>
  <tag k="addr:housenumber" v="10" /> 
</node>
<relation id="??">
  <tag k="type" v="associatedStreet" /> 
  <member type="node" ref="11" role="house" />
  <member type="way" ref="???" role="street" />
</relation>

Solmuna esitetty yksittäinen talo

HousePolygonNextToRoadWRel.png

<node id="11" lat=... lon=...> 
  <tag k="addr:housenumber" v="10" />
  <tag k="addr:street" v="AStreet" /> 
</node>

 ja

<relation id="??">
  <tag k="type" v="associatedStreet" /> 
  <member type="node" ref="11" role="house" />
  <member type="way" ref="???" role="street" />
</relation>

Interpoloitavan sarjan yhdistäminen tiehen

<node id="1" lat=...lon=...>
  <tag k="addr:housenumber" v="10" /> 
  <tag k="addr:street" v="AStreet" /> 
</node>
<node id="2" lat=... lon=...>
  <tag k="addr:housenumber" v="20" /> 
</node>
<node id="3" lat=... lon=...>
  <tag k="addr:housenumber" v="100" /> 
</node>
<way id="11">
  <nref id="1"/>
  <nref id="2"/>
  <nref id="3"/>
  <tag k="addr:interpolation" v="even" />
</way>

 ja

<relation id="??">
  <tag k="type" v="associatedStreet" /> 
  <member type="way" ref="11" role="house" />
  <member type="way" ref="???" role="street" />
</relation>

Osmarender eli Tiles@Home piirtää solmut, joilla on tagi addr:housenumber=*, harmaina pallukoina, joissa valkoisella annettu numero. Vastaavasti tagilla building=* merkattujen alueiden keskipisteeseen piirretään vastaava pallukka osoitenumerolla. Lisäksi wayn, jolla on tagi addr:interpolation=*, solmut yhdistetään harmaalla katkoviivalla, ellei tuo way ole osa relaatiota jolla on tagi type=associatedStreet. Interpoloimalla saatavia osoitenumeroita ei (vielä?) piirrettäessä lasketa tai piirretä lainkaan.

Käytännössä tämä tarkoittaa, että useamman korttelin mittaiset interpolaatiot piirretään risteävät tiet ylittävänä katkoviivana (jos osoitenumerot sisältävät solmut on yhdistetty omalla way:llaan interpolaatiota varten) tai että tie addr:interpolation-tagilla ilman relaatiota saa toistaiseksi päälleen harmaan katkoviivan. Käsin syötetyn relaation kanssa interpolointi on yksiselitteinen ja kartalle ei piirretä ylimääräistä.

Valinnainen osa: aputieto täydellisestä osoitteesta

<node id="01" lat=... lon=...>
  <tag k="addr:housenumber" v="10" />
  '''<tag k="addr:postcode" v="832989" />'''
  '''<tag k="addr:full" v="AStreet 10
                           832989 My Town
                           France" />'''
</node>

Valinnainen osa: Tarkentava tieto kulkuyhteydestä tieltä talolle

<relation id="??">
  <tag k="type" v="roadAccess">
  <member type="way" ref="11" role="accessto" />    (mihin taloon)
  <member type="node" ref="11" role="accessvia" />  (minkä solmun kautta, valinnaisesti useampia:)
                (Jokainen sisäänkäynti voidaan merkata, esimerkiksi ostoskeskukset tai vastaavat.)
  <member type="way" ref="???" role="accessfrom" /> (miltä tieltä)
</relation>

Accessvia -roolissa oleva solmu ("kulku tämän kautta") voi olla solmu tiellä tai solmu taloon päästävällä portilla. Tällöin kulkuyhteyttä etsittäessä osoite löydetään tätä solmua lähimpänä olevana kohtana accessfrom roolissa olevalta tieltä.

Käyttö

  • JOSM-editorin Esivalinnat-valikosta löytyy helpottava syöttöruutu addr:* -tageille
  • Useita kadunvarsia sekä Suomessa että muissa maissa on täytetty osoitteilla.
  • Ohjelmaan Traveling Salesman on lisäosa org.openstreetmap.osm.data.searching.HouseNumberFinderTest talonumerollisten osoitteiden etsimiseen.
  • Mapnik- ja Osmarender-kartoille on tehty muutokset numeroiden piirtämiseksi kartalle. Pyöräilykartalla numeroita ei vielä näytetä.