[Talk-it] Ref e nome della strada

Daniele Forsi dforsi at gmail.com
Sat Sep 12 22:05:50 BST 2009


Il 12 settembre 2009 09.03, David Paleino ha scritto:
> On Sat, 12 Sep 2009 01:43:07 +0200, Daniele Forsi wrote:

>> la pagina
>> potenzialmente cambia ogni giorno quindi nel wiki ci metterei solo il
>> link a una pagina esterna

ripensandoci, il wiki è comodo se c'è da fare un commento e per tenere
traccia del progresso

>> (la query che è un banale
>> count(*) ci mette sui 20 secondi, sono le 2,5-3 ore per importare
>> l'italy.osm che mi scoraggiano...)
>
> Esattamente che query è?

è quick and dirty, non ho nemmeno controllato quali sono gli indici

ho installato postgres e osmosis seguendo più o meno
http://wiki.openstreetmap.org/wiki/Osmosis_PostGIS_Setup
ho creato una view per tutte le highway con ref:
create view highway_ref AS select w1.*, w2.k AS k2, w2.v AS v2 from
way_tags w1, way_tags w2 where w1.k='highway' AND w1.way_id =
w2.way_id AND w2.k='ref';
e la query era:
SELECT COUNT(*), length FROM (SELECT LENGTH(v2) FROM highway_ref) AS t
GROUP BY length ORDER BY length;
Tempo: 24267,304 ms
questa era per sapere quante stringhe c'erano eventualmente da correggere

ma è utile anche aggiungere DISTINCT ON (v2) nella subquery per sapere
quanti sono i ref diversi in uso, che corrisponde alla quantità di
strade classificate con ref più/meno gli errori:
SELECT COUNT(*), length FROM (SELECT DISTINCT ON (v2) LENGTH(v2) FROM
highway_ref) AS t GROUP BY length ORDER BY length;
Tempo: 34314,110 ms

con DISTINCT sempre italy.osm del 10 settembre:
 count | length
-------+--------
     1 |      0
    13 |      1
    99 |      2
   550 |      3
   343 |      4
   889 |      5
   306 |      6
   122 |      7
    92 |      8
    51 |      9
    30 |     10
    26 |     11
    21 |     12
    18 |     13
    21 |     14
    20 |     15
    15 |     16
    12 |     17
    17 |     18
    12 |     19
    10 |     20
    14 |     21
     2 |     22
     5 |     23
     5 |     24
     6 |     25
     4 |     27
     3 |     28
     2 |     29
     2 |     30
     1 |     32
     2 |     33
     1 |     37
     1 |     38
     1 |     41
     1 |     52
(36 rows)

Tempo: 34314,110 ms

> Al momento c'è uno script che non si appoggia a Postgres, ma parsa l'xml
> direttamente (con libxml2).. e l'intera esecuzione (parsing+risultati) impiega
> ~40 minuti su stats (~20min sul mio) -- sempre meglio delle 2,5-3h+20s :)

certo :) il mio vecchio computer è più adatto per la videoscrittura
che per i database

io sono partito con l'idea di contare i ref, ma sarebbe più utile
l'elenco delle strade che NON hanno il ref per il necessario lavoro di
completamento e l'elenco delle strade che hanno il ref per un
eventuale lavoro di omogeneizzazione/correzione degli errori, che in
fin dei conti è comodo avere nel wiki come una tabella singola, in
modo che chi lo desidera può aggiornarla senza rieseguire la query o
commentarla, ma bisogna aggiungere in qualche modo le nuove way che
verranno create in futuro

> (e: il parsing diretto ci consente anche di fare statistiche sugli utenti, che
> non vengono invece importati in PostGIS, AFAICT).

con lo schema che ho usato gli utenti vengono importati:
# \d users
      Tabella "public.users"
 Colonna |  Tipo   | Modificatori
---------+---------+--------------
 id      | integer | not null
 name    | text    | not null
Indici:
    "pk_users" PRIMARY KEY, btree (id)

-- 
Daniele Forsi




More information about the Talk-it mailing list