<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#ffffff" text="#000000">
    Eu am zis așa "Orice deducere într-un caz ambiguu duce la probleme.
    " și demonstrez problema din pseudocod.<br>
    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).<br>
    <br>
    daca is_in RO<br>
    <pre wrap="">  dacă camion
  atunci
    daca este specificat maxspeed:hgv
    atunci vmax=maxspeed:hgv
    altfel daca este specificat maxspeed
    atunci <b>vmax=maxspeed</b>
    ...
  altfel
    daca este specificat maxspeed
    atunci <b>vmax=maxspeed</b></pre>
    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?<br>
    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.<br>
    <br>
    Flaviu<br>
    <br>
    On 12/8/2010 1:59 PM, Octavian Chelu wrote:
    <blockquote cite="mid:201012081359.49132.tavy72@gmail.com"
      type="cite">
      <pre wrap="">În data de Miercuri 08 Decembrie 2010 13:39:47 Flaviu a scris:
</pre>
      <blockquote type="cite">
        <pre wrap="">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.
</pre>
      </blockquote>
      <pre wrap="">
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”.

</pre>
      <blockquote type="cite">
        <pre wrap="">
Spuneai și de redundanță, spre exemplu

maxspeed=RO:motorway
maxspeed:hgv=RO:motorway

e redundant nu?
</pre>
      </blockquote>
      <pre wrap="">
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
<a class="moz-txt-link-abbreviated" href="mailto:Talk-ro@openstreetmap.org">Talk-ro@openstreetmap.org</a>
<a class="moz-txt-link-freetext" href="http://lists.openstreetmap.org/listinfo/talk-ro">http://lists.openstreetmap.org/listinfo/talk-ro</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>