Nopeusrajoitukset kartalla

Autolle tehty reititys kaipaa nopeusrajoituksia, ainakin läpiajettaville teille. Mitä työkaluja nykyisellään on tarkistaa nopeusrajoitukset laajemmalla alueella?

Tuli otettua OsmAnd käyttöön ja se näyttää toimivan kohtuullisen hyvin. Maaseudulla reitityksen onnistuminen on merkittävästi kiinni käytettävästä datasta. Jos toiselle tielle on rajoitus ja toiselle ei, niin reittien vertailu ei onnistu kunnolla. Nykyisellään ilman säätämisiä OsmAnd reitittää herkemmin reiteille, jossa nopeusrajoitukset on merkattuna (muutoin oletuksena noin 50 km/h). Ehkä siellä voisi olla tertiary-luokan teille asetettavissa yleisrajoitus, niin reititys toimisi useammin.

Nykyisellään kun pitää OsmAnd:ssä reitityksen käytössä, niin se myös näyttää rajoitustiedon & osaa sitten päivitellä niitä tarpeen mukaan. routing.openstreetmap.de/ pikkusen auttaa reitityksen miettimisessä ja sieltä löytyy debug osuus. Debug -sivu ei kerro datasta löytyvistä nopeusrajoituksista, ainakaan helposti.

Ehkä OsmAnd:iin voisi tehdä pluginin, joka noita näyttäisi – oikotietä nämä ohjeet eivät tarjoa Build with OsmAnd | OsmAnd mutta se ilmeisesti voisi toimia.

1 Like

Hei,

nopeusrajoituksia voi tutkiskella nettiselaimella täällä tai täällä, niiltä osin kuin ne on merkitty OpenStreetMapiin. Nopeusrajoitukset saa näkyville myös Väyläviraston Digiroad-palvelussa tai Paikkatietoikkunassa. Digiroad-aineisto on lisensoitu CC-BY 4.0 -lisenssillä eli sitä ei saa kopioida OSM:iin ilman Väyläviraston erikseen OSM:ille antamaa lupaa.

Vaikka OsmAndissa on muihin navigointisovelluksiin verrattuna melko paljon säätöjä, joutuu tuon yleisrajoituksen korjaamaan muokkaamalla erästä routing.xml-tiedostoa. Siinä näyttäisi olevan valmiiksi yhdysteille eli tertiary-luokan teille oletusnopeutena 45 km/h. Koska lähes kaikilla teillä nopeusrajoitus on todellisuudessa isompi, reititys suosii teitä, joiden nopeusrajoitus on tiedossa ja enemmän kuin 45 km/h. Reititystiedostoon oli jätetty kommentti “important urban roads” eli reititysohjelman tekijä oli selvästi ajatellut tertiary-luokan olevan käytössä taajamissa. Seuraavaksi ohje yleisrajoituksen muokkaamiseen OsmAndin Android-versiossa.

Tien oletusnopeuden säätö OsmAndissa
  1. Lataa routing.xml-tiedosto ja avaa tiedosto tekstinkäsittelyohjelmalla.
  2. Vaihda luvun 45 tilalle isompi luku riville <select value="45" t="highway" v="tertiary"/>. Tiedostoa päivitellään useamman kerran kuukaudessa, ainakin tänään tuo on rivi 862.
  3. Tallenna tiedosto.
  4. Siirrä tiedosto OsmAndin routing-kansioon (Android\data\net.osmand\files\routing).
  5. Valitse OsmAndissa autoilun reititykseksi äsken muokattu reititysohjelma: Asetukset → Auto → Navigointiasetukset → Navigation type → car routing.xml.

Tiedoston alussa on aika kattava ohje englanniksi reitityksen säätämisestä. Valitettavasti ko. tiedostossakin todetaan, että reitityksen muuttaminen ei tiettävästi onnistu iOS:issa.


Aika haastavaksi osoittautui noiden nopeusrajoitusten näyttäminen kartalla OsmAndissa. OsmAndin kartat ladataan täältä tai suoraan sovelluksesta. OpenStreetMap-kartan tiedostopääte on usein .osm, mutta OsmAndin kartat muutetaan mobiilikäyttöön sopivaan OsmAndin omaan .obf-muotoon. Tuota muutosta tehdessä vain tietyt ominaisuustiedot valitaan piirrettäviksi, eikä maxspeed=* ole yksi niistä, toisin kuin esimerkiksi lit=* on. Tässä on ohje nopeusrajoituksen näyttämiseen kartalla. Tein itse kaiken Windowsilla, eli muilla tietokoneilla homma voi olla hieman eri.

