Jos kaikki Suomen järvet multipolygoneiksi muuttuisivat

Kiitos JOSM-vinkeistä, täytyy vilkaista taas JOSMia tarkemmin, näyttää kehittyneen sitten viime näkemän. Löysin mielestäni helpon tavan tehdä homma JOSmilla, eli avasin ensin sen 2-loppuisen relaation, josta siirsin valintaan relaatiossa olevat polut. Sitten avasin 1-loppuisen relaation, jonne siirsin valinnasta nuo polut. Sitten takaisin 2-loppuiseen, josta poistin valitut relaatiot. Aika kätevää leikkaa-liimausta eikä mitään tarvetta zoomailuun tms. virhealttiiseen visuaaliseen juttuun ollut, eli varsin kätevästi toimi bulk-siirtona.

Voihan sen toki opettaa ymmärtämään myös rannoiltaan pätkittyjä multipolygoneja, mutta jotenkin noiden runsassaaristen järvien osalta on vaikea nähdä mitä etua rantaviiva-multipolygoneista olisi verrattuna kehältään yhtenäiseen multipolygoniin. Jollakin toisalla datalla tilanne voi olla tietysti toinen.

Juu, tauon aloitinkin jo, ja nyt olen minäkin korjaillut noita saaria oikeisiin relaatioihin, joka kyllä potlatchilla oli turhan työlästä, tuolla josmin leikkaa-liimaa -systeemillä menisi kätevämmin.

Saattoi löytyä syy ongelmaan Kuopion keskustasta koilliseen olevassa mapnik-kartassa, saaressa http://www.openstreetmap.org/browse/way/57742174 oli pieni järvi, jonka ilmeisesti pitää olla osa relaatiota.

Olisiko paikallaan koota Suomen vesistöjen suositeltavia ja toimivia merkintätapoja wiki-sivulle, sopisiko esim. http://wiki.openstreetmap.org/wiki/Fi:WikiProject_Finland ?

Sinne voisi kirjata esim. saarten merkintätavasta, isojen järvien merkintätavoista ja multipolygoneista jne. Esim. Saimaan saaret on tägätty tyypillisesti place=island, ei natural=land, niin kumpiko nyt sitten on fiksumpi vai pitäisikö olla peräti molemmat? Ja minkä kokoisille place=islet?

Relaation osana olevassa saaressa olevat järvet (natural=water) jotka eivät ole osa relaatiota, näyttävät aiheuttavan ongelmia ainakin mapnikissa ja gpsmidissä - vesi tulvii niin että saari katoaa ja ympäristö muuttuu maa- tai vesialueeksi, kartta mahdollisesti muutenkin menee sekaisin.

Näyttää korjaantuvan, kun laitetaan kaksi relaatiota jossa saaren rajat ovat place=island -relaatiossa outer-roolissa, ja samaan aikaan järvirelaatiossa inner-roolissa, näyttää homma toimivan. Vrt. kartalla kohta http://www.openstreetmap.org/edit?lat=61.6762&lon=27.8755&zoom=13 joka näkyy mapnikissa http://www.openstreetmap.org/?lat=61.6762&lon=27.8755&zoom=13 tätä kirjoittaessani virheellisesti, ilmeisesti siksi koska saaressa olevat järvet eivät olleet osa relaatiota.

Jos nyt hetkeksi unohdetaan tuo “natural=coastline ei järviin” -vaatimus (jolle jossakin taidettiin lukea poikkeus juurikin suurien järvien osalta), niin yksi mahdollinen tapa kunnioittaa sekä natural=water:in kehävaatimusta että “ei rajoja keskellä järvenselkiä -sääntöä” on olemassa:

  • merkataan multipolygon-relaatio natural=water

  • mikäli järven tai saaren ranta ei sovi 2000 pisteeseen eli rannasta ei voi tehdä kehää, merkataan rannanpätkät natural=coastline

  • relaatio kokoaa järven rannat ja saaret niin, että outer-roolissa ovat joko natural=coastline -pätkät tai natural=water -kehä ja inner-roolissa niinikään saarien natural=costline-pätkät tai natural=water -kehä

Tämä tosin tekisi esim. Saimaasta varsin mammuttimaisen relaation, ja tuollainen natural=coastlinen ja natural=water:in jako ei tunnu oikein siistiltä. En tiedä toimisiko tuollainen käytännössä, että tägi pitäisi valita sen mukaan käsitelläänkö polkua itsenäisenä vai relaation osana.

