= Territoria = [[PageOutline]] ''Territoria'' est à la fois : * une base de données hiérarchique des territoires, construite à partir de différentes sources publiques. * un ensemble d'outils permettant de mettre à jour, exporter et manipuler cette base de données * une [wiki:TerritoriaWeb application web] permettant de se déplacer dans la hiérarchie des territoires et de la visualiser Actuellement la base ''Territoria'' contient les collectivités territoriales suivantes : * régions * départements * arrondissements départementaux * cantons * parcs naturels régionaux * pays (de France) * intercommunalités (ie EPCI) * communes * arrondissements communaux * communes rattachées ainsi que diverses informations sur les communes : * code postal * population * aire urbaine * périmètre de transports urbains * littoral * massif montagneux ''Territoria'' est en développement depuis le 25 décembre 2008. == Objectifs == ''Territoria'' est surtout conçue comme un composant destiné à être intégré dans d'autres applications ([wiki:Cosmetic], [wiki:Metanol], etc). La structure de la base ''Territoria'' est suffisamment générique pour pouvoir être étendue à d'autres pays que la France ou à d'autres informations sur les territoires. == Licence et copyright == L'application ''Territoria'' est un logiciel libre sous licence [http://www.fsf.org/licensing/licenses/agpl-3.0.html GNU Affero General Public License] version 3 ou supérieure. La base de données ''Territoria'' est sous [http://creativecommons.org/licenses/by-sa/3.0/deed.fr licence Creative Commons paternité partage à l’identique]. Copyright © 2008, 2009 [http://www.easter-eggs.com/ Easter-eggs] & Emmanuel Raviart == Technique == ''Territoria'' utilise les outils suivants : * langage de programmation [http://www.python.org/ Python] * mapper objet-relationnel [http://www.sqlalchemy.org/ SQLAlchemy] ''Territoria'' a été testée sur les bases de données : [http://www.postgresql.org/ PostgreSQL] et [http://www.sqlite.org/ SQLite]. Pour connaître la liste précise des dépendances, ainsi que les versions nécessaires, consulter le [http://hg.infos-pratiques.org/territoria/file/tip/setup.py fichier setup.py] (variable install_requires notamment). == Téléchargement == === Téléchargement de l'application === Vous pouvez récupérer les sources de la dernière version : * soit en utilisant [http://mercurial.selenic.com/ Mercurial] : {{{hg clone http://hg.infos-pratiques.org/territoria}}} * soit en naviguant dans [http://hg.infos-pratiques.org/territoria/file/tip l'interface web du dépôt Mercurial] * soit en récupérant une archive ("snapshot") depuis cette même interface web. === Téléchargement de la base de données === Vous pouvez récupérer un ''dump'' SQL de la base de données généré à partir de SQLite : * soit en utilisant [http://mercurial.selenic.com/ Mercurial] : {{{hg clone http://hg.infos-pratiques.org/territoria-database-sqlite}}} * soit en naviguant dans [http://hg.infos-pratiques.org/territoria-database-sqlite/file/tip l'interface web du dépôt Mercurial] * soit en récupérant une archive ("snapshot") depuis cette même interface web. '''Note''' : Nous ne fournissons pas actuellement de dump PostgreSQL de ''Territoria''. Si vous souhaitez utiliser ''Territoria'' avec PostgreSQL (par exemple pour [wiki:Comarquage] ou [wiki:Cosmetic]), vous devez construire la base SQL à partir des données. Cf ci-dessous. === Téléchargement des données permettant la constitution initiale de la base de données === Ces données se présentent sous formes de fichiers textes (CSV) provenant de différentes sources (cf ci-dessous). Ces fichiers peuvent-être utilisés pour le remplissage initial de la base de données, lorsqu'on souhaite la reconstruire à partir de zéro. Vous pouvez les récupérer : * soit en utilisant [http://mercurial.selenic.com/ Mercurial] : {{{hg clone http://hg.infos-pratiques.org/territoria-source-data}}} * soit en naviguant dans [http://hg.infos-pratiques.org/territoria-source-data/file/tip l'interface web du dépôt Mercurial] * soit en récupérant une archive ("snapshot") depuis cette même interface web. == Installation et configuration == === Installation et configuration de l'application === {{{ cd territoria sudo python setup.py install cd .. }}} Modifier le fichier de configuration `development.ini` en fonction de votre choix de base de données. Pour utiliser SQLite, s'assurer que les lignes suivantes y figurent : {{{ [Territoria] sqlalchemy.url = sqlite:///chemin/de/la/future/base/territoria.db }}} Note : Dans la dernière ligne ci-dessus, `sqlite:` doit être suivi de 3 `/` si le chemin vers le fichier est relatif ou de 4 `/` s'il est absolu. === Création et initialisation de la base de données === La base de données des territoires peut être créée : * soit à partir d'un ''dump'' existant, * soit en important l'ensemble des fichiers sources ayant servi à la constituer. Ces 2 méthodes sont détaillées ci-dessous. ==== Création de la base à partir d'un ''dump'' existant ==== Après avoir téléchargé le ''dump'' SQL de la base de données `territoria-database-sqlite` (cf ci-dessus), faire : {{{ cd territoria-database-sqlite export TERRITORIA_DUMP=`pwd` cd - }}} Puis, créer la base de données SQLite à partir du ''dump'' SQL. {{{ cd territoria sqlite3 -init ${TERRITORIA_DUMP}/territoria.sql development.db .quit }}} ==== Création de la base en important l'ensemble des fichiers sources ayant servi à la constituer ==== Après avoir téléchargé les données `territoria-source-data` (cf ci-dessus), faire : {{{ cd territoria-source-data export TERRITORIA_SOURCE_DATA=`pwd` cd - }}} Puis, créer la base de données : {{{ cd territoria territoria/scripts/create_database.py development.ini }}} À partir de maintenant, on peut soit importer la totalité des données, soit importer les données manuellement une par une. Import total : {{{ territoria/scripts/populate_database.sh development.ini ${TERRITORIA_SOURCE_DATA} }}} Import manuel : exécuter les étapes suivantes. Initialisation des territoires de base : {{{ territoria/scripts/init_database.py development.ini }}} Importation des données territoriales provenant de l'INSEE (communes, cantons, arrondissements, départements et régions) : {{{ territoria/scripts/import_insee_code_officiel_geographique.py development.ini ${TERRITORIA_SOURCE_DATA}/insee/code-officiel-geographique/ }}} Importation des données de l'INSEE sur la population des communes : {{{ territoria/scripts/import_insee_population.py development.ini ${TERRITORIA_SOURCE_DATA}/insee/population-et-logements-par-commune/ }}} Importation des données territoriales provenant de l'Observatoire des territoires (aires urbaines, intercommunalités, communes littorales, communes de massifs montagneux, pays, parcs naturels régionaux et périmètres de transports urbains) : {{{ territoria/scripts/import_observatoire_des_territoires_aires_urbaines.py development.ini ${TERRITORIA_SOURCE_DATA}/observatoire-des-territoires/data_aire_urbaine.csv territoria/scripts/import_observatoire_des_territoires_epci.py development.ini ${TERRITORIA_SOURCE_DATA}/observatoire-des-territoires/data_epci.csv territoria/scripts/import_observatoire_des_territoires_littoraux.py development.ini ${TERRITORIA_SOURCE_DATA}/observatoire-des-territoires/data_loi_littoral.csv territoria/scripts/import_observatoire_des_territoires_massifs.py development.ini ${TERRITORIA_SOURCE_DATA}/observatoire-des-territoires/data_perimetre_massif.csv territoria/scripts/import_observatoire_des_territoires_pays.py development.ini ${TERRITORIA_SOURCE_DATA}/observatoire-des-territoires/data_pays.csv territoria/scripts/import_observatoire_des_territoires_parcs_naturels_regionaux.py development.ini ${TERRITORIA_SOURCE_DATA}/observatoire-des-territoires/data_pnr.csv territoria/scripts/import_observatoire_des_territoires_perimetres_transports_urbains.py development.ini ${TERRITORIA_SOURCE_DATA}/observatoire-des-territoires/data_ptu.csv }}} Calcul de la population cumulée des différents territoires français à partir de la population des communes : {{{ territoria/scripts/compute_aggregated_population.py development.ini }}} Importation du fichier des codes postaux provenant de Jérôme Galichon : {{{ territoria/scripts/import_galichon_codes_postaux.py development.ini ${TERRITORIA_SOURCE_DATA}/galichon/codes-postaux/insee.csv }}} Génération de la table des collectivités françaises (utilisée pour accélérer certaines recherches) : {{{ territoria/scripts/generate_french_collectivities_associations.py development.ini }}} Importation des données d'[http://www.openstreetmap.org OpenStreetMap] sur les communes (population, coordonnées et rectangle englobant (bounding box)) : {{{ wget http://hexagone.openstreetmap.fr/hexagone-latest.osm.bz2 bunzip2 hexagone-latest.osm.bz2 territoria/scripts/import_openstreetmap_towns.py development.ini hexagone-latest.osm YYYY-MM-DD territoria/scripts/extract_openstreetmap_town_boundaries.py development.ini hexagone-latest.osm boundaries.dat territoria/scripts/import_openstreetmap_town_bounding_boxes.py development.ini boundaries.dat YYYY-MM-DD }}} Note: YYYY-MM-DD est la date des données, pas de l'import. Cela est significatif si les données sont plus anciennes que la date de l'import. == Sources de données sur les territoires == * [http://www.insee.fr/fr/nom_def_met/nomenclatures/cog/cog.htm Code officiel géographique de l'INSEE] * [http://www.territoires.gouv.fr/zonages/p2_perim_bis.php Zonages de l'Observatoire des territoires] * [http://www.galichon.com/codesgeo/ Codes postaux de Jérôme Galichon] == Plus d'informations == Pour plus d'informations, vous pouvez consulter et/ou participer à la [wiki:ListesDeDiffusion liste de diffusion Infos-Pratiques].