Jos kaikki Suomen järvet multipolygoneiksi muuttuisivat

Tänään tekemälläni Garmin-kartalla on ensi kertaa lähes toimivat vesialueet. Karjalassa vielä tulvii, mutta yritän saada sen korjatuksi tavalla tai toisella.

Olen muutellut jäljellä olevia natural=coastline-alueita multipolygon-relaatioiksi. Päijänteen ja Pielisen jätän vielä rauhaan, mutta tarkoitukseni on muuttaa kaikki niitä pienemmät järvet. Rantaviivat olen ladannut JOSMiin seuraavasti:


wget http://download.geofabrik.de/osm/europe/finland.osm.bz2
osmosis --rx finland.osm.bz2 --tf accept-ways natural=coastline --used-node --wx finland-coastline.osm
josm finland-coastline.osm

Sitten olen avannut JOSMiin uusia karttatasoja alueiden lataamista ja muutosten tekemistä varten. Seuraavan päivän finland-coastline.osm on aina ollut hieman edellistä pienempi.

Nyt Garmin-kartallani näkyy Suomenlahden ja Perämeren ranta, eikä Kaakkois-Suomikaan enää tulvi. Päijänne ja Pielinen sekä jotkin länsirannikon pikkulätäköt näkyvät kauempaa kuin muut järvet, koska ne on merkitty merialueiksi (natural=coastline).

Aion lähiaikoina muuttaa länsirannikon natural=coastline-järvet natural=water:eiksi, ellei kukaan muu ehdi ensin. (Ehkä joku osaa tempun, jolla voi valita pelkät natural=coastline-järvet, ei siis saaria eikä avoimia rantaviivoja.) Sitä ennen teen työkalun, jolla pystyn JOSMissa valitsemaan länsirannikon rantaviivan.

Voin muuttaa myös Päijänteen ja Pielisen multipolygoneiksi, jos enemmistö on sillä kannalla.

Mielellään ei, ja parempi olisi jos kaikki nuo isot järvet muutettaisiin takaisin coastlineksi. Ei nimittäin ole mitään järkeä pilkkoa isoa järveä mielivaltaisesti osiin, kuten olet nyt tehnyt, vaan näissä tapauksissa coastline on ainoa järkevä tapa merkitä kyseinen järvi. Eihän järvissä mitään rajoja kulje keskeltä selkiä, vaan kyseessä on yksi yhtenäinen vesialue joka tulisi sellaiseksi merkitä vakiintuneiden käytäntöjen mukaan.

Joissain järvissä (kuten Saimaa) on kyllä tasoeroja, jotka muodostavat “rajoja”, mutta näissäkin tapauksessa virtapaikat tulisi merkitä esimerkiski riverbankeiksi. Näin muodostuu pienempiä alueita, joiden kohdalla voi erikseen katsoa onko järkevää tehdä kyseinen alue coastlinenä vai multipolygonina.

Myöskään siinä ei ole järkeä että isot järvet pistettäisiin yhdellä relaatiolla kuten Inarinjärvi nyt on, sen relaatiossa kun on yli 700 jäsentä, ja jos sitä yrittää esimerkiksi JOSM:lla ladata, kuluu siihen kymmeniä minuutteja. Nuo isot relaatiot myös pakottavat käyttämään wireframe-tilaa koska rendauksessa kestäisi muuten niin kauan, että datan selauksesta, editoimisesta puhumattakaan, ei tule yhtään mitään.

Coastlinenä merkityt vesialueet pystytään ohjelmallisesti kyllä yhdistämään polygoneiksi, eihän niitä muuten pystyttäisi edes renderöimään! Katsokaa esimerkkiä vaikka coastcheck-työkalusta jolla luodaan Mapnik-tason käyttämät polygonit coastlineistä. Myös osmarendererin close-areas.pl:stä ja multipolygonien rendauksesta sekä osm2pgsql:n multipolygonien yhdistelystä löytyy vinkkejä mahdollisiin toteutuksiin.

Coastcheck on myös jonkinverran vikasietoinen, se osaa yhdistää rantaviivan jos siinä on pieni katkos jolloin ei tule sitä ongelmaa että pieni epäjatkuvuus rikkoo koko järven (tai jopa meren!) rendauksen. Se myös pilkkoo automaattisesti luodut polygonit ennalta määritellyn kokoisiksi paloiksi, joka helpottaa niiden käyttöä rendauksessa ja isompien virheiden kohdalle sattuessa ei riko koko vesialuetta, vaan pelkästään tämän yhden palan alueen.

Myöskin tuo extractin datan puutteellisuus voidaan ottaa huomioon: Työkaluun tulee vain lisätä toiminto jossa sille syötetään alueen bbox, jolloin se voi ottaa huomioon miten rajalle päättyvä coastline tulisi jatkaa jotta muodostuisi suljettuja alueita. Tämä on käytännössä täysin sama asia mitä osmarendererin close-areas.pl jo nyt tekee, bbox on siinä tapauksessa vain yksi z12 -tile.

Mikään ei myöskään pakota käyttämään Geofabrikin extractia (joka muuten ei edes sisällä koko Suomen dataa, erittäin epätarkan bounding polygonin takia!), vaan on myös muita extracteja, ja sellaisen voi myös itse tehdä planet.osm:sta (tai esimerkiski jostain valmiista Euroopan extractista).