Tällä tietoa taidan olla sitä mieltä että isojen järvien jakaminen eri multipolygoneiksi kuitenkin pienempi paha kuin natural=coastlinen ja natural=waterin sekoittaminen esim. saman järven alueella.

Eilisen päivän OSM-datalla järvet käyttäytyvät nyt oikein hienosti. Saimaalla tosin maa ja vesi vaihtavat paikkaa parilla isolla alueella Lappeenrannan ja Imatran välillä kun vie tiedot tietokantaan osm2pgsql:llä, mutta suurin osa Saimaastakin siirtyy hienosti. Saaret ovat reikinä polygoneissa. Jos niistä haluaa myös omat saaripolygoninsa, niin se toimii ainakin silloin, kun saaren rantaviiva sulkeutuu ja sille on annettu natural=land. Päijänne taitaa olla viimeinen natural=coastline -järvi. Sain senkin esille muuttamalla ensin finland-osm -tiedostosta natural=coatlinen natural=rantaviivaksi, ja muodostamalla sitten Päijänteen rantaviivan pätkistä alueen OpenJUMP:illa. Mutta kai se Päijännekin kannattaisi muuttaa järveksi jo OSM:in puolella.

Kuopio näyttää vielä tulvivan Osmarenderissä, mutta Mapnik on tietääkseni koko ajan näkynyt oikein, ja nyt (ehkäpä umpinaisten natural=water-polygonien ansiosta) OpenCycleMap:kin näyttää melko hyvältä (saaria puuttuu). Voin muuttaa sen muutaman viikon kuluessa, ellei kukaan muu ehdi ensin. Se käy aika näppärästi lataamalla finland.osm.bz2, ottamalla siitä pelkkä natural=coastline ja lataamalla tiedosto JOSMiin. Tällaista Osmosis-komentoa olen käyttänyt:

osmosis --rx finland.osm.bz2 --tf accept-ways natural=coastline --used-node --wx finland-coastline.osm

Pientä häikkää on vielä Mapnikin puolellakin Kuopion keskustan lähellä Saimaassa, kts. outo kolmio zoomilla 14 http://www.openstreetmap.org/?lat=62.8399&lon=27.741&zoom=14

Kolmion vaakasuora viiva näyttäisi olevan karttapalan raja. Virhe on siis palasessa http://c.tile.openstreetmap.org/14/9454/4488.png, jossa näkyy liian vähän vettä. Muut tarkkuudet näyttävät hyviltä, jos unohdetaan se kauneusvirhe, että Mapnik piirtää erillisten natural=water-polygonien väliin viivan. Kolmion viisto viivahan on käsittääkseni tekosiasi.

Kolmion viisto viiva on tosiaan relaation raja. Näyttää siltä, että tässä voisi olla kyse ongelmasta nimenomaan tuollaisen kahden vierekkäisen vesi-relaation aiheuttamana, siis että Mapnik ei tuollaista hahmota kuten kartoittaja. Eli kun tuo palanen on tyhjä relaation rajalta vasemmalta yläpuolelta, epäilen, että Mapnik laskee, että vasen yläkulma on maata, koska rajoittuu veteen. Maa näyttäisi sitten leviävän myös viereiseen vasemmanpuoleiseen ruutuun.

Mitenkäs tässä nyt sitten yleinen näkemys tai jonkinasteinen konsensus menee noiden järvenselkää halkovien relaatioiden jakoviivojen osalta? Ovathan ne tietysti ongelmallisia kuten esim. tästä tapauksesta nähdään. Mutta jos esim. tuossa tapauksessa järven jakaminen keskeltä selkää on paheksuttavaa, ja toisaalta mammuttirelaatioita (koko Saimaa) ei voi myöskään hyväksyä, niin mitä jää jäljelle? Natural=coastline? Mutta siinä kuitenkin näyttäisi jonkinasteinen konsensus asettuneen niin, että natural=coastline ei oikein mielekäs järville ole.

Ajan tässä takaa oikeastaan sitä, että jos jonkinlainen hyväksyntä tuollaiselle järven jakamiselle keskeltä selkää on olemassa, niin olisi varmaan paikallaan tehdä esim. feature requestia tuosta kohdasta Mapnikin toiminnan osalta, että Mapnik osaisi tuon piirtää oikein, ja samalla voisi varmaan tuosta kauneusvirheestä pistää tietoa ja feature requestia, että jatkossa Mapnik piirtäisi yhtenäisen vesialueen. Jos taas on jokin muu vähemmän huono tapa kartoittaa Saimaa joka esim. toimisi Mapnikin kanssa jo nyt, niin ehkä kannattaa käyttää sitä mieluummin kuin ehdottaa muutoksia Mapnikiin.

