Territoires, utilisation du plugin

L’objectif du plugin est de fournir un nouvel objet éditorial couvrant l’ensemble des zones géographiques du continent à la subdivision minimale d’un pays. De fait, ce plugin pourrait à terme remplacer les plugins Pays, Continents, COG et Géographie en fournissant un objet unique et servir de pivot à d’autres plugins de géographie comme GIS, Contours ou Cartes Choroplèthes.

Présentation

L’objectif du plugin est de fournir un nouvel objet éditorial couvrant l’ensemble des zones géographiques du continent à la subdivision minimale d’un pays.

Le plugin fournit, les élément standard d’un objet éditorial « territoire », comme son interface privée (édition, liste, configuration) et une interface de peuplement des données à partir de l’API REST du plugin Nomenclatures. Il propose également un mécanisme d’extension des données attachées à chaque territoire.

Installation

Le plugin s’installe comme n’importe quel plugin SPIP. Il nécessite les plugin Saisies pour formulaires et Cache Factory.

Concepts

Les types de territoire

De façon à retrouver quelque peu la logique actuelle des objets géographiques et de coller à la standardisation, les objets « territoire » sont classés en quatre groupes ou types, à savoir :

  • Les zones, qui délimitent des zones supranationales par des regroupements de pays en continents, sous-continents et autres régions conformément à la norme UN M49. Le type est zone.
  • les pays, que l’on peut considérer comme le type pivot des territoires et dont la liste est issue de la norme ISO 3166-1. Le type associé aux pays est country ;
  • les subdivisions d’un pays, qui en organisent, conformément à la norme ISO 3166-2, la structure administrative à l’instar des länder en Allemagne ou des régions et départements en France. Le type associé est subdivision.
  • les infra-subdivisions d’un pays, qui raffinent les subdivisions standard mais ne font pas partie de la norme ISO 3166-2. Elles possèdent une identification spécifique qui varie d’un pays à un autre. C’est le cas, par exemple, des arrondissements, cantons et communes de France dont l’identifiant est le code INSEE ou des comtés américains identifiés par le code FIPS. Le type associé est infrasubdivision.
  • et depuis la version 1.5.0, les zones protégées, qui regroupent les parcs et réserves naturelles terrestres ou marines de tout genre. Elles possèdent une identification internationale fournit par l’organisation Protected Planet au travers de la base de données mondiale nommée WDPA. Le type associé est protected_zone.

Les catégories de territoire

La norme ISO 3166-2 attribue un code à chaque subdivision administrative d’un pays et identifie la catégorie de la subdivision : le land en Allemagne, la région, le département, la collectivité territoriale en France, le canton en Suisse, etc. Cette typologie est essentielle pour comprendre l’organisation administrative des pays.

Le plugin Territoires étend cette notion de catégorie aux autres types de territoire pour distinguer les continents des autres régions du monde (sous-continents par exemple), les pays des zones assimilées (non utilisé pour l’instant) et les infra-subdivisions entre elles.

L’identification des territoires

Codification primaire

Comme tout objet éditorial, un territoire possède un id unique. Néanmoins, il est nécessaire d’utiliser un identifiant unique et stable pour désigner chaque territoire. Le plugin utilise pour cela les normes en vigueur et propose un champ « iso_territoire » qui contient l’identifiant unique choisi :

  • Le code UN M49 à trois caractères numériques pour les zones du monde (extension du code numérique 3166-1 des pays) ;
  • Le code ISO 3166-1 alpha2 pour les pays ;
  • Le code ISO 3166-2 pour les subdivisions composé du code alpha2 du pays, un tiret et d’un code à trois caractères alphanumériques ;
  • Un code spécifique national pour les infra-subdivisions précédé par le code ISO 3166-1 alpha2 du pays (même principe que la norme ISO 3166-2),
  • Le code numérique international de l’organisation Protected Planet, à savoir, le WDPA ID.

L’hétérogénéité de cet identifiant n’est pas un problème car seule son unicité est importante.

Codifications alternatives

Si le plugin a fait un choix d’identifiant, il n’en reste pas moins que la plupart des territoires possèdent d’autres identifiants standardisés soit au niveau mondial soit au niveau national.
Par exemple, le pays possède 2 autres codes au sens de la norme ISO 3166-1, à savoir, le code alpha3 et le code numérique à trois chiffres.

Pour les subdivisions, leur caractère national fait qu’il existe en parallèle des codes nationaux comme celui de l’INSEE (COG) ou des codes communautaires comme les NUTS de l’union européenne.

