-
Notifications
You must be signed in to change notification settings - Fork 5
Importer communes de France
h1. Importer communes de France
Se rendre sur http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement.asp
Télécharger les fichiers suivants (vérifier le lien sur la page d’origine) :
Libellé | Lien |
---|---|
Liste des communes de la métropole et DOM (toutes les communes ayant existé depuis 1943) | http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement/2010/txt/france2010.zip |
Liste des communes existantes au 1er janvier 2010 | http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement/2010/txt/comsimp2010.zip |
Dézipper les archives dans le répertoire de la base de données de SYNTHESE. Les fichiers suivants apparaissent :
france2010.txt
comsimp2010.txt
NB : L’année peut avoir augmenté depuis la rédaction de cette page.
Commandes sous Linux :
cd /srv/data/s3-server
wget http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement/2010/txt/france2010.zip
wget http://www.insee.fr/fr/methodes/nomenclatures/cog/telechargement/2010/txt/comsimp2010.zip
unzip france2010.zip
unzip comsimp2010.zip
/opt/rcs/bin/spatialite config.db3
Ouvrir la base de données SYNTHESE. Si celle-ci est en cours d’utilisation, effectuer une sauvegarde.
Attention : Si une commune utilisée a été supprimée, certains points d’arrêts et certaines routes ne seront plus chargées.
Pour nettoyer la base des communes, exécuter la requête suivante :
DELETE FROM t006_cities;
DELETE FROM t065_city_aliases;
Ouvrir les deux fichiers textes dans SQLite en tant que table virtuelle (modifier l’année si elle ne correspond pas aux fichiers obtenus de l’INSEE) :
CREATE VIRTUAL TABLE france2010 USING VirtualText(france2010.txt, CP1252, 1, COMMA, DOUBLEQUOTE, TAB);
CREATE VIRTUAL TABLE comsimp2010 USING VirtualText(comsimp2010.txt, CP1252, 1, COMMA, DOUBLEQUOTE, TAB);
Plus d’infos sur le chargement de fichiers textes en table virtuelle : http://www.gaia-gis.it/spatialite/spatialite-tutorial-2.3.1.html#t7
INSERT INTO t006_cities(id, name, code) SELECT 1688849860499936 + (CASE DEP WHEN "2A" THEN 20 WHEN "2B" THEN 20 ELSE DEP END *1000+COM), CASE WHEN length(ARTMIN)>0 THEN substr(ARTMIN,2,length(ARTMIN)-2) || CASE substr(ARTMIN,-2,1) WHEN "'" THEN "" ELSE " " END ELSE "" END || NCCENR, DEP || substr(1000+COM, -3) FROM "comsimp2010";
Pour récupérer uniquement les communes d’une région, ajouter la clause WHERE à la première requête comme suit, en remplaçant le code région (exemple sur Ile-de-France) par celui souhaité (ajouter des clauses OR pour ajouter plusieurs régions) :
INSERT INTO t006_cities(id, name, code) SELECT 1688849860499936 + (CASE DEP WHEN "2A" THEN 20 WHEN "2B" THEN 20 ELSE DEP END *1000+COM), CASE WHEN length(ARTMIN)>0 THEN substr(ARTMIN,2,length(ARTMIN)-2) || CASE substr(ARTMIN,-2,1) WHEN "'" THEN "" ELSE " " END ELSE "" END || NCCENR, DEP || substr(1000+COM, -3) FROM "comsimp2010" WHERE REG=11;
Liste des régions :
|.Code|.Nom|
|01|Guadeloupe|
|02|Martinique|
|03|Guyane|
|04|La Réunion|
|11|Île-de-France|
|21|Champagne-Ardenne|
|22|Picardie|
|23|Haute-Normandie|
|24|Centre|
|25|Basse-Normandie|
|26|Bourgogne|
|31|Nord-Pas-de-Calais|
|41|Lorraine|
|42|Alsace|
|43|Franche-Comté|
|52|Pays de la Loire|
|53|Bretagne|
|54|Poitou-Charentes|
|72|Aquitaine|
|73|Midi-Pyrénées|
|74|Limousin|
|82|Rhône-Alpes|
|83|Auvergne|
|91|Languedoc-Roussillon|
|93|Provence-Alpes-Côte d’Azur|
|94|Corse|
Pour récupérer uniquement les communes d’un département, ajouter la clause WHERE à la première requête comme suit, en remplaçant le code département (exemple sur Paris) par celui souhaité (ajouter des clauses OR pour ajouter plusieurs départements) :
INSERT INTO t006_cities(id, name, code) SELECT 1688849860499936 + (CASE DEP WHEN "2A" THEN 20 WHEN "2B" THEN 20 ELSE DEP END *1000+COM), CASE WHEN length(ARTMIN)>0 THEN substr(ARTMIN,2,length(ARTMIN)-2) || CASE substr(ARTMIN,-2,1) WHEN "'" THEN "" ELSE " " END ELSE "" END || NCCENR, DEP || substr(1000+COM, -3) FROM "comsimp2010" WHERE DEP="75";
Les communes associées sont ajoutée en tant que communes réelles par la requête suivante avec xx le département choisi :
INSERT INTO t006_cities(id, name, code) SELECT 1688849860499936 + (CASE DEP WHEN "2A" THEN 20 WHEN "2B" THEN 20 ELSE DEP END *1000+COM), CASE WHEN length(ARTMIN)>0 THEN substr(ARTMIN,2,length(ARTMIN)-2) || CASE substr(ARTMIN,-2,1) WHEN "'" THEN "" ELSE " " END ELSE "" END || NCCENR, DEP || substr(1000+COM, -3) FROM "france2010" WHERE ACTUAL=2 AND DEP="xx";
Les anciens noms de communes sont ajoutés en tant qu’alias par la requête suivante :
INSERT INTO t065_city_aliases(id, aliased_city_id, name, code, visible) SELECT 18295873486192640 + (CASE DEP WHEN "2A" THEN 20 WHEN "2B" THEN 20 ELSE DEP END *1000+COM), (SELECT id FROM t006_cities WHERE code=POLE), CASE WHEN length(ARTMIN)>0 THEN substr(ARTMIN,2,length(ARTMIN)-2) || CASE substr(ARTMIN,-2,1) WHEN "'" THEN "" ELSE " " END ELSE "" END || NCCENR, DEP || substr(1000+COM, -3), (SELECT name FROM t006_cities WHERE code=POLE) != (CASE WHEN length(ARTMIN)>0 THEN substr(ARTMIN,2,length(ARTMIN)-2) || CASE substr(ARTMIN,-2,1) WHEN "'" THEN "" ELSE " " END ELSE "" END || NCCENR) FROM "france2010" WHERE POLE IN (SELECT code FROM t006_cities) AND ACTUAL!=2;
Les requêtes suivantes permet détecter les arrêts et les routes qui ne sont plus liées à une commune existante :
SELECT * FROM t007_connection_places WHERE city_id NOT IN (SELECT id FROM t006_cities WHERE id=city_id); SELECT * FROM t060_road_places WHERE city_id NOT IN (SELECT id FROM t006_cities WHERE id=city_id);
SELECT 1688849860499936 + POLE, 1688849860499936 + (CASE DEP WHEN "2A" THEN 20 WHEN "2B" THEN 20 ELSE DEP END *1000+COM), CASE WHEN length(ARTMIN)>0 THEN substr(ARTMIN,2,length(ARTMIN)-2) || CASE substr(ARTMIN,-2,1) WHEN "'" THEN "" ELSE " " END ELSE "" END || NCCENR, DEP || substr(1000+COM, -3) FROM "france2010" WHERE ACTUAL=2 AND DEP="79";
Toutes les communes de France base 2010 : attachment:france.sql
Sidebar
SYNTHESE Documentation
Specifications
Developer documentation
Database
API
CMS template syntax
Interoperability
Administrator manual