You are not logged in.

#1 2009-05-28 21:17:06

Mursti
Member
Registered: 2009-03-25
Posts: 26

Onko boundary -relaation rukkaamisella sivuvaiutuksia?

Moi,

Havaitsin tuossa tehdessäni poly-tiedostoa Helsingistä että

1) Way:t eivät olleet relaatiossa "maantieteellisessä" järjestyksessä mistä seurasi siksakkia

2) 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?

Offline

#2 2009-05-29 07:26:22

alv
Member
Registered: 2008-06-03
Posts: 196

Re: Onko boundary -relaation rukkaamisella sivuvaiutuksia?

Mursti wrote:

2) yksi way oli "väärin päin" suhteessa muihin mistä jälleen seurasi siksakkia

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.

Offline

#3 2009-06-02 10:41:54

Mursti
Member
Registered: 2009-03-25
Posts: 26

Re: Onko boundary -relaation rukkaamisella sivuvaiutuksia?

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 smile 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 wink

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'

Offline

#4 2009-06-02 15:52:42

JRA
Member
Registered: 2007-12-17
Posts: 671

Re: Onko boundary -relaation rukkaamisella sivuvaiutuksia?

Ohjelmointikyvyttömänä kokeilin, voisiko homman tehdä valmiilla työkaluilla.

- Rajat näyttävät siirtyvän osm2pgsql-ohjelmalla PostGIS-kantaan viivoiksi.
- Ne sai sieltä ulos OpenJUMP:iin kyselyllä
"select * from osm_line where admin_level is not null"
- OpenJUMP:ssa kokeilin toimintoa Työkalut - Muokkaa geometrioita -Muunna - Muodosta alueet (optiolla Solmuta lähtöaineisto ennen alueiden muodostamista).

Syntyi 77 kappaletta kelvollisia polygoneja.

Offline

#5 2009-06-02 18:19:39

Mursti
Member
Registered: 2009-03-25
Posts: 26

Re: Onko boundary -relaation rukkaamisella sivuvaiutuksia?

JRA wrote:

Ohjelmointikyvyttömänä kokeilin, voisiko homman tehdä valmiilla työkaluilla.

- Rajat näyttävät siirtyvän osm2pgsql-ohjelmalla PostGIS-kantaan viivoiksi.
- Ne sai sieltä ulos OpenJUMP:iin kyselyllä
"select * from osm_line where admin_level is not null"
- OpenJUMP:ssa kokeilin toimintoa Työkalut - Muokkaa geometrioita -Muunna - Muodosta alueet (optiolla Solmuta lähtöaineisto ennen alueiden muodostamista).

Syntyi 77 kappaletta kelvollisia polygoneja.

Vaikuttaa liian helpolta wink Puhumattakaan siitä että minun skriptissäni on bugi joka laskee Kauniaisen rajan osaksi Espoon ulkorajaa... smile

Last edited by Mursti (2009-06-02 18:19:53)

Offline

#6 2009-06-03 20:48:20

skela
Member
Registered: 2009-01-25
Posts: 407

Re: Onko boundary -relaation rukkaamisella sivuvaiutuksia?

Mursti wrote:

Muutin sitten Vantaan rajan kulkemaan myötäpäivään yhtäsoittoisesti ja määrittelin jokaiselle way:lle forward ja backward arvon.

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.

Offline

Board footer

Powered by FluxBB