Étant donné que ces codifications alternatives sont nombreuses et variées, elles ne sont pas intégrées à l’objet lui-même mais sont accessibles au travers d’une table complémentaire nommée spip_territoires_extras si l’utilisateur le souhaite.

La hiérarchisation des territoires

Parenté directe

Au sein de chaque type, l’organisation des territoires est hiérarchique (sauf pour les pays bien entendu). L’ensemble des objets territoire tout type confondu forme aussi une hiérarchie de l’objet « monde » à la plus petite subdivision ou infra-subdivision d’un pays.

Parenté alternative

Il est possible que certaines subdivisions possèdent un parent alternatif construit au travers du champ « iso_parent_alt » de l’objet territoire. C’est le cas des communes françaises qui, par défaut, appartiennent à un arrondissement mais peuvent aussi appartenir à une EPCI.

Raccourcis d’appartenance

Pour simplifier certaines requêtes et aussi conserver un mode d’interrogation existant dans les plugins de géographie actuels, la parenté directe est enrichie de liens d’appartenance qui redondent l’information de parenté mais évitent de parcourir toute l’arborescence.

Chaque objet territoire, si cela a un sens, possède donc un lien direct avec son pays d’appartenance ou son continent d’appartenance. Cela est particulièrement utile aux subdivisions ou infra-subdivisions liées à un pays et aux pays liés à un continent.

La description des territoires

Les normes ISO 3166 ou UN M49 fournissent à la fois un code d’identification unique du territoire mais aussi un nom normalisé. Ce nom est intégré à l’objet territoire dans le champ « iso_titre ».

Néanmoins, ce nom n’est pas utilisé comme titre de l’objet (au sens SPIP). Pour cela on utilise le nom d’usage qui parfois coïncide avec le nom de la norme mais parfois pas. C’est souvent le cas en français ou le nom normalisé possède souvent l’article entre parenthèses, article que l’on préfère souvent omettre dans les usages. Ainsi, l’objet territoire possède un champ « nom_usage » qui fait office de titre de l’objet. Les noms sont toujours des chaines multi-langues autorisant toutes les traductions supportées par SPIP.

Il est possible pour chaque objet territoire de saisir un descriptif qui pourra être affiché ensuite en regard de l’objet. Ce texte explicatif est le seul champ modifiable manuellement. Il est stocké comme une chaine multi-langues dans le champ « descriptif » de l’objet territoire.

Comme tout objet éditorial le territoire peut être agrémenté d’un logo entièrement géré par l’API SPIP correspondante.

Par défaut, l’objet territoire ne propose aucune caractéristique géographique comme la population, la densité, les contours géographiques, etc. Par contre, comme pour les codes alternatifs, le plugin propose une gestion agnostique des caractéristiques via la table de liens spip_territoires_extras.

Les unités de peuplement

Étant donné le nombre important de territoires, la structuration par type et la nécessité de conserver une logique arborescente, le peuplement des territoires ne peut se faire ni en une seule fois ni territoire par territoire. Les territoires sont donc peuplés par groupe, appelé « unité de peuplement ».

Une unité de peuplement coïncide soit avec un type, comme pour les régions du monde ou les pays, soit avec le couple (type, pays) comme pour les subdivisions, infra-subdivisions ou zones protégées.

De fait, les régions du monde et les pays sont chargés séparément et il n’est pas possible de choisir une liste de régions ou une liste de pays. A contrario, pour les subdivisions, zones protégées et infra-subdivisions, le chargement se fait par pays, par exemple, toutes les subdivisions de la France ou de l’Allemagne.

Le vidage des territoires suit la même logique par unité de peuplement pour assurer la cohérence d’ensemble des territoires.

L’interface utilisateur

L’interface utilisateur fournit par le plugin Territoires ne concerne que l’espace privé. Elle permet, au travers de plusieurs pages d’assurer les fonctions d’édition, de consultation, de peuplement et de configuration. Pour simplifier la navigation, ces pages sont accessibles par un menu de navigation unique.

Page liste des territoires

La page territoires affiche, comme tous les objets SPIP, la liste des territoires. Par défaut, tous les territoires sont listés et l’onglet « Tous » est activé. L’utilisateur a la possibilité d’afficher la liste des territoires pour un type donné via les onglets Zones, Pays, Subdivisions et Infra-subdivisions.

Il est aussi possible d’identifier la liste des territoires édités via un filtre de second niveau.

Liste des territoires

Page peuplement des territoires

La page peupler_territoires affiche, le formulaire de chargement ou de vidage d’un ensemble de territoires sous la forme de plusieurs onglets. Le formulaire #FORMULAIRE_PEUPLER_TERRITOIRES propose de choisir l’action (charger ou vider), les types de territoire à charger sachant que les subdivisions, infra-subdivisions ou les zones protégées sont proposées par pays afin d’éviter de charger trop de données en une fois.