Nopeusrajoitusten piirtäminen OsmAndissa
  1. Lataa rendering_types.xml-tiedosto tietokoneelle ja avaa se tekstinkäsittelyohjelmalla.
  2. Lisää ihan mihin vain <category>-tunnisteen sisälle <type tag="maxspeed" value="999" minzoom="12" /> ja korvaa "999" sillä nopeusrajoituksella, jonka haluat kartalle. Itse laitoin tuon koodin riville 7383 (<routing_type tag="oneway:horse" mode="amend"/> jälkeen), eli siinä se ainakin toimi. Kopioi liittämäsi koodi useammalle riville ja kirjoita joka kerta value=""-kohtaan eri luku. Itse laitoin 11 riviä ja niihin arvot 10, 20, 30, 40, 50, 60, 70, 80, 100, 120 ja variable.
  3. Tallenna tiedosto (työpöydälle).
  4. Lataa karttadataa .osm- tai .pbf-muodossa Overpass Turbosta, Geofabrikista tai jostain muualta tietokoneelle. En nyt tämän tarkemmin ohjeista tätä. Wikissä on ohjeita karttadatan lataamiseen.
  5. Lataa OsmAnd MapCreator -ohjelma täältä painamalla “website”-linkkiä. Pura .zip-tiedosto esimerkiksi työpöydälle.
  6. Käynnistä OsmAndMapCreator-main-kansiossa oleva OsmAndMapCreator.bat.
  7. Avaa OsmAnd Map Creatorin ikkuna-valikosta asetukset. Kirjoita polku kohdassa 3 tallentamaasi rendering_types.xml-tiedostoon kohtaan “Path to rendering types xml (rendering_types.xml)”, esimerkiksi “C:\Users\käyttäjänimi\Desktop\rendering_types.xml”. Paina OK.
  8. Valitse tiedosto-valikosta “Create .obf from osm file” ja etsi kohdassa 5 hankkimasi .osm- tai .pbf-karttatiedosto. Odota, että kartta tulee valmiiksi. Wikin mukaan koko Suomen kartan käsitteleminen kerralla voi kestää tietokoneesta riippuen useita tunteja ja tarvita jopa yli 10 gigatavua RAM-muistia.
  9. Avaa osmand-pikakuvake OsmAndMapCreator-main-kansiossa ja siirrä siellä oleva .obf-tiedosto OsmAndiin (Android\data\net.osmand\files)
  10. Nyt siirrytään karttatyylin luomiseen. Luo uusi nopeusrajoitus.render.xml-tiedosto esimerkiksi työpöydälle. Kirjoita sinne tekstinkäsittelyohjelmalla:
<?xml version="1.0" encoding="utf-8"?>
<renderingStyle name="nopeusrajoitus" depends="default.render.xml" defaultColor="#ffffff" version="1">

Kohdassa depends="default.render.xml" määritellään, mihin olemassaolevaan karttatyyliin uusi karttatyyli pohjautuu. Siihen voi kirjoittaa myös jonkun muun karttatyylin, esim. "mapnik.render.xml". Jatka sitten:

	<renderingAttribute name="tuntematonRajoitus">
		<case attrColorValue="#333333"/>
    	</renderingAttribute>
	<renderingAttribute name="10kmhRajoitus">
		<case attrColorValue="#ff0000"/>
    	</renderingAttribute>
	<renderingAttribute name="20kmhRajoitus">
		<case attrColorValue="#ff8000"/>
	</renderingAttribute>
	<renderingAttribute name="30kmhRajoitus">
		<case attrColorValue="#ffff00"/>
	</renderingAttribute>

Toista tätä niin monta kertaa, että saat tarpeeksi erilaisia rajoituksia. Muista antaa jokaiselle eri nopeusrajoitukselle oma nimi ja väri. Sitten:

	<order>
		<switch objectType="2" area="false">
			<case tag="maxspeed" value="" order="255"/>
		</switch>
	</order>
	<line>
		<switch tag="maxspeed" minzoom="12" cap="BUTT" cap_0="BUTT" color="$tuntematonRajoitus" color_0="#000000" pathEffect="8_8" pathEffect_0="8_8">
			<case tag="maxspeed" value="10" color="$10kmhRajoitus"/>
			<case tag="maxspeed" value="20" color="$20kmhRajoitus"/>
			<case tag="maxspeed" value="30" color="$30kmhRajoitus"/>

Kopioi kolmea viimeistä riviä niin kauan, että jokainen nopeusrajoitus on mainittu. Muista vaihtaa kohtiin value= ja color= aina eri luku. Sen jälkeen:

			<apply>
				<case maxzoom="12" strokeWidth="0.75:0.75" strokeWidth_0="1:1"/>
				<case maxzoom="13" strokeWidth="1.5:1.5" strokeWidth_0="2:2"/>
				<case maxzoom="14" strokeWidth="2.5:2.5" strokeWidth_0="3:3"/>
				<case maxzoom="15" strokeWidth="3:3" strokeWidth_0="3.5:3.5"/>
				<case maxzoom="16" strokeWidth="4.25:4.25" strokeWidth_0="4.75:4.75"/>
				<case maxzoom="17" strokeWidth="6.75:6.75" strokeWidth_0="7.25:7.25"/>
				<case maxzoom="18" strokeWidth="9:9" strokeWidth_0="9.5:9.5"/>
				<case minzoom="19" strokeWidth="10.5:10.5" strokeWidth_0="11:11"/>
			</apply>
		</switch>
	</line>
</renderingStyle>

Tallenna tiedosto.
10. Siirrä tiedosto OsmAndin rendering-kansioon (Android\data\net.osmand\rendering).
11. Käynnistä OsmAnd ja valitse karttatyyliksi Nopeusrajoitus.


1 Like

Tällainen erillislupa on ollut jo olemassa reilun 6 vuoden ajan. Lisäinfoa aiheesta täältä. Varsinainen lupadokumentti löytyy ainakin täältä.

3 Likes

Nuo nettiselaimella katsottavat nopeusrajoituskartat tekee hyvin sitä mitä olin hakemassa. Sen saa myös näyttämään ilman nopeusrajoitusta olevat tiet.

OsmAnd:iin tuli maksettua vuodeksi Live päivitykset ja sen kanssa ehkä ei niin kätevästi istu manuaalisesti (tai skriptin kanssa) muokattu kartta. Valintoja OsmAndissä on reilusti ja kai löytyy paikka omalle paikallisesti kartalle yhtenä karttalähteenä vektorikartan rinnalla (jos tukee useampaa vektorikarttaa yhtä aikaa). Ainakin tuo on helpompi kuin API:n kautta softan toimintaan perehtyminen. Se vaihtoehto kiinnostaa ja voisi kaivella sinnepäin olevia ohjeita. Bugeja se softa sisältää, mutta niiden korjaukseen osallistuminen jää tulevaisuuden suunnitelmiin.