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.