Enfin, le formulaire propose des options de chargement pour ajouter les caractéristiques additionnelles ou les codes alternatifs.

Formulaire de peuplement

Page configuration du plugin

La configuration du plugin proprement dite se limite au choix des types d’objet pouvant se lier à un ou plusieurs territoires (page configurer_territoires).

Configuration

Page d’un objet territoire

La page territoire affiche la fiche objet de chaque territoire. Comme tous les objets SPIP elle est composée d’une zone centrale dans laquelle est affichée le titre, le descriptif du territoire et la hiérarchie des territoires ascendants si elle existe. Si des données additionnelles existent et ont été chargées pour le territoire choisi, elles sont affichées dans un tableau nommé « Caractéristiques » via le pipeline affiche_milieu.

Dans le prolongement de la fiche centrale le plugin affiche la liste des territoires enfants (si ils existent) via le pipeline affiche_enfants et le squelette prive/objets/contenu/territoire-enfants.html.

La boite d’information visualise outre l’id du territoire, son identifiant normalisé (champ « iso_territoire »), son type et sa catégorie. Elle est suivie par le bloc logo.

Enfin, via le pipeline affiche_gauche, le plugin affiche les codes alternatifs du territoire.

Fiche objet d’un territoire

Plugins connexes

Le plugin Territoires tire l’ensemble de ses données du plugin Nomenclatures (préfixe isocode) qui offre une API REST pour un certain nombre de données normalisées de type géographique ou linguistique. Pour ajouter des territoires non encore disponibles dans le plugin il faut en fait les rendre disponibles dans le plugin Nomenclatures. De fait, ces territoires seront automatiquement détectés par le plugin Territoires et proposés au chargement.

Le plugin Territoires sert aussi de base au plugin Contours des Territoires qui propose d’ajouter des contours GeoJSON aux territoires. Le plugin Territoires accueille ainsi le formulaire de chargement de Contours dans sa page de peuplement, le contour lui-même étant affiché dans la fiche objet du territoire comme un objet GIS. Les contours sont aussi mis à disposition au travers de l’API REST de Nomenclatures.

Évolutions à prévoir pour le plugin

  • Ajout des traductions des noms d’usage voire des titres normalisés (à faire dans le plugin Nomenclatures)
  • Permettre de consulter la liste des catégories disponibles pour un type donné

Pour aller plus loin avec la compréhension du plugin, un guide de conception en PDF est fourni avec le code.

Discussion