Minun mielestäni Saimaan jakaminen erilliseksi multipolygoneiksi on vähiten huono esillä olleista, ja asiasta kannattaisi pistää feature requestiä tai bugiraporttia Mapnikin kehittäjille, että tuokin kohta alkaisi näkyä oikein.

Muoks: Multipolygonien yhdistäminen kartta renderöidessä voi olla aika työläs homma ohjelmoida ja raskas prosessoida ilman, että datassa on joku tieto siitä että tällä multipolygonilla on naapuri joka pitäisi esittää saumattomasti tämän kanssa. Tein ehdotuksen tuollaisen tiedon merkkaamiseksi, kts. http://wiki.openstreetmap.org/wiki/Talk:Relation:multipolygon#Issues_rendering_adjacent_multipolygon_relations_in_large_lakes

Olen samaa mieltä.

Ei hassumpi ajatus tuo outer_glue-jäsen. Toinen vaihtoehto voisi olla määritellä relaatio multipolygon-relaatioista, sanottakoon sitä vaikkapa vesistö- tai valuma-alue-relaatioksi. Siihen voisi periaatteessa ottaa mukaan kaikki toisiinsa liittyvät joenuomat, joet, purot ja ojat. OSM ottaisi taas askelen kohti kaiken kattavaa paikkatietojärjestelmää. :slight_smile:

Ei nyt ihan liity varsinaiseen aiheeseen. Huomasin, että Päijänteelle on annettu name:sv=Päjänne. Suositusten mukaan Päijänteen ruotsinkielistä (historiallista) nimeä ei tule käyttää. Rantaviivaa lätäköllä on vain yli 2200 km, joten työsarkaa tuon name:sv -tagin poistamiseen riittää.

Toinen huomio liittyy Viitasaaren keskustan tuntumassa sijaitevaan Haapasaareen (Viitasaaren kirkko löytyy tältä Keiteleen saarelta). Käytiin jokin aika sitten kirkolla ja huomasin että navigaattorin OSM:n mukaan ajeltiin Keiteleessä, eli saarella on tapahtunut vedenpaisumus. Latasin juuri uusimmaan version tiedostosta gmapsupp.img ja edelleen saari on veden alla.

JOSMilla se ei ole temppu eikä mikään. Voi ottaa Osmosis-ohjelmalla Geofabrikin karttapalasta kaikki viivat, joilla on name:sv=Päjänne, ladata ne JOSMiin, poistaa name:sv:n ja lähettää muutokset. Paljon isompi temppu on tehdä Päijänteestä multipolygon-relaatioita. Siinäkin voi lähteä liikkeelle natural=coastline-viivoista, mutta olen lisäksi ladannut erilliseen karttatasoon alueen kaikki kohteet, jota sitten olen muokannut.

Käyttäjä must1n teki saaresta Keitele-nimisen järven (ei sentään rikkonut multipolygon-relaatiota). Muutin sen takaisin saareksi.

“Minun mielestäni Saimaan jakaminen erilliseksi multipolygoneiksi on vähiten huono esillä olleista, ja asiasta kannattaisi pistää feature requestiä tai bugiraporttia Mapnikin kehittäjille, että tuokin kohta alkaisi näkyä oikein.”

“Olen samaa mieltä.”

Hmm, liekö tässä välissä tullut Mapnikkiin jotain korjauksia, nimittäin tuo kohta http://www.openstreetmap.org/?lat=62.8399&lon=27.741&zoom=14 näyttää tätä nykyä näkyvän ihan oikein, vaikka OSM:ssä menee edelleen raja keskeltä järvenselkää.

Mitenkäs tuon Päijänteen relaatioiksi muuttamisen kanssa? Kannatan ajatusta.

Tulipa sellainenkin mieleen, että josko vaikka muuttaisi natural=water -multipolygoniksi (tai useammaksi) myös tuon Suomen länsi- ja eteläpuolella olevan murtovesialtaan, jota myös Itämereksi kutsutaan - kuinkahan paljon enemmän monimutkaisuutta tuossa loppujen lopuksi on kuin esim. Saimaassa saarineen, saarissa olevine järvineen ym?

