Reitittävä pyöräilykartta Garmineihin

Kokeilin ladata ja asentaa Suomen aineiston täältä:
http://openmtbmap.org/
Hauska tuttavuus. Asentaminen ensinkin onnistui ilman mitään ongelmia. Purin vain zipin hakemistoon, ajoin install.bat:in ja sen jälkeen kartan pystyikin avaamaan MapSourceen ja lähettämään sieltä edelleen eTrex Vistalle. Kartassa on yksityiskohtia ja väriä vaikka kuinka paljon, kaikki postilaatikot ja valvontakamerat ja suojatiet ovat kohteina kartalla, ravintoloista ja pubeista puhumattakaan. Ja se reitityskin näyttää toimivan. Helsingin keskustassa kartta on ehkä liiankin yksityiskohtainen jo pyöräilyvauhdissa käytettäväksi mutta kaupunkikävelijälle todella hauska. Mahtaakohan olla vaikeaa suomentaa tuollaista karttaa ja kenties säätää tyylejä vähän hillitymmiksi?

Oletkos kokeillut tätä kotimaista vaihtoehtoa:
http://www.polkupyoraily.net/osm/
Käytän sitä Garmin Edge 705:ssäni ja olen lähettänyt joitain parannuksia mkgmap-ohjelmaan. Päivitän tuota karttaa säännöllisen epäsäännöllisesti parin viikon välein.

TYP-tiedostoihin (joilla voi määritellä omia kuvakkeita ja viivanpiirtotyylejä) en ole vielä koskenut, mutta sekin on suunnitteilla. Yritän kuitenkin jotain hillittyä ja jotakin, joka toimisi myös moottoriliikenteessä. Jotkut omatekoiset pyöräilykartathan käyttävät valmiiksi määriteltyjä symboleita väärin: esimerkiksi pyörävuokraamot ovatkin leikisti autovuokraamoita ja pyörätiet moottoriteitä.

Nyt kun pyöräily tuli puheeksi, niin tuolla polkupyöräwikissä olisi suomalaisten pyöräkauppojen osoitteita ja sijainteja kartalla ja KML-muodossa. Osaisikohan joku lisätä ne OSM-tietokantaan niin, ettei tulisi päällekkäisyyksiä samannimisten tai samassa paikassa sijaitsevien kauppojen kanssa?

Kokeilin uudestaan polkupyoraily.net:in karttaa. Molemmilla on minun mielestäni omia etujaan:

  • Polkupyöraily.net:in “gmapsupp.img” -tiedoston avulla asentaminen Garminin muistikortille on vielä helpompaa kuin Openmtbmap:in systeemillä, jossa asentaminen tehdään Garminin Mapsource-ohjelman tai sitten QLandkarte-ohjelman kautta.
  • Toisaalta jos aikoo suunnitella reittejä etukäteen, niin se on vähän helpompi tehdä tietokoneen ruudulla.
  • Openmtbmap yrittää reitittää pelkkiä pyöräteitä pitkin, mikä on pyöräilykartalle periaatteessa hyvä ominaisuus.
  • Reititys ei kuitenkaan tunnu toimivan kovin järkevästi ainakaan omalla työmatkareitilläni Helsingissä.
  • Suomalainen vaihtoehto vaikuttaa reitittävän kaupungissakin ihan hienosti, mutta autoteitä pitkin.
  • Openmtb:ssä on laajempi valikoima symboleita, ja ne ovat hienostuneemman näköisiä.
  • Symbolit ovat niin hienostuneita, että niitä ei tahdo erottaa eTrex Vistan näytöltä.
  • Polkupyoraily.net:in versiota on helpompi lukea ulkona auringonpaisteessa. Ulkonäkö on makuasia, mutta ehkä pyöräilykartassa olisi hyvä saada pyörätiet ja miksei jalankulkutietkin eroamaan autoteistä vaikka värien avulla vähän nykyistä paremmin. Rakennuksille näissä kahdessa on ääripäät käytössä: polkupyorailyssa ne ovat valkoisia eivätkö eroa taustasta ollenkaan, ja mtbmap:ssa ne ovat melkoisen mustia, eikä keskikaupungilla sen takia kartalta erota juuri mitään muuta kuin rakennuksia. Ihan hienoja karttoja molemmat, ja hyvä, että on vaihtoehtoja. Seuraava parannus olisi erottaa itse karttadata omaksi osakseen, ja tehdä sen muotoilemiseen näyttämistä varten läjä muotoilutiedostoja, joista käyttäjä voisi valita mieleisen tarpeensa mukaan.

