OpenStreetMap

Kuinka generoida poly -tiedosto Helsingistä?

Posted by Mursti on 27 May 2009 in Finnish (Suomi). Last updated on 9 September 2009.

Minun piti jo viime viikolla yrittää tehdä Helsingistä oma polygon jotta voisin tehdä bussipysäkkilistan vain Helsingin bussipysäkeistä. Olin kyhäillyt python-skriptin jolla parsin maatiedostoa ihan onnistuneesti ja sain generoitua ratikkapysäkkilistan mutta minulta puuttui vielä polygoniin kuulumisen testaus. Törmäsin shapely -moduliin ja sainkin sen toimimaan ok testiaineistolla mutta sitten tulin järkiini ja latasin osmosiksen. Ei kai kaikkea kuitenkaan tarvitse tehdä itse :) Tänään ryhdyin sitten tuumasta toimeen mutta törmäsin heti puuttuvaan poly-tiedostoon. osmosis ei antanutkaan polygonia pelkällä boundary -relaatiolla :( Hetki piti taas kaivella Wikiä kunnes löysin poly-tiedostoformaatin kuvauksen.

Hauskin vaihe oli kuitenkin vielä tulossa: poly -tiedoston vääntäminen boundary-relaatiosta. Periaatteessa homma on ihan yksinkertainen. Luetaan boundary -relaatioon kuuluvat way:t (4 kpl) ja noihin way:ihin kuuluvat nodet ja otetaan node:itten lon ja lat talteen. Aluksi sain kuitenkin vain osan Helsingistä tällä tavoin (vajaa 100 ratikkapysäkkiä puuttui). Sitten hoksasin että boundary-relaatiossa way:t eivät ole "maantieteellisessä" järjestyksessä. Polygonia luotaessa mennään kuitenkin lon/lat järjestyksessä ja jos rajasegmenttien järjestys ei ole oikea tulee siksakkia ja osa Helsingista rajautui pois. No, JOSM:illa katselin rajaa ja sain selville segmenttien järjestyksen (2-1-3-4). Samalla havaitsin että segmentti 3 (seutukuntaraja) kulki eri suuntaan kuin 3 muuta segmenttiä. Ilmeisesti tämäkin seikka rajasi Helsingistä palan pois.

Lopuksi kun viimein kuvittelin saaneeni nodet oikeaan järjestykseen ähräsin vielä melkein tunnin kun epähuomiossa vaihdoin koordinaatit järjestykseen 'latitude', 'longitude' ja sain tuloksena vain tyhjän osm-tiedoston. Oikea järjestys on siis 'longitude', 'latitude'! Suomen maatiedostosta ei kovin hevillä löydy aluetta joka sijaitsee 25 astetta pohjoista leveyttä ja 60 astetta itäistä pituutta seutuvilla - kyseinen alue sijaitsee jossakin Persianlahden tietämissä :)

Nyt minulla kuitenkin on ihan oikea helsinki.poly -tiedosto. Pitäisi varmaan laittaa se talteen jonnekin.

Discussion

Log in to leave a comment