<!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>