[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