x

Re: Integration der Kurvendarstellung in OSM


Geschrieben von aighes (Gast) am 24. Mai 2012 14:33:29: [flux]

Als Antwort auf: Integration der Kurvendarstellung in OSM geschrieben von marek kleciak (Gast) am 23. Mai 2012 10:25:

So...ich hab mal ein wenig den Gedanken freien Lauf gelassen.

Wenn man davon ausgeht, dass Kurve=Kreisbogen, ist es mit dem Datentyp curve recht simpel.

<?xml␣version='1.0'␣encoding='UTF-8'?>
<osm␣version='0.6'>
<node␣id='1'␣lat='...'␣lon='...'␣/>
<node␣id='2'␣lat='...'␣lon='...'␣/>
<node␣id='3'␣lat='...'␣lon='...'␣/>
<curve␣id='1'␣>
<nd␣ref='3'␣/>␣//Startpunkt
<nd␣ref='2'␣/>␣//Hilfspunkt
<nd␣ref='1'␣/>␣//Endpunkt
</curve>
</osm>

Also egtl. ein wie ein Way nur mit genau 3 Nodes. Als kleine Demo hab ich es mal für einen Straßenabschnitt fix umgesetzt (trunk auf Mapnik-Primary, damit man es besser sieht):


Damit josm mit den Daten klar kommt, hab ich den Datentyp bei way belassen, zum Nachvollziehen aber curve=yes getaggt und den Hilfspunkt mit curve=middle getaggt. Beides ist mit dem Datentyp curve (siehe oben) nicht nötig.

