recette #19
Passer des communes aux d�partement,
des d�partements aux regions...

F�vrier 2011


Pr�c�dent

Table des mati�res

Suivant


Le probl�me

Local Councils, Counties et Regions suivent un ordre hierarchique bien pr�cis.
Du point de vue administratif, l'Italie est subdivis�e en R�gions; les R�gions en Counties (ie d�partements); les Counties en Local Councils (Communes).
Avec une analyse spatiale appropri�e, il est possible de partir de la g�om�trie des Local Councils pour g�n�rer la g�om�trie des Counties, puis des Regions.

Important: le jeu de donn�e ISTAT 2001 census n'est pas tr�s adapt� pour cette analyse, car il contient plusieurs erreurs topologiques (g�om�tries malform�es).
A la plce, on utilisera le jeu de donn�e
ISTAT 2010, de meilleure qualit�.
http://www.istat.it/ambiente/cartografia/comuni2010.zip
http://www.istat.it/ambiente/cartografia/province2010.zip
http://www.istat.it/ambiente/cartografia/regioni2010.zip





Commen�ons par cr�er une nouvelle BDD; sous spatialite_gui importons le shapefile  com2010_s.



puis le jeu de donn�e prov2010_s : c'est aussi un shapefile.
Dans notre cas, ignorons simplement la g�om�trie des Counties.
(on les recr�era nous m�me).
On va donc se contenter d'importer uniquement le fichier .DBF , contenant uniquement les donn�es attributaires.

Faisons la m�me chose avec le fichier .DBF de reg2010_s.



CREATE VIEW local_councils AS
SELECT c.cod_reg AS cod_reg,
  c.cod_pro AS cod_pro,
  c.cod_com AS cod_com,
  c.nome_com AS nome_com,
  p.nome_pro AS nome_pro,
  p.sigla AS sigla,
  r.nome_reg AS nome_reg,
  c.geometry AS geometry
FROM com2010_s AS c
JOIN prov2010_s AS p USING (cod_pro)
JOIN reg2010_s AS r USING(cod_reg);


SELECT * FROM local_councils;


cod_reg

cod_pro

cod_com

nome_com

nome_pro

sigla

nome_reg

geometry

1

1

1

Agli�

Torino

TO

PIEMONTE

BLOB sz=1117 GEOMETRY

1

1

2

Airasca

Torino

TO

PIEMONTE

BLOB sz=1149 GEOMETRY

1

1

3

Ala di Stura

Torino

TO

PIEMONTE

BLOB sz=1933 GEOMETRY

...

...

...

...

...

...

...

...

Ceci va cr�er une VIEW (VUE) local_councils; cette VIEW repr�sente une jolie table incluant toutes les donn�es dont nous auront besoin pour r�aliser l'analyse spatiale. Pratique les vues, n'est-ce pas ?

CREATE TABLE counties AS
SELECT cod_pro, nome_pro, sigla, cod_reg, nome_reg,
  ST_Union(geometry) AS geometry
FROM local_councils
GROUP BY cod_pro;


SELECT RecoverGeometryColumn('counties', 'geometry',
  23032, 'MULTIPOLYGON', 'XY');

Cr�ons maintenant la table countries:

SELECT * FROM counties;


cod_pro

nome_pro

sigla

cod_reg

nome_reg

geometry

1

Torino

TO

1

PIEMONTE

BLOB sz=36337 GEOMETRY

2

Vercelli

VC

1

PIEMONTE

BLOB sz=27357 GEOMETRY

3

Novara

NO

1

PIEMONTE

BLOB sz=15341 GEOMETRY

...

...

...

...

...

...

Petite v�rification ...


Visualisez la couche counties via QGIS.



CREATE TABLE regions (
  cod_reg INTEGER NOT NULL PRIMARY KEY,
  nome_reg TEXT NOT NULL);


SELECT AddGeometryColumn('regions', 'geometry',
  23032, 'MULTIPOLYGON', 'XY');


INSERT INTO regions (cod_reg, nome_reg, geometry)
SELECT cod_reg, nome_reg, ST_Union(geometry)
FROM counties
GROUP BY cod_reg;

On va maintenant cr�er la table regions:

SELECT * FROM regions;


cod_reg

nome_reg

geometry

1

PIEMONTE

BLOB sz=75349 GEOMETRY

2

VALLE D'AOSTA/VALL�E D'AOSTE

BLOB sz=18909 GEOMETRY

3

LOMBARDIA

BLOB sz=83084 GEOMETRY

...

...

...

Petite v�rification ...



  Vous pouvez visualiser la couche regions via QGIS.



CREATE TABLE italy AS
SELECT 'Italy' AS country,
  ST_Union(geometry) AS geometry
FROM regions;


SELECT RecoverGeometryColumn('italy', 'geometry',
  23032, 'MULTIPOLYGON', 'XY');

Pour terminer, nous allons cr�er une table italy repr�sentant la g�om�trie globale du pays.



Vous pouvez visualiser la couche italy via QGIS � et c'est tout.


Pr�c�dent

Table des mati�res

Suivant


Author: Alessandro Furieri a.furieri@lqt.it
Traduced From English by RIVIERE Romain

This work is licensed under the Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license.


Permission is granted to copy, distribute and/or modify this document under the terms of the
GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation;
with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.