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
signature.asc
Description: PGP signature
_______________________________________________ Talk-it mailing list [email protected] http://lists.openstreetmap.org/listinfo/talk-it