<?xml␣version='1.0'␣encoding='UTF-8'?>
<osm␣version='0.6'␣upload='true'␣generator='JOSM'>
<node␣id='-58'␣action='modify'␣visible='true'␣lat='50.97624267299224'␣lon='11.284868318566938'␣/>
<node␣id='-56'␣action='modify'␣visible='true'␣lat='50.977472509120204'␣lon='11.28845722585104'␣/>
<node␣id='-54'␣action='modify'␣visible='true'␣lat='50.98111183334305'␣lon='11.291720590660256'␣/>
<node␣id='-52'␣action='modify'␣visible='true'␣lat='50.98141676376676'␣lon='11.291657070177354'␣/>
<node␣id='-50'␣action='modify'␣visible='true'␣lat='50.98317132450159'␣lon='11.292062013255869'␣/>
<node␣id='-48'␣action='modify'␣visible='true'␣lat='50.98435599040213'␣lon='11.292284334946036'␣/>
<node␣id='-46'␣action='modify'␣visible='true'␣lat='50.98523072430183'␣lon='11.292284334946036'␣/>
<node␣id='-44'␣action='modify'␣visible='true'␣lat='50.987679891534434'␣lon='11.291180666555572'␣/>
<node␣id='-42'␣action='modify'␣visible='true'␣lat='50.989524179113495'␣lon='11.289394152973882'␣/>
<node␣id='-40'␣action='modify'␣visible='true'␣lat='50.99463182341778'␣lon='11.291188606615933'␣/>
<node␣id='-38'␣action='modify'␣visible='true'␣lat='50.99615101423253'␣lon='11.294801334081122'␣/>
<node␣id='-36'␣action='modify'␣visible='true'␣lat='50.998042099052995'␣lon='11.29783956551705'␣/>
<node␣id='-34'␣action='modify'␣visible='true'␣lat='50.99984412350129'␣lon='11.30159003182825'␣/>
<node␣id='-32'␣action='modify'␣visible='true'␣lat='51.00016918712704'␣lon='11.30342034921964'␣/>
<node␣id='-30'␣action='modify'␣visible='true'␣lat='51.000416516620994'␣lon='11.304262519798504'␣/>
<node␣id='-28'␣action='modify'␣visible='true'␣lat='51.00187926695615'␣lon='11.309214482802213'␣/>
<node␣id='-26'␣action='modify'␣visible='true'␣lat='51.00249403231801'␣lon='11.31265053876397'␣/>
<node␣id='-24'␣action='modify'␣visible='true'␣lat='51.00130689188247'␣lon='11.30663182636037'>
<tag␣k='curve'␣v='middle'␣/>
</node>
<node␣id='-22'␣action='modify'␣visible='true'␣lat='51.00026433469981'␣lon='11.303872231459675'>
<tag␣k='curve'␣v='middle'␣/>
</node>
<node␣id='-20'␣action='modify'␣visible='true'␣lat='50.999219988940716'␣lon='11.29937815729419'>
<tag␣k='curve'␣v='middle'␣/>
</node>
<node␣id='-18'␣action='modify'␣visible='true'␣lat='50.99705127241943'␣lon='11.296710297012199'>
<tag␣k='curve'␣v='middle'␣/>
</node>
<node␣id='-16'␣action='modify'␣visible='true'␣lat='50.992198776887136'␣lon='11.288524094777891'>
<tag␣k='curve'␣v='middle'␣/>
</node>
<node␣id='-14'␣action='modify'␣visible='true'␣lat='50.98665101830255'␣lon='11.292033601458362'>
<tag␣k='curve'␣v='middle'␣/>
</node>
<node␣id='-12'␣action='modify'␣visible='true'␣lat='50.9836819453887'␣lon='11.292176522544896'>
<tag␣k='curve'␣v='middle'␣/>
</node>
<node␣id='-10'␣action='modify'␣visible='true'␣lat='50.98237229395303'␣lon='11.29166835868166'>
<tag␣k='curve'␣v='middle'␣/>
</node>
<node␣id='-8'␣action='modify'␣visible='true'␣lat='50.97900302087013'␣lon='11.29141427675004'>
<tag␣k='curve'␣v='middle'␣/>
</node>
<way␣id='-90'␣action='modify'␣visible='true'>
<nd␣ref='-58'␣/>
<nd␣ref='-56'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-88'␣action='modify'␣visible='true'>
<nd␣ref='-30'␣/>
<nd␣ref='-24'␣/>
<nd␣ref='-28'␣/>
<tag␣k='curve'␣v='yes'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-86'␣action='modify'␣visible='true'>
<nd␣ref='-28'␣/>
<nd␣ref='-26'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-84'␣action='modify'␣visible='true'>
<nd␣ref='-32'␣/>
<nd␣ref='-22'␣/>
<nd␣ref='-30'␣/>
<tag␣k='curve'␣v='yes'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-82'␣action='modify'␣visible='true'>
<nd␣ref='-34'␣/>
<nd␣ref='-32'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-80'␣action='modify'␣visible='true'>
<nd␣ref='-36'␣/>
<nd␣ref='-20'␣/>
<nd␣ref='-34'␣/>
<tag␣k='curve'␣v='yes'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-78'␣action='modify'␣visible='true'>
<nd␣ref='-38'␣/>
<nd␣ref='-18'␣/>
<nd␣ref='-36'␣/>
<tag␣k='curve'␣v='yes'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-76'␣action='modify'␣visible='true'>
<nd␣ref='-42'␣/>
<nd␣ref='-16'␣/>
<nd␣ref='-40'␣/>
<tag␣k='curve'␣v='yes'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-74'␣action='modify'␣visible='true'>
<nd␣ref='-40'␣/>
<nd␣ref='-38'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-72'␣action='modify'␣visible='true'>
<nd␣ref='-46'␣/>
<nd␣ref='-14'␣/>
<nd␣ref='-44'␣/>
<tag␣k='curve'␣v='yes'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-70'␣action='modify'␣visible='true'>
<nd␣ref='-44'␣/>
<nd␣ref='-42'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-68'␣action='modify'␣visible='true'>
<nd␣ref='-50'␣/>
<nd␣ref='-12'␣/>
<nd␣ref='-48'␣/>
<tag␣k='curve'␣v='yes'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-66'␣action='modify'␣visible='true'>
<nd␣ref='-48'␣/>
<nd␣ref='-46'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-64'␣action='modify'␣visible='true'>
<nd␣ref='-52'␣/>
<nd␣ref='-10'␣/>
<nd␣ref='-50'␣/>
<tag␣k='curve'␣v='yes'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-62'␣action='modify'␣visible='true'>
<nd␣ref='-54'␣/>
<nd␣ref='-52'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
<way␣id='-60'␣action='modify'␣visible='true'>
<nd␣ref='-56'␣/>
<nd␣ref='-8'␣/>
<nd␣ref='-54'␣/>
<tag␣k='curve'␣v='yes'␣/>
<tag␣k='highway'␣v='primary'␣/>
</way>
</osm>

Evtl. hat ja jemand auch an dem Thema Interesse und die Kenntnisse einen kleinen Renderer zu schreiben, der das umsetzen würde, oder hat bessere/andere Vorschläge zu dem Thema.