[Talk-ro] Propunere pentru "maxspeed" în România

Flaviu flaviu at gmx.com
Wed Dec 8 15:46:04 GMT 2010


Eu am zis așa "Orice deducere într-un caz ambiguu duce la probleme. " și 
demonstrez problema din pseudocod.
Harta va conține date de rutare și pentru camion și pentru autoturism. 
Luăm cazul în care maxspeed e specificat ca maxspeed=130 (autostrăzi).

daca is_in RO

   dacă camion
   atunci
     daca este specificat maxspeed:hgv
     atunci vmax=maxspeed:hgv
     altfel daca este specificat maxspeed
     atunci*vmax=maxspeed*
     ...
   altfel
     daca este specificat maxspeed
     atunci*vmax=maxspeed*

Pe baza algorimului voi determina că și camionul și autoturismul vor 
avea aceleași limită de viteză, pe când de fapt limita pentru camion ar 
fi trebuit să fie 110. Repari, mai pui un -20 în cazul României dar dacă 
vrei să acoperi toate cazurile, inclusiv țări diferite, ar ieși un 
algoritm destul de complicat. Ce rost are ca fiecare utilizator care 
vrea să proceseze astfel de date să inventeze algoritmi. Să stai să 
învăți pentru fiecare țară reguli de calcul al limitei de viteză dacă 
este specificat doar un singur tag maxspeed. Cine plătește astfel de efort?
Apoi pseudocodul "daca is_in localitate", păi de ce să fiu obligat să am 
o structură de date pentru căutare cu toate localitățile din hartă? Oare 
câte localități sunt în Europa și cât spațiu e necesar pentru stocarea 
unei structuri de căutare pentru localități? Nu am altceva de făcut 
decât să caut în datele OSM localități? Și de fiecare dată când 
procesezi o versiune mai nouă de hartă să reiei toate căutările? Prefer 
să îmi ocup timpul cu ceva mai interesant și să primesc date cât mai 
concrete. Vreau limita de viteză pentru autoturisme și pentru camioane 
în clar și nimic mai mult. Timpul nostru, viața noastă, e mai prețios 
decât spațiul de stocare. E un târg care zic eu că merită. Dacă ți se 
cere mâine de exemplu să procesezi toată harta Europei într-o zi și vezi 
că nu poți face asta, mai degrabă spui că nu e suficient timp decât să 
spui că nu ai destul spațiu pe disc. Preprocesări gen determinare listă 
localități face ca gradul de paralelism în procesarea să se reducă. În 
loc să dai drumu la un cârd de thread-uri care proceseze way-urile cu 
date cât mai detaliate, trebuie să pierzi timpul cu pași de preprocesare 
seriali (dependenți unii de alții), unul fiind determinarea listei de 
localități. O astfel de abordare cred că nu este optimă pentru 
procesare. Trebuie să profităm la maxim de paralelism pentru că acum 
avem calculatoare cu multiprocesoare.

Flaviu

On 12/8/2010 1:59 PM, Octavian Chelu wrote:
> În data de Miercuri 08 Decembrie 2010 13:39:47 Flaviu a scris:
>> Păi eu asta zic că sunt cazuri în care nu te poți baza pe deduceri și
>> trebuie specificate limitele de viteză. Tu ai spus că pe baza tag-ului
>> "is_in" poți face determinări.
>> Dacă pe un drum urban există o limitare de viteză pentru vehicule mari
>> la 30 km/h chiar și dacă există tag-urile is_in=RO, is_in=Oradea,
>> maxspeed=50 sau maxspeeed=RO:urban tot nu poți face deduceri pentru
>> limita de viteză pentru vehicule mari.
>> De aceea ziceam că notația maxspeed:hgv=30 sau maxspeed:<nume categorie
>> 2>=50 ar fi bună pentru cazul acesta.
> Păi nu am nimic împotrivă să pui „maxspeed:hgv=30” acolo unde este cazul, eu
> sunt impotriva la „maxspeed:hgv=RO:motorway” pentru că RO este pentru că ești
> în România iar motorway este pentru ca ai „highway=motorway”.
>
>> Spuneai și de redundanță, spre exemplu
>>
>> maxspeed=RO:motorway
>> maxspeed:hgv=RO:motorway
>>
>> e redundant nu?
> Redundant este „RO:motorway” vs. „is_in=Romania” și „highway=motorway”.
> Redundanța nu vine de la „maxspeed” vs. „maxspeed:hgv” pentru că pe anumite
> tronsoane poți avea limite de viteză, altele decât cele standard, diferite pe
> categorii de vehicule.
> Cu alte cuvinte, unde nu este un indicator cu limita de viteză nu folosim nici
> „maxspeed” nici „maxspeed:hgv”, unde este indicator doar pentru hgv folosim
> „maxspeed:hgv”, unde este indicator general valabil folosim doar „maxspeed”.
>
> Algoritmul de deducție este simplu și fară ambiguități, în pseudocod arată cam
> așa:
>
> daca is_in RO
>    dacă camion
>    atunci
>      daca este specificat maxspeed:hgv
>      atunci vmax=maxspeed:hgv
>      altfel daca este specificat maxspeed
>      atunci vmax=maxspeed
>      altfel daca is_in localitate
>      atunci vmax=... /nu stiu legislatia la camioane
>      altfel daca highway=motorway
>      atunci vmax=...
>      ...
>    altfel
>      daca este specificat maxspeed
>      atunci vmax=maxspeed
>      altfel daca is_in localitate
>      atunci vmax=50
>      altfel daca highway=motorway
>      atunci vmax=130
>      altfel daca highway=trunc
>      atunci vmax=100
>      altfel vmax=90
> altfel daca is_in alte tari
> ...
>
> Ăsta este doar un algoritm simplu, neoptimizat, scris la repezeală și posibil
> cu erori, ca să-ti dai seama cum funcționează deducerea. Să-mi spui tu acum
> unde apare ambiguitatea!
>
>   --
> Octavian Chelu
>
> _______________________________________________
> Talk-ro mailing list
> Talk-ro at openstreetmap.org
> http://lists.openstreetmap.org/listinfo/talk-ro

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstreetmap.org/pipermail/talk-ro/attachments/20101208/5ae90bf5/attachment.html>


More information about the Talk-ro mailing list