Havaitsin tuossa tehdessäni poly-tiedostoa Helsingistä että
Way:t eivät olleet relaatiossa “maantieteellisessä” järjestyksessä mistä seurasi siksakkia
yksi way oli “väärin päin” suhteessa muihin mistä jälleen seurasi siksakkia
Tuli mieleen että kaikki rajarelaatiot voisi järjestää oikein siten että niistä saisi näppärästi tiristettyä poly-tiedostot vain wgettaamalla ja parsimalla ilman että täytyy tarkastaa JOSMilla miten rajan segmentit oikein menevät kussakin tapauksessa. Olisiko tästä mahdollisesti haittaa jotenkin?
Kahdella kunnalla vielä onnistuisi, jos toiselle sallitaan kiertosuunta vastapäivään. Heti kun jollain kunnalla on rajaa kahden muun myös toisiaan koskettavan kunnan kanssa, vähintään joku way on aina eri suuntaan kuin kunnan muut rajat-wayt.
Relaatioissa teiden keskinäisen järjestyksen voi toki säätää, nykyään kun editorit sitä tukevat.
Muutin sitten Vantaan rajan kulkemaan myötäpäivään yhtäsoittoisesti ja määrittelin jokaiselle way:lle forward ja backward arvon. Sitten kirjoitin pikkuskriptin jolla puristin polyn irti relaatiosta ja sain kuin sainkin aikaan Vantaan näköisen alueen Skriptillä generoitu Helsingin poly-tiedosto antoi osmosiksella täsmälleen saman osm-tiedoston kuin käsin rukattu poly -tiedosto. Skripti ilmeisesti toimii ainakin kahdessa tapauksessa oikein
Täytyykin seuraavaksi ryhtyä järjestämään kaikkien muidenkin kuntien/kaupunkien rajoja jotta saan tehtyä niistäkin omat osm-tiedostonsa ja pääsen kiinni katujen ja kujien lukumääriin, katunimien kattavuuteen, …
#!/bin/sh
set -e
set -u
SCRIPTNAME=${0##*/}
TMP=$( mktemp ${TMPDIR:-/tmp}/${SCRIPTNAME}.XXXXXX )
REL_ID=""
API="http://openstreetmap.org/api/0.6"
RAJA_ID=$1
trap 'rm -f ${TMP}*' EXIT
wget --quiet --output-document=${TMP}.relation "${API}/relation/${RAJA_ID}"
if [ -r ${TMP}.relation ]
then
sed -n -e 's@.*<member type="way" ref="\([0-9]\{1,\}\)" role="\([^"]*\)"/>.*@\1 \2@p' ${TMP}.relation > ${TMP}.ways
else
exit 1
fi
if [ ! -s ${TMP}.ways ]
then
echo "Rajan segmenttejä ei saatu selville."
exit 2
fi
suffix=0
while read ref role
do
wget --quiet --output-document=${TMP}.way.${suffix} "${API}/way/${ref}"
if [ "${role}" = "backward" ]
then
sed -n -e 's@.*<nd ref="\([0-9]\{1,\}\)"/>@\1@p' < ${TMP}.way.${suffix} | tac > ${TMP}.nodes.${suffix}
else
sed -n -e 's@.*<nd ref="\([0-9]\{1,\}\)"/>@\1@p' < ${TMP}.way.${suffix} > ${TMP}.nodes.${suffix}
fi
suffix=`expr $suffix + 1`
done < ${TMP}.ways
cat ${TMP}.nodes.? | uniq -u |\
while read node
do
echo $node | sed -n -e 's@^[0-9]\{1,\}$@'${API}'/node/'${node}'@p'
done |\
wget --quiet --output-document=- --input-file=- |\
sed -n -e 's@.* lat="\([^\"]\{1,\}\)" lon="\([^\"]\{1,\}\)" .*@\t\2\t\1@p'
Voisitko tarkistaa rajan Pohjois-Nikinmäessä? Kävin pyöräilemässä kaikki tiet (rakenteilla olevatkin) vaalimainoksia jakaessani ja sain Turskatien päättymään Keravan puolelle. Pitäisikö Vantaan ja Keravan välisen rajan itäisintä ”porrasta” siirtää hieman idemmäksi?
Mistä raja on alun perin saatu? Kysyessäni Vantaan kaupungin paikkatietotuesta kaupunginosien rajoja sain vain epätarkan bittikarttamuotoisen kuvan, joka näytti käsin piirretyltä (rajat menivät lännessä suunnilleen vaan eivät täysin jokia pitkin). Kaupungin rajoja en kysynyt. Olisi sieltä muutakin kysyttävää: Pohjois-Nikinmäen perukoilla parin uuden (täysin tyhjän) päällystetyn asuinkadunpätkän nimet puuttuvat kaupungin omistakin kartoista.