Xml:n ja KML:n käsittely on minulle vierasta, mutta tein koepisteen JOSM:lla ja ilmeisesti tuossa alla olevan näköinen tiedosto pitäisi saada aikaan. Joka pyöräkaupasta tulisi erikseen oma pätkänsä <node:n ja :n väliin. Vaikkei osaisi ohjelmoida, niin eiköhän nuo tunnissa tai parissa kirjoittaisi vaikka käsin osm-tiedostoksi. Sitten pitäisi lukea tulos JOSM:iin, lukea nykytilanne omalle tasolleen ja kauppa kerrallaan katsoa, joko se on kartalla. Siinä menisi varmaankin toinen tunti.

<?xml version='1.0' encoding='UTF-8'?>

Koska vierastan Windowsia, en vielä ole kokeillut suunnitella reittejä tietokoneella. Se olisi kyllä järkevää, sillä pitkillä matkoilla (pyöräilin viime sunnuntaina 93 km edestakaisin) Garmin Edge 705 tuntuu huijaavan ja reitittävän loppumatkan autoteitä pitkin. Ensimmäiset toistakymmentä kilometriä menevät hyvin pyöräteitä pitkin. Käsittääkseni mkgmapilla tehtyjä karttoja pystyy lataamaan myös Mapsourceen hieman kikkailemalla. Mapsourcen pitäisi toimia myös Winessä. QLandkarte taitaa toimia myös Linuxissa. Vinkkejä otetaan vastaan. :slight_smile:

Olen käyttänyt mkgmapin oletustyyliä. Enintään 15 kilometrin matkoilla Garmin Edge 705:n neuvomat reitit ovat olleet kutakuinkin järkeviä, pyöräteitä pitkin. Joissakin laitteissa ei ilmeisesti ole erillistä pyöräilyreititys-tilaa, ja fillarifoorumi.fi:stä lukemani mukaan jollakin kaupallisella kartalla ei ilmeisesti ole pyöräteiden reititystietoja, jolloin Edge 705:kin neuvoo ajelemaan autoteitä pitkin.

Tammikuussa, kun hankin Garmin Edge 705:n ja aloitin tämän harrastuksen, kokeilin kilpailevia karttoja. Silloin reititys ei toiminut vielä missään. Joku valitti, että nuo ”joulukuusikartat” myös piirtyvät hitaasti.

Meillä päin ei juuri rakennuksia ole (kartalla siis), mutta olen huomannut saman: valkoinen ei erotu keltaiselta taustalta. Olen myös ajatellut erotella pyörätiet ja jalkakäytävät (päällystetyt ja päällystämättömät) eri viivatyyleillä. Reititystä vartenhan ei vielä osata välittää tietoa päällysteestä.

Muotoilua (kuten noita edellä mainittuja värejä) voi määritellä TYP-tiedostoilla. Siihen minun on tarkoitus tutustua lähiaikoina. Pitää vain valita sellaiset symbolien koodit, jotka tarkoittavat jotain järkevää laitteen oletustyylissäkin.

Ei ihan: pitäisi olla addr:street, addr:city, addr:postcode, jne.

[Edit: polkupyoraily.netin ylläpitäjän vastattua]

Mieluummin sanoisin source=‘Lahden polkupyörähuolto – Polkupyöräwiki’. Jos vaikka joutuu muuttamaan koordinaatteja tai muita tietoja, niin näkisi suoraan, mistä tiedot ovat peräisin ja voisi korjata ne sinnekin. Wikiähän voi kuka tahansa korjata.

KML-tiedostossa ei ollut osoitetietoja lainkaan, vaikka itse pyöräilywikissä onkin. Nyt on. Minulla ei ole muuta tekemistä polkupyoraily.netin kanssa kuin se, että jaan tekemääni Garmin-karttaa siellä.