Nyt alkaa olla myös GpsMidissä (http://gpsmid.sourceforge.net/ ) toimiva multipolygon-tuki (lienee huomisessa yöllisessä snapshotissa, http://gpsmid.sourceforge.net/nightlies/ ) ja mukava “kotkansilmänäkymä”, alkava järvet näkyä mallikkaasti. Paitsi päijänne, natural=coastline -vesialueiden värityksen tukea ei toistaiseksi ole.

Äkkisältään katsoen Saimaassa on 13 tuhatta saarta vs. jo Turun saaristossa “n 20 tuhatta” + Ahvenanmaa 6700; sitä kun alkaa palotella vajaan 2000 inner-jäsenen osiksi niin hulluksihan se menee… varsinkaan kun kaikkia ei varmaankaan näy landsatissa tms. joten pitäisi jättää tilaa myöhemmin löytyville minisaarille.

Suurissa järvissä oli edes jotenkin luontevasti rajautuvia alueita.

Noilla luvuilla Turun saaristo + Ahvenanmaa olisivat vain hiukan reilu tuplasti Saimaahan verrattuna, eli ei nyt kuitenkaan niin oleellisesti enemmän. Muualla merialueella saaria onkin sitten oleellisesti vähemmän kuin Turun saaristossa ja Ahvenanmaalla. Jos Itämerta alkaa relaatioksi pilkkoa, niin järkevää lienee aloittaa muualta kuin noista mutkikkaimmista paikoista, ja ehkä jättää ne suosiolla toistaiseksi tekemättä.

No, enpä tiedä, olisiko tuosta monimutkaisuutta vastaavaa hyötyä, tulipahan vain mieleen, että jos esim. muutaman kilometrin rannikosta tekisi relaatioiksi niin näkyisivät ainakin rannikot oikein myös niissä ohjelmissa joissa ei rannikkoviivan piirtotukea ole.

Itämerellä näkyy kulkevan ainakin joitakin hallinnollisia rajoja, mm. aluevesiraja ja muistaakseni joku seutukuntarajakin.

Päijännekin on nyt muuttunut multipolygoniksi (relaatio 1239779). Toivottavasti se ei riko mitään. Eilen mkgmap valitti jotain versiosta 2 mutta JOSMin Validator ei. Muutamalle saarelle oli jäänyt natural=coastline, jotka poistin. Jollekin saarelle, jolta natural=coastline oli poistettu, oli vielä unohtunut note, jossa uhkailtiin coastlinen poistajaa. Päivitän karttani vasta, kun olen korjannut tai selvittänyt asian.

Kuopiossa näköjään pääsee jo kuivin jaloin kaikilla SlippyMap-tasoilla (Mapnik, Osmarender, OpenCycleMap). Toivottavasti tuo koko Päijänteen multipolygon ei riko mitään.

Yhä mkgmap valittaa, ja karttapalojen rajalla vähän Kuhmoisista itään tulvii hieman. Kokeilen siirtää karttapalojen rajaa hieman lännemmäksi, niin että koko Päijänne mahtuu samaan palaseen.

Katsoin vielä, paljonko natural=coastline-viivoja on jäljellä:

osmosis --rb finland.osm.pbf \
--tf accept-ways natural=coastline \
--tf reject-relations --used-node \
--wx finland-coastline.osm
josm finland-coastline.osm

Löytyi muutama hassu saari sisämaasta, juurikin Päijänteen alueelta. Lisäsin ne relaatioon. Muuten nyt näyttää pikavilkaisulla siltä, että ainoastaan Itämeren rannat ja saaret ovat natural=coastline, niin kuin niiden kannattanee ollakin.

Rajan siirtäminen auttoi. Karttani on nyt päivitetty.

Pohjois-Päijänteellä on ongelmia (Osmarender, z=12+). Liittyyköhän nuo tuohon vaiko ei?

Todennäköisesti se liittyy siihen, ettei Osmarender täysin ymmärrä karttapalan rajat ylittäviä multipolygoneja (monimonikulmioita?), sillä mkgmap ei ole viime viestini jälkeen valitellut mitään Päijänteestä. Minä jätin Päijänteen natural=coastline:ksi (ainoana Suomen järvistä), koska en löytänyt siitä kovin luontevia katkaisukohtia ja käyttäjä Daeron äänekkäästi vastusti alueiden mielivaltaista pilkkomista. En aio myöskään pilkkoa tuota Päijänne-relaatiota. Joku muu saa sen tehdä, jos Osmarenderiä ei voi korjata. mkgmap ja splitter osaavat käsitellä karttapalat ylittävät multipolygon-relaatiot hyvin; ehkä sieltä voisi ottaa mallia.