etalab / geohisto

[UNMAINTAINED] Historic information for French regions, counties, overseas collectivities and towns based on INSEE and Wikipedia data, exported as (re)usable CSV files.
Other
28 stars 1 forks source link

Communes appartenant à plusieurs EPCI en même temps #56

Open jdesboeufs opened 7 years ago

jdesboeufs commented 7 years ago

Bonjour,

J'ai tenté de chaîner les différents types d'objets dans geohisto, et je rencontre quelques difficultés avec les EPCI.

Par exemple lorsque je travaille sur la commune fr:commune:54084@1952-11-14, je découvre qu'elle est référencées dans plusieurs EPCI actives. Je m'attendais à ce qu'une seule EPCI soit active en date d'aujourd'hui.

L'objet commune (adapté par mon script) :

{ id: 'fr:commune:54084@1952-11-14',
     insee_code: '54084',
     name: 'Mont-Bonvillers',
     ancestors: [ 'fr:commune:54084@1942-01-01' ],
     parents:
      [ 'fr:departement:54@1871-09-07',
        'fr:epci:245403003@2002-01-01',
        'fr:epci:245400825@2003-01-01',
        'fr:epci:245400825@2004-01-01',
        'fr:epci:245400825@2005-01-01',
        'fr:epci:245400825@2006-01-01',
        'fr:epci:245400825@2007-01-01',
        'fr:epci:245400825@2008-01-01',
        'fr:epci:245400825@2009-01-01',
        'fr:epci:245400825@2010-01-01',
        'fr:epci:245400825@2011-01-01',
        'fr:epci:245400825@2012-01-01',
        'fr:epci:245400825@2013-01-01',
        'fr:epci:245400825@2014-01-01',
        'fr:epci:245400825@2015-01-01',
        'fr:epci:245400825@2016-01-01',
        'fr:epci:200070290@2017-01-01' ],
     population: 979,
     insee_modification: '0',
     start_date: '1952-11-14',
     kind: 'commune' }

Les EPCI "parentes" actives en date d'aujourd'hui :

[ 'fr:epci:245400825@2005-01-01',
  'fr:epci:245400825@2006-01-01',
  'fr:epci:245400825@2007-01-01',
  'fr:epci:245400825@2008-01-01',
  'fr:epci:245400825@2009-01-01',
  'fr:epci:245400825@2010-01-01',
  'fr:epci:245400825@2011-01-01',
  'fr:epci:245400825@2012-01-01',
  'fr:epci:245400825@2013-01-01',
  'fr:epci:245400825@2014-01-01',
  'fr:epci:245400825@2015-01-01',
  'fr:epci:245400825@2016-01-01',
  'fr:epci:200070290@2017-01-01' ]
Error: Multiple parents are matching

Normalement seule la dernière devrait l'être, et je valide par connaissance du terrain, j'y suis en ce moment même :)

jdesboeufs commented 6 years ago

@davidbgk @noirbizarre ? :)

davidbgk commented 6 years ago

@jdesboeufs j'ai l'impression que le fichier des EPCI répertorie les informations pertinentes, à savoir les communes rattachées pour une EPCI à une date donnée, et c'est ensuite ton script qui doit faire le tri entre ce qui constitue de l'information historique et ce qui est en vigueur aujourd'hui (ou à une date qui t'intéresse) ?

Dans ton exemple j'ai l'impression que ce sont les 2 dernières qui auraient de la valeur ? Ou peut-être s'en tenir aux @2017 ? Je laisse @noirbizarre continuer je n'ai pas beaucoup bossé sur cette partie alors je dis sûrement de grosses bêtises :)

jdesboeufs commented 6 years ago

@noirbizarre @davidbgk je ne comprends pas l'explication, mais je continue de penser que les EPCI "éteintes" devraient avoir une date de fin.

noirbizarre commented 6 years ago

@jdesboeufs Les EPCI éteintes ont bien une date de fin, mais l'objet commune référence tous les parents connus, y compris les éteints. Sur les EPCI, la version actuelle est confrontée à un autre soucis: le changement de nom décleanchant une nouvelle zone, la source de référence des noms (ie. les fichiers du dépôt) n'est pas fiable. D'une année sur l'autre le format change, les noms changent, on a beaucoup de faux positif malgré le nettoyage qui est fait. Ca génère plus d'EPCI que la réalité. Il faudrait construire ça à partir de DB/Wikpedia une bonne fois pour toute.

Dans ton cas particulier, si tu cherche à avoir l'EPCI en cours, étant donné qu'une commune ne peut être enregistré qu'à un seul EPCI à instant T, c'est le plus récent qui est valable (ie. fr:epci:200070290@2017-01-01). Pas besoin de résoudre chaque EPCI pour savoir s'il a une date de fin.

(le geoid ne contient pas la date de fin, sinon il n'est pas durable)