Käytän JOSMia muokkaamiseen. Suurten relaatioiden lataaminen voi kestää minuutteja, mutta ei kai sentään kymmeniä? Joitakin viikkoja sitten JOSM piirsi suuret multipolygonit erittäin hitaasti (näyttö jäi jumiin ehkä minuutiksi), mutta vika on sittemmin korjattu.

Miksi suurten alueiden pilkkominen hallittavamman kokoisiin osiin on mielestäsi ongelmallista? Onhan teidenkin pilkkominen sallittua ja jopa suotavaa. Miksi alueet tekisivät poikkeuksen? Monien pitkien jokien waterway=riverbank on piirretty useana vierekkäisenä alueena, ja osassa on saaria multipolygon-relaatiossa.

Päijänteen vesistön natural=coastline sisältää muuten joitakin pikkujärviä. Erotin siitä Arrajärven ja pätkän Kymijokea muutama päivä sitten.

Tällä välin mkgmapin multipolygon-koodi on kehittynyt sen verran, että generate-sea toimii. Geofabrikin karttaleikkeen puutteet korjasin poistamalla siitä osittain latautuneet saaret ja siirtämällä rantaviivan laitimmaiset latautuneet pisteet kartta-alueen rajoille. Ruotsin rajalta Itämeri jatkuu Garmin-kartallani siis suoraan länteen, tukevasti kuivalle maalle saakka, ja Venäjän rajalta Suomenlahti jatkuu suoraan etelään. Karttani kannalta on nyt siis lähes yhdentekevää, kuinka suuret järvet on merkitty. Kuitenkin wikin mukaan natural=coastline on tarkoitettu vain merialueille, eikä järvien tai lahtien nimiä ole helppo istuttaa coastlineihin.

Jos Mapnikin meren piirtämistä käytetään esimerkkinä, niin melkoinen vippaskonsti sekin on. Siinähän luodaan maapolygonit käyttämällä rajoina toisaalta coastline-viivoja, toisaalta kartan päälle laitetun kuvitteellisen hilan viivoja. Mapnik-kartassa on alimmaisena pohjaväri (merensininen), sen päällä coastlinesta kehitetyt maapolygonit (vaaleat), ja sitten niiden päällä kaikki muut tasot. Tästä syystä coastline-systeemillä tehtyjä järviä ei saa valmiina mistään jakeluista. Mapnikin maapolygoneista järvet voi toki muodostaa ottamalla kaikki järven rantaviivalle sattuvat maapolygonit ja erottamalla jollain viekkaalla systeemillä niiden sisään jäävä, ei maata oleva, alue järveksi. Olen kyllä lukenut, että joku on keikauttanut maapolygonityökalun ympäri ja tehnyt siitä vesipolygonityökalun. Ylen hankalaa joka tapauksessa. Järvien merkitseminen coastline:lla on silkkaa tagien laittamista renderöintiä ja muokkausohjelmia varten, mutta ehkä sitä on pakko käyttää, jos muut, kenties periaatteen kannalta paremmat systeemit hankaloittavat muokkaamista liikaa. Jonkun kyllä pitäisi tehdä Mapnikin maapolygoneja vastaava ulkoinen kartta-aineisto Suomen järvistä, jossa olisi ihan tavallisina GIS-polygoneina kaikki vedet, olivatpa ne sitten emo-OSM:ssa merkitty tagilla coastline:ksi, water:ksi tai riverbankiksi. OSM kun ei taida koskaan taipua käyttämään sisäisesti erityisiä aluekohteita tai karttatasoja.

Kuinkahan se mahtaisi onnistua? Kun Osmosis katkaisee viivan, se ei ainakaan oletusarvoisesti lisää leikkauskohtaan pistettä. Siksi leikkauskohta on hyvin epämääräinen. Mistään ei voi jälkikäteen tietää, kuuluisiko leikkausviivan lähellä päättyvän viivan jatkua leikkausviivalle saakka ja mihin pisteeseen siellä.

Nyt Geofabrikin finland.osm.bz2 sisältää kaikki rajat eikä sisällä osittaisia natural=coastline-saaria eikä multipolygoneja. Jotkut saarettomat järvet vielä katkeavat hieman Suomen nykyisen itärajan itäpuolella, mutta johonkin se raja on pakko vetää. Muutaman muokkauskierroksen tämä tietysti vaati.

Sitten maaliskuun on Leppävesi rantaviivoineen kadonnut GpsMid -kartalta.

Syynä on ilmeisesti Leppäveden muuttaminen multipolygon-relaatioksi http://www.openstreetmap.org/browse/relation/562649

