[Talk-it] Statistiche
David Paleino
d.paleino at gmail.com
Mon Jun 1 13:46:35 BST 2009
On Mon, 1 Jun 2009 13:04:26 +0200, Diego Guidotti - Aedit s.r.l. wrote:
> Ciao,
>
> per generare le statistiche carico tutte le mappe italiane sul db postgres e
> poi con una query spaziale spezzo tutti gli elemementi lineari usando il
> tematismo dei limiti amministrativi comunali ISTAT.
Ok, come se avessi capito, *g*
> Dopo averle spezzate calcolo, per unità amministrativa, la lunghezza dei
> sentimenti.
Ok.
> Ecco i comandi (sistema operativo linux, con Postgres/Postgis e osm2pgsql
> per caricare i dati):
Ok, questo l'avevo fatto...
> 1) Script che scarica il db OSM italiano e lo carica su postgis creando una
> tabella che si chiama italy_20090530_line (la data ovviamente cambia)
> dt=`date +"%Y%m%d"`
> wget http://download.geofabrik.de/osm/europe/italy.osm.bz2
> # oppure wget http://downloads.cloudmade.com/europe/italy/italy.osm.bz2
> bunzip2 italy.osm.bz2
> osm2pgsql -l -p italy_$dt italy.osm
Ma in unica tabella, senza "dipendere" dalla data. Per le "percentuali di
crescita" però la data serve, quindi comincerò da capo :)
> 2) SQL da eseguire per spezzare le linee -> genera la tabella
> osm_stat_20090530 con le geometrie spezzate
>
> create table osm_stat_20090530 as select c.cod_reg, c.pro_com, l.highway,
> l.ref, l.name , intersection (l.way, transform(c.geom,4326)) FROM
> italy_20090530_line l, it_comuni c
> WHERE l.highway <>'' AND l.way && transform(c.geom,4326)
> AND intersects(l.way , transform(c.geom,4326))
Eccolo.. questo è il trucco :)
> 3) query
>
> --per le statistiche regionali
>
> SELECT c.nome_reg, sum(c.pop2001),
> sum(length(transform(s.intersection,3395))) AS highw
> FROM it_comuni c LEFT JOIN osm_stat_20090530 s ON c.pro_com = s.pro_com
> GROUP BY c.nome_reg order by nome_reg
>
> -- numero di comuni mappati per regione
> select p.nome_regione, count(p.cod_pro), count(p.highw) FROM
> ( SELECT r.nome_regione, c.cod_pro, c.pro_com, c.geom, c.nome_com,
> c.pop2001, min(s.cod_reg) AS highw
> FROM it_comuni c LEFT JOIN osm_stat_20090503 s ON c.pro_com = s.pro_com,
> it_prov_name p, it_reg_name r
> where p.cod_pro =c.cod_pro AND p.cod_reg=r.cod_reg
> GROUP BY r.nome_regione, c.cod_pro, c.pro_com, c.geom, c.nome_com,
> c.pop2001
> ) p GROUP BY p.nome_regione;
Ok, grazie mille!
> 4) esporto i dati in excel e li sistemo
Vedrò se si può automatizzare il tutto, magari con un cron su un qualche
server :)
Grazie ancora,
David
--
. ''`. Debian maintainer | http://wiki.debian.org/DavidPaleino
: :' : Linuxer #334216 --|-- http://www.hanskalabs.net/
`. `'` GPG: 1392B174 ----|---- http://snipr.com/qa_page
`- 2BAB C625 4E66 E7B8 450A C3E1 E6AA 9017 1392 B174
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 197 bytes
Desc: not available
URL: <http://lists.openstreetmap.org/pipermail/talk-it/attachments/20090601/902d3855/attachment.pgp>
More information about the Talk-it
mailing list