Hienoa, että ilmoittauduit vapaaehtoiseksi. Voisi olla hyvä korjata mahdolliset virheet (lähinnä nimien kirjoitusvirheet ja koordinaattien epätarkkuudet) myös polkupyoraily.netissä, jotta wiki ja OSM vastaisivat toisiaan. Sillä tavalla tietoja olisi helpompi päivittää taas joskus wikin laajennuttua.

Yritän lähipäivinä vääntää Perl-skriptin, joka muuttaa polkupyoraily.netin KML-tiedoston OSM-muotoon. Nythän on sopivasti sateistakin. :slight_smile:

Ei ollut ihan tarpeeksi sateista, mutta täältä tulee:

#!/usr/bin/perl
use strict;

my $id = 0;

sub node
{
    my($lon,$lat,$name,$wiki,$desc) = @_;
    my %desc;

    $desc =~ s|<b>\s*(.*?)\s*</b>:\s*(.*?)\s*<br\s*/>|$desc{$1}=$2|goes;

    print "  <node id='", --$id, "' lat='$lat' lon='$lon'>\n";
    print "    <tag k='shop' v='bicycle' />\n";
    print "    <tag k='name' v='$name' />\n";

    if (defined($_ = $desc{Katuosoite})) {
    my ($str, $num) = split /\s+/, $_, 2;
    $str = ucfirst(lc($str)) if $str =~ /^[[:upper:]]+$/;
    print "    <tag k='addr:street' v='$str' />\n";
    print "    <tag k='addr:housenumber' v='$num' />\n" if defined $num;
    }

    if (defined($_ = $desc{Postinumero})) {
    my ($zip, $city) = split /\s+/, $_, 2;
    $city = ucfirst(lc($city)) if $city =~ /^[[:upper:]]+$/;
    print "    <tag k='addr:postcode' v='$zip' />\n";
    print "    <tag k='addr:city' v='$city' />\n";
    }

    print "    <tag k='addr:country' v='FI' />\n";

    if (defined($_ = $desc{Internet})) {
    print "    <tag k='url' v='$1' />\n" if /href="([^\"]*)"/;
    }

    if (defined($_ = $desc{Auki})) {
    tr /./:/;
    s/\s+-\s+/-/g;
    if (/^ark:\s*(ma\s*-pe\s*)?([0-9-:]*)\s+la:\s*([0-9-:]*)/i) {
        my $open;
        my ($ark, $la) = ($2, $3);
        $ark =~ s|^ma\s*-pe\s*||gi;
        if ($ark ne '') {
        $open = "Mo-Fr $ark";
        $open .= ";Sa $la" if ($la ne '');
        } elsif ($la ne '') {
        $open = "Sa $la";
        } else {
        undef $open;
        }

        print "    <tag k='opening_hours' v='$open' />\n" if defined $open;
    }
    }

    if (defined($_ = $desc{Puhelin})) {
    s/\s+-\s+/-/g;
    my(@phones) = map {
        if (/^\(0([0-9]+)\)([0-9 -]+)/ ||
        /^0([^0][0-9]*)([0-9 -]+)/) {
        my($area, $num) = ($1, $2);
        $num =~ tr/ -//d;
        "+358 $area $num";
        } else {
        undef;
        }
    }
    split /[\/,;]/;
    print "    <tag k='phone' v='", join(";", @phones), "' />\n";
    }

    print "    <tag k='source' v='http://www.polkupyoraily.net$wiki' />\n";
    print "  </node>\n";
}

undef $/;
$_=<>;

print "<?xml version='1.0' encoding='UTF-8'?>\n<osm version='0.6'>\n";

s|<Placemark>\s*
<name>(.*?)</name>
(\s*<Style>.*?</Style>)?\s*
<Point><coordinates>([0-9.]+),\s*([0-9.]+),\s*0</coordinates></Point>\s*
<description><!\[CDATA\[<a\s*
href="(/wiki/.*?)"\s*
title="(.*?)">(.*?)</a>
(\s*<br\s*/>)*
(.*?)
(\s*<br\s*/>)*\s*
\]\]></description>\s*</Placemark>|node $3,$4,$1,$5,$9|goesx;

print "</osm>\n";

Ei ihan kauneinta mahdollista Perliä, mutta kyllä se asiansa ajaa. Väänsin skriptiä pari tuntia. 70 kaupasta 68 on Suomessa, ja niistä muutama on jo kartalla tarkemmin.