Raportoin katoamisen gpsmid-bugina (kts. http://sourceforge.net/tracker/?func=detail&aid=2995144&group_id=192084&atid=939974 ), mutta kun vilkuilen OSM-wikiä (esim. http://wiki.openstreetmap.org/wiki/Multipolygon ) niin alkaakin näyttää siltä, että vika on ehkä kuitenkin Leppäveden koodauksessa OSM:ään eikä gpsmidissä. Nimittäin eikös “multipolygon” ole suomennettuna “moni-monikulmio” eli useammasta monikulmiosta koostuva relaatio? (vrt. http://en.wikipedia.org/wiki/Polygon ) Leppäveden nykyisessä koodauksessa kuitenkin näyttää relaation osana olevan järven rantaviivan pätkiä. Rantaviivan pätkä (natural=way, esim. http://www.openstreetmap.org/browse/way/55740152 ) ei kaiketi ole polygon eli monikulmio, ja siten ei soveltune osaksi multipolygon -relaatiota?

Vai ymmärränkö nyt jotain väärin, ja pitäisikö ei-suljettujen rantaviivan pätkien kuitenkin olla sallittuja osana multipolygon-relaatiota? Jos ymmärrän oikein, tässä voi tietysti tulla API 0.6:n myötä ongelma, että yli 2000 pisteen järvien rantoja ei voi piirtää yhtenä alueena. Mutta kaipa nuo sitten voisi piirtää useammasta suljetusta monikulmioista koostuvina vesialueina, eikös tämä ikäänkuin ole multipolygon -relaation idea ainakin nimen perusteella pääteltynä?

Muoks: Toisin kuin natural=water -tagin kuvaussivu, Multipolygon sallii useammasta erillisestä polunpätkästä (eli rantaviivanpätkästä) koostuvan renkaan, kts. myöhemmät viestit.

Minulla ei oikeasta toimintatavasta ole järin vahvaa mielipidettä suuntaan eikä toiseen ja asia on uusi minulle, mutta jotain tuntuu olevan pielessä jossain, kun esim. Kuopion tori tulvii niin Osmarenderissä kuin GpsMidissä, ja tulvimista ilmeisesti esiintyy myös Garminissa ajoittain. Ymmärtääkseni järvien pilkkominen monikulmioiksi - jotka yhdistyvät toisiin keskellä selkää kulkevien mielivaltaisten rajojen kautta - saattaa auttaa tässä esimerkiksi sillä tavalla, että pienempiä alueita kerrallaan käsittelevässä ohjelmassa homma alkaa toimia. Eihän niiden karttadatassa olevien mielivaltaisten rajojen tarvitse millään tavalla näkyä käyttäjälle piirretyissä kartoissa, paitsi tietysti muokkaustilassa.

Toisaalta myös on niin, että tähän mennessä eteeni tulleen tiedon perusteella äkkipäätä ajatellen API 0.6:n myötä tehty päätös rajata muokkaukset 2000 pisteeseen ja linjaus, että natural=coastline:a ei käytetä järviin (esim.http://wiki.openstreetmap.org/wiki/Tag:natural%3Dcoastline ) ovat ratkaisseet asian niin, että isot järvet pitää jakaa keskeltä selkää mielivaltaisesti, olettaen että multipolygin pitää koostua nimensä mukaisesti polygoneista. Mutta voi tietysti olla niin, että minulta on jäänyt jotain huomaamatta asiassa ja asia onkin toisin.

Niin, vaihtoehto on sitten, että Keep Right on ihan oikeassa, ja natural=water tulee aina olla suljettu. Tähän nähdäkseni viittaa esim. wiki-sivu http://wiki.openstreetmap.org/wiki/Tag:natural%3Dwater :

“This tag can be placed on an area (i.e. a closed way) for a simple lake,”

ja

"1. Draw or select a closed way around the perimeter of the lake. "

Ensimmäisen lainauksen jatko jättää hiukan tulkinnan varaa, kun jatkuu:

"This tag can be placed on an area (i.e. a closed way) for a simple lake, or it can be placed on a Relation:multipolygon if the lake either contains islands or has a large coastline (but not big enough for natural=coastline). "

  • tämän perusteella voisi arvella, että myös rantaviivan pätkä voi olla osa relaatiota, mutta tuon toisen lainauksen (otsikon “Creating islands in lakes”) kohta:

"1. Draw or select the way around the perimeter of the lake. "

jonka “the way” kyllä näyttää selvästi viittaavan siihen, että järven rannan pitää kiertää koko järvi ympäri.

Vielä selvemmin ja ymmärtääkseni täysin yksiselitteisesti asia on sanottu wiki-sivulla http://wiki.openstreetmap.org/wiki/Relation:multipolygon :

“In short, a multipolygon relation can have any number of ways in the role “outer” (the outline) and any number of ways in the role “inner” (the holes), and these must somehow form valid rings to build a multipolygon from.”

… eli multipolygon-relaation osien pitää olla kehiä.

Tämän perusteella katsoisin, että järvenrannat tulee muodostaa kehiksi, ja mikäli 2000 pisteen raja (API 0.6) kehässä tulee vastaan, pitää käyttää multipolygon -relaatioita. Ja Keep Right kaiketi toimii kuten pitää.

Toisaalta wiki-sivu http://wiki.openstreetmap.org/wiki/Tag:natural%3Dwater sanoo, että ehkäpä 1000 pisteen rajan ylittäville järville kuitenkin voisi käyttää natural=coastline.

Muokkasin Saimaa-relaation 405960 (http://www.openstreetmap.org/browse/relation/405960 ) sellaiseksi kuin ymmärtääkseni relaatioiden pitäisi olla, eli polygoneista koostuvaksi. Näyttäisi onnistuvan potlatchilla - pientä bugitusta ilmeni jossain kohdassa ja rantaviivaa katosi, mutta näytti siltä että sain korjattua.

Nyt en kyllä ihan hahmota, miksi OSM:ssä on useampia Saimaa -multipolygon -relaatioita, esim. Kuopiosta luoteeseen relaatio 405925. No, aika paljon inner-tavaraa (ilm. saaria) on esim. tuossa 405925 -relaatiossa, ehkä tuossa tulee joku raja vastaan kuinka suuria relaatioita voi tai kannattaa olla. Mutta tulee mieleen, että jos joku navigaatio-ohjelma hakee relaatioiden nimistä, miten se mahtaa näyttää löytämänsä useamman Saimaa -relaation.

Määrittelin tosiaan Saimaan monena erillisenä multipolygon-relaationa, koska koko järven saarineen käsittävän relaation lataaminen voisi kestää kymmeniä minuutteja. Se saattoi olla virhe, sillä aika ajoin joku on lisännyt saaria väärään relaatioon. Mutta ei relaation jakaminen osiin ole aivan tavatonta. Bussireittirelaatioissa näyttäisi olevan suositeltava käytäntö tehdä kummastakin suunnasta oma relaatio. Esimerkiksi HSL-linjoilla 731 ja 742 on mahdollista istua kyydissä koko kierros Helsingistä Helsinkiin, mutta jaoin ne silti kahtia käyttäjän Daeron ehdotuksesta.

Tänään nimesin kokeeksi Päijänteen rantaviivan (natural=coastline) määrittelemättä relaatiota. Jos monen relaation Saimaa aiheuttaa ylitsepääsemättömiä ongelmia, niin eiköhän ne voi räjäyttää takaisin natural=coastlineksi.

Juu, voi olla useampi relaatio on järkevää että pysyy kerralla käsiteltävä datamäärä kohtuullisena, tuli vain mieleen tuo, että voiko siitä tulla ongelmiakin. Mutta ei välttämättä, kyllähän navigaattorille lienee fiksua osata käsitellä tuollaisiakin.

Työstin Saimaata ja sen seudun vesistöjä ja saaria monikulmioiksi toiveena, että tulviminen mm. Kuopion keskustaan lakkaisi gpsmid:issä ja osmarenderissä. GpsMidin suhteen näyttää toimivalta, mutta Osmarenderin suhteen ei oikein onnistu esim. Syvärin suhteen, oudosti leviää yhteen Syvärin ruutuun vesi. Mahtaako olla joku bugi osmarenderissä vai eikö vain osaa pureksia vierekkäin olevia vesialueita.

Tuli vastaan aika paljon kahdesti samassa paikassa olevaa rantaviivaa, joka aiheuttanee oman osansa tulvimisongelmasta. Poistelin noitakin.

GpsMid ei ainakaan toistaiseksi ymmärrä multipolygon -relaatiosta mitään, mutta piirtelee silti järvet ja niissä olevat saaret aivan mallikkaasti, kunhan järvi koostuu yhdestä tai useammasta suljetusta alueesta. Ei osaa käsitellä rantaviivanpätkiä. Sivumennen, ei myöskään natural=coastlinen perusteella osaa värittää vettä siniseksi.

Ilmeisesti rantaviivanpätkistä koostuvia järviä on suht paljon Suomen OSM-kartalle.

Potlatchissa on ilmeisesti jokin bugi joka silloin tällöin heittää rantaviivanpätkiä pois. Tämän vuoksi aaattaa olla Saimaassa jotain pielessä ajoittain, eiköhän se tuosta.

Monien järvien rantaviiva on jaettu enintään 500 pisteen mittaisiin pätkiin. Ellen väärin muista, niin osa niistä oli määritelty multipolygon-relaatioiksi jo ennen minun sotkeutumistani asiaan. Käsittääkseni yhdessä viivassa saa olla enintään 2000 pistettä. Jossain (ehkä Venäjällä rajan tuntumassa) olen nähnyt myös 999 pisteen mittaisia viivoja.

Tällä hetkellä ainoa natural=coastline-muotoinen järvi on Päijänne. Jonkin verran nakersin siitä järviä ja vesiväyliä, mutta edelleen alue on sen verran iso, että se pitäisi jakaa moneksi multipolygon-relaatioksi.

Mistä muodosta GpsMid mahtaa karttoja näyttää? Ei kai sentään suoraan XML-puusta? Jos siinä on jokin valmiiksi pureksittu muoto, niin multipolygonit voisi pureksia polygoneiksi, niin kuin mkgmap tekee. Joka tapauksessa siitä voisi saada valmista Java-koodia.

GpsMidissä on oma binäärinen pakattu karttaformaatti ja “kääntäjä” joka muuttaa XML:n sisäiseksi formaatiksi, eli Osm2GpsMid -java-ohjelma syö sisään OSM-aineiston, parsii XML:n ja toisesta päästä tulee ulos tiedostokokoelma bundlattuna jarriin jossa myös itse GPsMid on. Kartta on pilkottu erilaisiksi tiiliksi, reititys ym.

Niin siis eihän niitä multipolygoneja tarvitse lainkaan pureksia polygoneiksi, vaan homma on siinä mielessä alaspäin yhteensopiva, että kun multipolygon koostuu polygoneista, niin GpsMid sitten käsittelee polygonit aivan normaalisti relaatioista mitään ymmärtämättä ikäänkuin erillisinä järvinä jotka vain sattuvat olevan yhdestä rannanosasta toisessa järvessä kiinni. Tämän vuoksi homma pelittää mukavasti, vaikka Osm2GpsMid ei tee multipolygoineilla muuta kuin laskee ne. Enpä tiedä olisiko tuosta multipolygonin ymmärtämisen lisäämisestä GpsMidiin nyt erityisemmin muuta hyötyä kuin että saisi järville nimet jos ei noissa polygoneissa satu olemaan.

Näköjään Osm2GpsMid sai tänään tulokseksi, että multipolygoneja on Suomen kartalla 1057, ylivoimaisesti eniten GpsMidille tuntemattomista relaatioista. Kakkosena on “route” 810, kolmosena “boundary” 297 ja kolmosena “surveillance” eli ilmeisesti valvontakamerat, 237.

Muoks: Laitanpa alle Osm2GpsMidin “tilasto/info”-tulostuksen, huomauttelee esim. kartalla olevista virheistä, josko joku vaikka tuon perusteella innostuisi korjaamaan.

OSM XML parser with bounds started…
Start of Document
Nodes read/used, Ways read/used, Relations read/partial/used
Nodes 674587/674587, Ways 0/0, Relations 0/0/0
Nodes 1327852/1327852, Ways 0/0, Relations 0/0/0
Nodes 2150432/2150432, Ways 0/0, Relations 0/0/0
Nodes 3100952/3100952, Ways 0/0, Relations 0/0/0
Nodes 4024238/4024238, Ways 0/0, Relations 0/0/0
Nodes 4956283/4956283, Ways 0/0, Relations 0/0/0
Nodes 5350983/5350983, Ways 33035/33035, Relations 0/0/0
Nodes 5350983/5350983, Ways 82075/82074, Relations 0/0/0
Nodes 5350983/5350983, Ways 128033/128032, Relations 0/0/0
Nodes 5350983/5350983, Ways 188208/188204, Relations 0/0/0
Nodes 5350983/5350983, Ways 232438/232430, Relations 0/0/0
Nodes 5350983/5350983, Ways 305389/305379, Relations 0/0/0
Nodes 5350983/5350983, Ways 376972/376959, Relations 0/0/0
Nodes 5350983/5350983, Ways 476497/476277, Relations 0/0/0
Nodes 5350983/5350983, Ways 508739/508427, Relations 33437/0/32859
End of document, reading took 232 seconds
strange this outline is already triangulated ! maybe dublicate. I will ignore it
Way http://www.openstreetmap.org/?way=57435379
please see http://www.openstreetmap.org/?relation=839921

< jätin nämä pois, on iso liuta)

Free memory: 255907176
Resizing nodes HashMap
Free memory: 280490536
Free memory: 386314656
Resizing nodes HashMap
Free memory: 376462416
Remaining after triangulation:
Nodes: 5350983
Ways: 421167
Relations: 3161
Areas: 28828
Triangles: 479265
Types of relations present but ignored:
no_overtaking: 1
false_restriction: 1
bridge: 79
destination_sign: 7
address: 1
access: 9
associatedStreet: 220
group: 1
disc_golf_course: 3
place: 1
street: 1
site: 96
enforcement: 77
collection: 1
relatedStreet: 10
destinationsign: 235
tunnel: 4
line_of_sight: 1
boundary: 297
surveillance: 237
route: 810
unknown: 5
Tammela: 1
multipolygon: 1057
waterway: 1
network: 5
Splitting long ways increased ways from 421167 to 437309
Remembering 3104 traffic signal nodes
Removing unused nodes
PLEASE HELP and fix reported duplicates in OpenStreetMap
Processed 267549 of 5350980 nodes, 2 duplicates found
Processed 535098 of 5350980 nodes, 8 duplicates found
Differing duplicate nodes: id=559450398 (62.103943|26.089033) name= / id=559450397 (62.103943|26.089033) name=null
Detail URL: http://www.openstreetmap.org/browse/node/559450398
Processed 802647 of 5350980 nodes, 19 duplicates found
Processed 1070196 of 5350980 nodes, 29 duplicates found
Processed 1337745 of 5350980 nodes, 33 duplicates found
Processed 1605294 of 5350980 nodes, 47 duplicates found
Differing duplicate nodes: id=448619072 (60.362522|25.094164) name= / id=448619079 (60.362522|25.094164) name=null
Detail URL: http://www.openstreetmap.org/browse/node/448619072
Differing duplicate nodes: id=535086956 (60.254345|25.00063) name=null / id=534426423 (60.254345|25.00063) name=Malmin sairaala
Detail URL: http://www.openstreetmap.org/browse/node/535086956
Processed 1872843 of 5350980 nodes, 62 duplicates found
Processed 2140392 of 5350980 nodes, 83 duplicates found
Processed 2407941 of 5350980 nodes, 116 duplicates found
Processed 2675490 of 5350980 nodes, 141 duplicates found
Differing duplicate nodes: id=239460157 (60.17422|24.955994) name=null / id=444864158 (60.17422|24.955994) name=Sibelius-lukio
Detail URL: http://www.openstreetmap.org/browse/node/239460157
Processed 2943039 of 5350980 nodes, 169 duplicates found
Processed 3210588 of 5350980 nodes, 178 duplicates found
Differing duplicate nodes: id=670725342 (60.57001|27.193539) name= / id=422807060 (60.57001|27.193539) name=null
Detail URL: http://www.openstreetmap.org/browse/node/670725342
Processed 3478137 of 5350980 nodes, 188 duplicates found
Differing duplicate nodes: id=480756719 (65.0137|25.465061) name=Keltainen Aitta / id=480756710 (65.0137|25.465061) name=null
Detail URL: http://www.openstreetmap.org/browse/node/480756719
Processed 3745686 of 5350980 nodes, 205 duplicates found
Processed 4013235 of 5350980 nodes, 229 duplicates found
Processed 4280784 of 5350980 nodes, 251 duplicates found
Processed 4548333 of 5350980 nodes, 282 duplicates found
Processed 4815882 of 5350980 nodes, 344 duplicates found
Differing duplicate nodes: id=619937418 (59.78466|21.366985) name=null / id=619937413 (59.78466|21.366985) name=Utö Havshotel
Detail URL: http://www.openstreetmap.org/browse/node/619937418
Processed 5083431 of 5350980 nodes, 390 duplicates found
Differing duplicate nodes: id=673917996 (62.623272|29.8259) name= / id=689029476 (62.623272|29.8259) name=null
Detail URL: http://www.openstreetmap.org/browse/node/673917996
Processed 5350980 of 5350980 nodes, 468 duplicates found
Removed 460 duplicate nodes, took 7743 ms
Removed 598832 unused nodes, took 2510 ms
Free memory: 406358456
Resizing nodes HashMap
Free memory: 320365176
Remaining after cleanup:
Nodes: 4751691
Ways: 437309
Relations: 3161
Creating route data
Unhandled maxspeed for way id=4336790 type=5 [lit=yes ref=55 name:sv=Västra Mannerheimleden surface=paved highway=primary name=Läntinen Mannerheiminväylä name:fi=Läntinen Mannerheiminväylä maxspeed=50-60 ]
Unhandled maxspeed for way id=30897726 type=12 [highway=residential name=Mäkitie maxspeed=30;40 ]
Unhandled maxspeed for way id=38490469 type=5 [ref=58 highway=primary maxspeed=80; 100 ]
Unhandled maxspeed for way id=32540763 type=9 [ref=11845 surface=paved highway=tertiary name=Pennalantie is_in=Orimattila maxspeed=60; 60; 40; 60 ]
Resolving 21 viaWays for turn restrictions
Resolved viaWay x fromWay to node 189464477
Resolved viaWay x toWay to node 26661558
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/4643595:
http://www.openstreetmap.org/browse/node/189464477
http://www.openstreetmap.org/browse/node/26661558
Resolved viaWay x fromWay to node 309600790
Resolved viaWay x toWay to node 309600775
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/30287806:
http://www.openstreetmap.org/browse/node/309600790
http://www.openstreetmap.org/browse/node/309600775
Resolved viaWay x fromWay to node 25573571
Resolved viaWay x toWay to node 30547199
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/25509207:
http://www.openstreetmap.org/browse/node/25573571
http://www.openstreetmap.org/browse/node/30547199
Resolved viaWay x fromWay to node 148662853
Resolved viaWay x toWay to node 25415578
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/38906265:
http://www.openstreetmap.org/browse/node/148662853
http://www.openstreetmap.org/browse/node/25415578
Resolved viaWay x fromWay to node 30547199
Resolved viaWay x toWay to node 148662853
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/43009065:
http://www.openstreetmap.org/browse/node/30547199
http://www.openstreetmap.org/browse/node/148662853
Resolved viaWay x fromWay to node 25415578
Resolved viaWay x toWay to node 25573571
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/4775828:
http://www.openstreetmap.org/browse/node/25415578
http://www.openstreetmap.org/browse/node/25573571
Resolved viaWay x fromWay to node 672975593
Resolved viaWay x toWay to node 51494606
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/53186316:
http://www.openstreetmap.org/browse/node/672975593
http://www.openstreetmap.org/browse/node/51494606
Resolved viaWay x fromWay to node 30678138
Resolved viaWay x toWay to node 25715384
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/30140159:
http://www.openstreetmap.org/browse/node/30678138
http://www.openstreetmap.org/browse/node/25715384
Resolved viaWay x fromWay to node 313963185
Resolved viaWay x toWay to node 315285583
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/25361336:
http://www.openstreetmap.org/browse/node/313963185
http://www.openstreetmap.org/browse/node/315285583
Resolved viaWay x fromWay to node 264457084
Resolved viaWay x toWay to node 333884718
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/30290577:
http://www.openstreetmap.org/browse/node/264457084
http://www.openstreetmap.org/browse/node/333884718
Resolved viaWay x fromWay to node 26347968
Resolved viaWay x toWay to node 264457083
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/4281188:
http://www.openstreetmap.org/browse/node/26347968
http://www.openstreetmap.org/browse/node/264457083
Resolved viaWay x fromWay to node 333884718
Resolved viaWay x toWay to node 26347968
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/30290575:
http://www.openstreetmap.org/browse/node/333884718
http://www.openstreetmap.org/browse/node/26347968
Resolved viaWay x fromWay to node 32011139
Resolved viaWay x toWay to node 32011140
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/30291032:
http://www.openstreetmap.org/browse/node/32011139
http://www.openstreetmap.org/browse/node/32011140
Resolved viaWay x fromWay to node 33981807
Resolved viaWay x toWay to node 25543261
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/29971914:
http://www.openstreetmap.org/browse/node/33981807
http://www.openstreetmap.org/browse/node/25543261
Resolved viaWay x fromWay to node 325268735
Resolved viaWay x toWay to node 325265842
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/30293518:
http://www.openstreetmap.org/browse/node/325268735
http://www.openstreetmap.org/browse/node/325265842
Resolved viaWay x fromWay to node 325267475
Resolved viaWay x toWay to node 26633771
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/30140152:
http://www.openstreetmap.org/browse/node/325267475
http://www.openstreetmap.org/browse/node/26633771
Resolved viaWay x fromWay to node 280206744
Resolved viaWay x toWay to node 325268723
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/30293592:
http://www.openstreetmap.org/browse/node/280206744
http://www.openstreetmap.org/browse/node/325268723
Resolved viaWay x fromWay to node 288996157
Resolved viaWay x toWay to node 288996180
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/43199885:
http://www.openstreetmap.org/browse/node/288996157
http://www.openstreetmap.org/browse/node/288996180
Resolved viaWay x fromWay to node 273956840
Resolved viaWay x toWay to node 34056084
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/32906345:
http://www.openstreetmap.org/browse/node/273956840
http://www.openstreetmap.org/browse/node/34056084
Resolved viaWay x fromWay to node 664173178
Resolved viaWay x toWay to node 83267857
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/52246156:
http://www.openstreetmap.org/browse/node/664173178
http://www.openstreetmap.org/browse/node/83267857
Resolved viaWay x fromWay to node 26009432
Resolved viaWay x toWay to node 78518705
viaRouteNodes on viaWay http://www.openstreetmap.org/browse/way/53059789:
http://www.openstreetmap.org/browse/node/26009432
http://www.openstreetmap.org/browse/node/78518705
21 viaWays resolved
Calculating turn restrictions
Invalid turn restriction: 0 to_connections matched for: no_right_turn from ‘’ (4293568) into ‘Eliel Saarisen tie’ (10557968)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/25930510
Invalid turn restriction: 0 to_connections matched for: no_straight_on from ‘Eliel Saarisen tie’ (26368084) into ‘Eliel Saarisen tie’ (24436674)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/26429474
Invalid turn restriction: 0 from_connections matched for: only_straight_on from ‘Itämerenkatu (construction)’ (8035321) into ‘Itämerenkatu (construction)’ (30470341)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/313937382
Invalid turn restriction: 0 to_connections matched for: only_straight_on from ‘Itämerenkatu (construction)’ (8035321) into ‘Itämerenkatu (construction)’ (30470341)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/313937382
Invalid turn restriction: 0 from_connections matched for: only_straight_on from ‘Leppäsuonkatu (construction)’ (51557905) into ‘Leppäsuonkatu’ (12767811)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/419280032
Invalid turn restriction: 0 from_connections matched for: only_straight_on from ‘Itämerenkatu (construction)’ (30470341) into ‘Itämerenkatu’ (4331844)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/25238874
Invalid turn restriction: 0 from_connections matched for: only_straight_on from ‘Mechelininkatu (construction)’ (30470347) into ‘construction’ (42107699)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/25238880
Invalid turn restriction: 0 to_connections matched for: only_straight_on from ‘Mechelininkatu (construction)’ (30470347) into ‘construction’ (42107699)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/25238880
Invalid turn restriction: 0 to_connections matched for: no_left_turn from ‘Rautatienkatu (13)’ (28630524) into ‘’ (25474546)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/277588670
Invalid turn restriction: 0 from_connections matched for: only_straight_on from ‘Maaherrantie’ (23254363) into ‘Maaherrantie’ (31477050)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/25546325
Invalid turn restriction: 0 to_connections matched for: only_straight_on from ‘Maaherrantie’ (23254363) into ‘Maaherrantie’ (31477050)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/25546325
Invalid turn restriction: 0 from_connections matched for: only_straight_on from ‘Maaherrantie’ (31477050) into ‘Maaherrantie’ (23254363)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/25546325
Invalid turn restriction: 0 to_connections matched for: only_straight_on from ‘Maaherrantie’ (31477050) into ‘Maaherrantie’ (23254363)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/25546325
Invalid turn restriction: 2 from_connections matched for: only_right_turn from ‘’ (38839666) into ‘Ahjokatu’ (41894510)
Reason may be: fromWay not split at via member
FromNode: 427552821
FromNode: 461128855
URL for via node: http://www.openstreetmap.org/browse/node/427552720
Invalid turn restriction: 0 to_connections matched for: no_left_turn from ‘’ (37278020) into ‘18’ (18628061)
Reason may be: way tagged with access=no or from/to swapped on oneways
URL for via node: http://www.openstreetmap.org/browse/node/434343036
857 turn restrictions valid
Optimizing route data
Creating nearBy candidates
Found 3069 placenames
Found 55645 names, 53403 canon

Kirjoitin:

“Niin siis eihän niitä multipolygoneja tarvitse lainkaan pureksia polygoneiksi, vaan homma on siinä mielessä alaspäin yhteensopiva, että kun multipolygon koostuu polygoneista, niin GpsMid sitten käsittelee polygonit aivan normaalisti relaatioista mitään ymmärtämättä ikäänkuin erillisinä järvinä jotka vain sattuvat olevan yhdestä rannanosasta toisessa järvessä kiinni.”

Hmm, enpäs olekaan varma, olenko tätä useamman vierekkäisen outer-polun järveä vielä gpsmidillä testannut. Muistin virheellisesti Lohjanjärven olevan multipolygon johon piti laittaa useampi outer -polku, mutta näköjään yksi outer-polku riitti. Palaan asiaan.

Nyt kyllä hiukan vaikuttaa siltä, että Osmarender taitaa tykätä kyttyrää tuosta, vrt. Syväri jossa on kaksi outer-polkua, kts. http://www.openstreetmap.org/browse/relation/445534 - hiukan vaikuttaa siltä, että Osmarenderin järvenranta vastaan järvenrantaa aiheuttaa vuodon kun Osmarender olettaa, että järvi rajoittuu maahan eikä järveen kuten tuossa, ja vesi leviää ympärille. Vrt. http://www.openstreetmap.org/?minlon=27.8304606&minlat=63.1935&maxlon=28.2765&maxlat=63.4319779

Hiukan ongelmia näkyy tällä hetkellä olevan myös Mapnik-renderöinnissä joillakin zoomitasoilla Saimaalla Kuopion keskustan tienoolla. Katsotaanpa asettuuko piirto järkevästi.

Mitenkäs mkgmap suhtautuu tuollaiseen, tuleeko Syväristä oikean näköinen?

Jos Osmarender ei tuosta selviä - tosin ei selviä myöskään relaatioilla koostetuista rannanpätkistäkään ilmeisesti - niin ehkä olisi paikallaan ehdottaa Osmarenderin kehitystä tässä suhteessa.

Vai löytyisikö jokin vaihtoehtoinen tapa vielä? Periaatteessa tietysti natural=coastline on yksi tapa, mutta toisaalta kyllä siististi paketoitu alue natural=water ja koostettuna relaatio(i)ksi olisi aika tyylikkäästi rakenteen kuvaava tapa joka on piirrettävissä myös ilman relaatioita ja ilmeisesti suhteellisen monimutkaista hakemista missä järvi alkaa ja missä loppuu kuten natural=coastlinella. Relaatiossa kun on kauneutena myös se, että sillä kuvautuvat järvessä olevat saaret nimineen siten, että ne voidaan esim. nimihaussa esittää mielekkäästi, ei taida coastlinella oikein tuollaista voida tehdä.

Vahvistan, että kahdesta palasta liitetty Syväri näkyy GpsMidin kartalla oikein, samoin Saimaa Kuopion keskustan tienoilla on enimmäkseen oikein. Luoteeseen keskustasta on neliö maata, tarkistan onko siellä vielä jokin ei-umpinainen järven tai saaren rantapätkä. Myös Vehmersalmelta itään ja Leppävirralta pohjoiseen on maaneliöitä, lienee sielläkin vielä korjattavaa kartassa.

Eipä näytä Osmarender tosiaan tuollaisia toisiinsa liitettyjä vesimonikulmioita osaavan piirtää. No, toisaalta Osmarender -kartta tulvii muutenkin vesialueena Lappeenrannasta Iisalmeen, joten en tiedä huonontaako polygonien käyttäminen tilannetta.

Tuli vastaan relation-analyzer, esim. Saimaan multipolygoneista pari esimerkkiä:

suljetut polut:

http://betaplace.emaitie.de/webapps.relation-analyzer/analyze.jsp?relationId=405910

lopussa toiseksi viimeisenä ei-suljettu segmentti: http://betaplace.emaitie.de/webapps.relation-analyzer/analyze.jsp?relationId=414810

Mapnik-kartalla näkyy multipolygon -muutosten jälkeen vielä Saimaalla Kuopion keskustan tienoolla virheellistä karttaa zoomitasolla 11 ja 12 (kts. http://www.informationfreeway.org/?lat=62.87588814520414&lon=27.849543661388125&zoom=12&layers=00000F0B0F ). Kymppiin asti näyttää oikealta, ja 13 on kunnossa yhtä neliötä lukuunottamatta, 14 näyttää kokonaan oikealta. Poistelin tupla- ja tripla-rantaviivoja jotka ilmeisesti aiheuttavat ongelmia, katsotaan tokeneeko tuosta.

Tiedoksi, että järvien esittämisestä multipolygoineilla on keskustelua ainakin http://forum.openstreetmap.org/viewtopic.php?pid=60334 ja http://www.mail-archive.com/mkgmap-dev@lists.mkgmap.org.uk/msg05326.html

Jos gpsmid ei selviydy useamman outer-polun järvestä, niin eihän se voi ikinä näyttää mertakaan. Vaan eipä GSM-puhelimista taida muutenkaan olla paljoa iloa yli 30 km:n päässä lähimmästä tukiasemasta. :slight_smile:

En osaa vielä sanoa. Se valitti Saimaan multipolygoneista, joita juuri korjailin. Olit (tai joku oli) piirtänyt rantaviivoja osittain ristiin, ja jotkut alueet kuuluivat moneen multipolygoniin. Mapnik:kin näytti menneen sekaisin. Korjasin JOSMin Validator-liitännäisen multipolygon-valitukset ja tein lisää multipolygon-relaatioita niin, että kussakin relaatiossa on yksi outer-polkujen (tässä tapauksessa vieläpä yhden outer-polun) muodostama silmukka, jonka sisällä kaikki inner-polut ovat.

Valitettavasti joku on noin viikko sitten aloittanut landuse-tietojen siirtämisen Venäjän puoleiseen Karjalaan. mkgmap valittaa niistä ja mielestäni aiheesta. Minun täytyy toteuttaa jokin tapa, jolla mkgmap sivuuttaa kyseiset relaatiot jonkin avaimen perusteella tai ei ainakaan valita niistä. Ei ole järkevää seuloa kaikkia satoja multipolygon-relaatioita, joista mkgmap valittaa.