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 _______________________________________________ Talk-it mailing list Talk-it@openstreetmap.org http://lists.openstreetmap.org/listinfo/talk-it