[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