4 discussions

  • 11

    Impossible de charger les infrastructures subdivisons (radio disabled) et Une erreur s’est produite lors du peuplement des infra-subdivisions du ou des pays « FR ». depuis la nouvelle version

    • Quelle version utilises tu ?

    • La dernière en fait sur l’onglet peupler (Infra-subdivisions) il propose que la france dans les choix (Choisissez des territoires (obligatoire)) alors qu’il devrait proposer les départements je pense sous forme de check box

    • Alors la dernière que j’ai sorti c’est la 1.5.5, vérifie que c’est bien celle-là stp.

      Ensuite, pour charger des infra-subdivisions, il faut que les subdivisions de rattachement existent. Pour la france, les subdivisions sont les régions et les départements. Il faut d’abord les charger à partir de l’onglet subdivisions. Après, tu verras apparaitre la possibilité de charger les arrondissements et communes dans l’onglet infra-subdivisions.

    • Ok, il ne propose pas la 1.5..5 mais que la 1.5.4

    • j’ai mis la 1.5.5 même problème le champ infra subdivision est didabled et ne veut pas charger

    • Peux-tu me montrer une image des onglets subdivisions et infra-subdivisions stp ?

    • Subdivisons

    • infra subdivisions, en revanche je remarque que les tables du plugins isopode sont toutes vides

    • par contre dans l’onglet peupler de infra division c’est disable

    • Oui mais c’est vider qui est disable pas Peupler. Donc tu peux peupler les infra-subdivisions qu’il te propose.

      D’ailleurs il faut savoir que lorsque tu installes le plugin pour la première fois, il charge automatiquement les régions du monde, les pays, les subdivisions françaises et les infra-subdivisions françaises, ce qui fait environ 38000 territoires. Les infra-subdivisions vont être chargées en asynchrone, par paquet, il faudra quelques minutes pour toutes les avoir.
      Donc c’est étonnant que tu ne les aies pas aussi.

    • Bonjour, le fait d’être en local peut-être. Bref il me les propose toujours pas....

    Répondre à ce message

  • 2
    Pasces

    Bonjour
    Ce plugin semble réservé aux entités géographiques normalisées, cest a dire figurant dans une norme officielle.
    Est il possible de l’étendre à des territoires de géographie humaine tels que le bord de mer, le grand sud, la moyenne montagne, le pourtour méditerranéen ou le bassin lyonnais ?

    • Rien n’est impossible mais c’est exact que Territoires crée des objets « pivots » dont les identifiants sont remplis avec une nomenclature officielle, internationale ou nationale. C’est l’objet du plugin. Après Contours permet de lier un contour géographique à chaque territoire.

      Donc pour créer des objet Territoire du type dont tu parles il faudrait pouvoir les identifier d’une façon ou d’une autre.

      Dans quel but aimerais-tu pouvoir créer de tels territoires ?

    • En cartographiant des concepts imprécis mais courants, comme « moyenne montagne », il serait possible d’améliorer la recherche et renvoyer les articles dont la coordonnée associée est en zone « moyenne montagne », même si le terme ne figure pas dans l’article.

    Répondre à ce message

  • 11

    Bonjour,
    merci beaucoup pour ce plugin.
    Serait-il possible d’y ajouter les données concernant les parcs nationaux, parcs naturels régionaux, réserves, etc. ?
    Si jamais, quelle serait la procédure ?
    MErci !

    • Hello,

      Qu’appelles-tu des données sur les parcs nationaux ? Quels types de données liés à quoi ?

    • je pense en particulier aux aspects « contours ».
      L’idée serait de pouvoir avoir les mêmes infos pour un PNR que pour un département par exemple.
      Ces structures sont aussi une forme de « subdivision ».

    • Alors j’ai regardé un peu l’existant en France.
      J’ai noté que les parcs possèdent un identifiant normalisé, ce qui est bien, et on trouve les contours en Open data.

      Coté rattachement, il faut voir à quel territoire on peut rattacher les parcs régionaux, pour les nationaux c’est simple.

    • super !
      les PNR, parcs naturels régionaux sont rattachés aux régions, mais il y a plusieurs parcs rattachés à 2 régions...

    • Hello,
      Ce week-end j’ai inséré la nomenclature des parcs naturels. Pour ce faire j’ai :

      • inséré les parcs nationaux, marins et régionaux dans la liste des subdivisions en les rattachant à la France directement pour éviter de choisir la région pour certain : à voir si on laisse comme ça.
      • l’id par défaut est celui international appelé WDPA ID car il fonctionne pour tous les parcs naturels hors France
      • mais il y a la possibilité d’utiliser l’id INPN/MNHN qui est de la forme FRxxxxx. L’un ou l’autre fonctionne.

      Donc coté nomenclature c’est bon, tu vérifieras si la liste te parait bonne.

      Maintenant, il faut faire évoluer Contours des territoires pour permettre d’associer ces cartes GIS à ces parcs. Là, j’ai cherché mais je n’ai trouvé qu’un fichier de 21Mo et difficilement lisible car il n’a aucun id reconnaissable, que le nom qui n’est pas forcément écrit de la même façon.

      J’aimerais plutôt trouver une API pour ne pas avoir à trimballer un fichier json dans le plugin. Opendatasoft ne référence pas les parcs malheureusement. Aurais-tu une piste de ton coté ?

    • Super, merci !
      Il y a bien le geoportail, qui pointe sur les données de l’INPN :
      https://www.geoportail.gouv.fr/donn...
      https://inpn.mnhn.fr/accueil/recher...
      Je peux rechercher un peu plus si besoin

    • Il y a aussi des choses ici, et apparemment des webservices ?
      https://inpn.mnhn.fr/telechargement...

    • Oui j’ai bien vu tout ça mais c’est pas très exploitable car il faut convertir du shape au json pour obtenir des fichiers qui pèsent plusieurs Mo chacun car la précision a l’air assez importante.

      J’ai aussi essayé de trouver des API comme opendatasotf mais je ne trouve rien.

      Si tu peux voir de ton coté je suis preneur. Peux-tu aussi vérifier si la liste des parcs est la bonne pour toi ?

    • Hello,

      C’est fait les parcs naturels sont disponibles : la nomenclature sous Territoires 1.5.0 et les contours via le plugin additionnel Contours 1.0.6.

      Les parcs naturels sont considérés comme des subdivisions et donc chargés tels que. Pour les contours, le choix est donné du type de parcs.

      Dites moi ce que vous en pensez.

    • bonjour,
      c’est super, merci !
      De mon point de vue, c’est complet.
      Juste une petite remarque : on parle, me semble-t-il de « parc national » et non de « parc naturel national ».
      Quelques questions :
      -  Finalement, as-du trouvé d’autres outils pour générer ces données ? En ce qui concerne la complexité des geojson, il y a dans GIS geometries une fonction qui permet de les simplifier, peut-être cela peut-il aider ?
      -  Dans la foulée, une autre entité pourrait s’avérer utile : les « Réserves naturelles »...
      -  Et puis, dans le registre « doléances » : serait-il possible, à terme, de permettre de sélectionner les territoires qu’on souhaite peupler ou vider ? Par défaut, il me semble qu’on charge/vide tout (pour un pays), En particulier, on charge tous les objets GIS correspondants. Du côté de mon usage, je ne souhaite que certains territoires, et n’ai pas l’utilité de garder les données de tous les autres. J’ai peut-être raté quelque chose ?

      En tout cas, merci pour ce travail !

    • Oui tu as raison, c’est parc national, je vais changer le terme.

      Pour les contours j’ai sué mais j’ai trouvé entre QGIS et MapShaper des outils qui m’ont permis de transformer des shapes en geoJSON et de les réduire drastiquement pour permettre leur traitement sans timeout.

      Sinon oui, on pourra rajouter les réserves naturelles. Je vais d’abord faire évoluer le plugin pour prendre en compte un nouveau type de territoire « zone protégée » pour accueillir les parcs et toutes les autres zones au sens du WDPA. D’ailleurs la codification de base des parcs est le code WDPA.

      Pour l’instant je peaufine des évolutions moins visibles pour faciliter le peuplement en gérant le besoin de mise à jour et son affichage dans le formulaire (un peu comme les plugins). Je ne suis plus très loin, cette version sera surement disponible avant la fin du mois en, zip.

      Coté peuplement j’utilise ce que j’appelle une unité de peuplement qui est le couple (type, pays). Je ne souhaite pas aller plus loin pour des raisons de complexité de gestion. Maintenant, pour les contours tu peux prendre les parcs français, soit 80 en tout. Ça ne se voit pas dans une base de données franchement même si tu en utilises la moitié ou moins. C’est aussi plus sur car sinon on risque d’avoir des désynchronisations entre les territoires et leurs contours.

    Répondre à ce message

  • 7

    Merci pour ce plugin très utile, mais je rencontre un problème dans le chargement (peuplement) des données d’infra-subdivisions pour la France (je n’ai pas testé pour d’autres pays) :
    -  le chargement des infras-subdivisions prend un certain temps et termine sur une page blanche (timeout ?).
    -  Si je vérifie dans le base, j’ai un nombre non négligeable d’infra-subdivisions, mais il semble qu’il en manque beaucoup.
    -  Si je relance la procédure de peuplement, même page blanche après quelques secondes d’attente et les données déjà présentes en base sont doublées.
    -  Si je tente de vider les données d’infra-subdivsions le formulaire affiche "Aucun vidage n’est nécessaire pour les infra-subdivisions du ou des pays « FR »."
    christophe

    • Bonjour,

      Oui c’est un problème car l’import est synchrone, donc il faut que le traitement ne dure pas plus qu’une limite définie dans php.ini. Il faut augmenter la variable max_execution_time à 300 ou 400 (secondes). Ca devrait aller mieux.

      Après si cela dure il faudra que j’envisage un job asynchrone.

    • En effet, la variable était à 30. A 300, ça marche.
      Merci.

    • Chouette.

      Une petite question, comment as-tu fait pour vider les éléments partiellement rechargés afin de relancer un peuplement complet ?

    • Je faisais des tests avec un site quasi vide, du coup, j’ai simplement désinstallé le plugin pour supprimer toutes les données (puis réinstallation, etc, etc.). Il y avait d’autres possibilités ?

    • Il y a plein d’hébergements où on n’a pas la main sur changer le timeout. Du coup pour que ce soit vraiment utilisable à grande échelle (et que ça puisse vraiment un jour remplacer Pays, Géographie, etc), il me semble qu’il va forcément falloir de l’asynchrone, ou autre méthode.

    • Oui surement.

      Après dire que c’est pas utilisable ça me parait exagéré suivant le type de territoires dont on parle. Les pays par exemple ça ne pose jamais de problème. Les problèmes peuvent arriver uniquement avec les subdivisions à plusieurs milliers d’objets.

      Sinon, tu ferais comment pour passer en asynchrone ?

    • Je dirais que la méthode la plus simple (en réinventant le moins de chose), ce serait de lancer un ou plusieurs jobs, et dans ceux-ci contrôler où ça en est et continuer l’import tant que ce n’est pas fini.

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom