Commit 6d05fc7a authored by Benjam's avatar Benjam
Browse files

id des regroupements de territoires sont donnés en input + correction fichier...

id des regroupements de territoires sont donnés en input + correction fichier PNR (codes insee < 10 000 incorrects, reordonancement par ordre alphabétique, correction composition communale PNR pour commune qui appartient à 2 PNR et suppression du PNR qui n'en était pas un à cause d'elle, changement numerotation regroupements communes, modif nom carré métropolitain de Lyon) + ajout verification territoires pas en doublons dans differentes donnees sources + ajout calcul nb communes par territoire
parent 120f7fbf
This diff is collapsed.
id_regroupement_communes;nom_regroupement_communes;categorie_regroupement_communes
CARRE_METROPOLITAIN_LYONNAIS;Carré métropolitain de Lyon;CARRE_METROPOLITAIN_LYONNAIS
PNR-01;PNR des Alpilles;PNR
PNR-02;PNR des Ardennes;PNR
PNR-03;PNR d'Armorique;PNR
PNR-04;PNR de l'Aubrac;PNR
PNR-05;PNR de l'Avesnois;PNR
PNR-06;PNR Baie de Somme Picardie Maritime;PNR
PNR-07;PNR des Ballons des Vosges;PNR
PNR-08;PNR des Baronnies provençales;PNR
PNR-09;PNR des Boucles de la Seine;PNR
PNR-10;PNR de la Brenne;PNR
PNR-11;PNR de Brière;PNR
PNR-12;PNR de Camargue;PNR
PNR-13;PNR des Caps et Marais d'Opale;PNR
PNR-14;PNR des Causses du Quercy;PNR
PNR-15;PNR de Chartreuse;PNR
PNR-16;PNR Corbières-Fenouillèdes;PNR
PNR-17;PNR de Corse;PNR
PNR-18;PNR du Doubs Horloger;PNR
PNR-19;PNR de la Forêt d'Orient;PNR
PNR-20;PNR du Golfe du Morbihan;PNR
PNR-21;PNR des Grands Causses;PNR
PNR-22;PNR de Guyane;PNR
PNR-23;PNR du Gâtinais français;PNR
PNR-24;PNR du haut Jura;PNR
PNR-25;PNR du Haut-Languedoc;PNR
PNR-26;PNR de la Haute-Vallée de Chevreuse;PNR
PNR-27;PNR des Landes de Gascogne;PNR
PNR-28;PNR Livradois-Forez;PNR
PNR-29;PNR Loire-Anjou-Touraine;PNR
PNR-30;PNR de Lorraine;PNR
PNR-31;PNR du Luberon;PNR
PNR-32;PNR des Marais du Cotentin et du Bessin;PNR
PNR-33;PNR du marais poitevin;PNR
PNR-34;PNR de Martinique;PNR
PNR-35;PNR du Massif des Bauges;PNR
PNR-36;PNR Medoc;PNR
PNR-37;PNR de Millevaches en Limousin;PNR
PNR-38;PNR du Mont Ventoux;PNR
PNR-39;PNR de la Montagne de Reims;PNR
PNR-40;PNR des monts d'Ardèche;PNR
PNR-41;PNR du Morvan;PNR
PNR-42;PNR de la Narbonnaise en Méditerranée;PNR
PNR-43;PNR Normandie-Maine;PNR
PNR-44;PNR Oise-Pays de France;PNR
PNR-45;PNR du Perche;PNR
PNR-46;PNR du Pilat;PNR
PNR-47;PNR des Préalpes d'Azur;PNR
PNR-48;PNR des Pyrénées ariégeoises;PNR
PNR-49;PNR des Pyrénées catalanes;PNR
PNR-50;PNR Périgord-Limousin;PNR
PNR-51;PNR du Queyras;PNR
PNR-52;PNR de la Sainte-Baume;PNR
PNR-53;PNR Scarpe-Escaut;PNR
PNR-54;PNR du Vercors;PNR
PNR-55;PNR du Verdon;PNR
PNR-56;PNR du Vexin français;PNR
PNR-57;PNR des Volcans d'Auvergne;PNR
PNR-58;PNR des Vosges du Nord;PNR
SCOT-001;SCOT AGGLOMERATION LYONNAISE;SCOT
SCOT-002;SCOT BEAUJOLAIS;SCOT
SCOT-003;SCOT BUCOPA;SCOT
SCOT-004;SCOT DE LA BOUCLE DU RHONE EN DAUPHINE;SCOT
SCOT-005;SCOT DE LA DOMBES;SCOT
SCOT-006;SCOT DES MONTS DU LYONNAIS;SCOT
SCOT-007;SCOT DES RIVES DU RHONE;SCOT
SCOT-008;SCOT DU ROANNAIS;SCOT
SCOT-009;SCOT LOIRE CENTRE;SCOT
SCOT-010;SCOT NORD ISERE;SCOT
SCOT-011;SCOT OUEST LYONNAIS;SCOT
SCOT-012;SCOT SUD LOIRE;SCOT
SCOT-013;SCOT VAL DE SAONE - DOMBES;SCOT
\ No newline at end of file
......@@ -2,7 +2,7 @@ import pandas as pd
from pandas import DataFrame
from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater, verifier_absence_doublons
def charger(chemin_fichier):
......@@ -113,6 +113,7 @@ def charger(chemin_fichier):
)
_traduire_code_insee_vers_id_crater(df)
verifier_absence_doublons(df, 'id_commune')
return df
......
......@@ -3,7 +3,7 @@ import pandas as pd
from pandas import DataFrame
from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater, verifier_absence_doublons
def charger(chemin_fichier: Path, nom_variable : 'str') -> DataFrame:
......@@ -44,6 +44,7 @@ def charger(chemin_fichier: Path, nom_variable : 'str') -> DataFrame:
})
_traduire_code_insee_vers_id_crater(df)
verifier_absence_doublons(df, 'id_commune')
return df
......
......@@ -4,7 +4,7 @@ import numpy as np
from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater, traduire_code_insee_vers_id_departement_crater, \
traduire_code_insee_vers_id_region_crater, traduire_code_insee_vers_id_pays_crater
traduire_code_insee_vers_id_region_crater, traduire_code_insee_vers_id_pays_crater, verifier_absence_doublons
def charger_agreste_actifs_agricoles(chemin_fichier_zip, fichier):
log.info(" => Chargement fichier AGRESTE des actifs agricoles permanents depuis %s/%s", chemin_fichier_zip, fichier)
......@@ -67,6 +67,9 @@ def charger_agreste_actifs_agricoles(chemin_fichier_zip, fichier):
df = df.rename(columns={
'Nombre de personnes': 'actifs_agricoles_permanents'
})
verifier_absence_doublons(df, 'id_territoire')
return df
def charger_agreste_nb_exploitation_par_classes_ages_chef_exploitation(chemin_fichier_zip, fichier):
......@@ -129,6 +132,9 @@ def charger_agreste_nb_exploitation_par_classes_ages_chef_exploitation(chemin_fi
'De 50 à 59 ans': 'nb_exploitations_par_classes_ages_chef_exploitation.50_a_59_ans',
'60 ans ou plus': 'nb_exploitations_par_classes_ages_chef_exploitation.plus_60_ans',
})
verifier_absence_doublons(df, 'id_territoire')
return df
......@@ -208,7 +214,8 @@ def charger_agreste_nb_exploitations_et_sau_par_classes_superficies(chemin_fichi
]
]
verifier_absence_doublons(df, 'id_territoire')
return df
......@@ -228,8 +235,6 @@ def _renommer_groupes_colonnes_par_indicateur(df, nom_indicateur_prefixe_initial
return df
def _filtrer_et_ajouter_colonne_id_territoire(df):
mask_communes = df['COM'] != '............'
df.loc[mask_communes, "id_territoire"] = traduire_code_insee_vers_id_commune_crater(df.loc[mask_communes, 'COM'])
......
......@@ -6,14 +6,15 @@ from crater.territoires.outils import (
traduire_code_insee_vers_id_commune_crater,
traduire_code_insee_vers_id_epci_crater,
traduire_code_insee_vers_id_departement_crater,
traduire_code_insee_vers_id_region_crater
traduire_code_insee_vers_id_region_crater,
verifier_absence_doublons
)
def charger_source_hvn(chemin_fichier: Path) -> pd.DataFrame:
log.info(" => Chargement HVN depuis %s", chemin_fichier)
return pd.read_excel(
df = pd.read_excel(
chemin_fichier,
sheet_name='Feuil1',
usecols='A:J',
......@@ -43,6 +44,10 @@ def charger_source_hvn(chemin_fichier: Path) -> pd.DataFrame:
'hvn_score'
]
)
verifier_absence_doublons(df, 'id_commune')
return df
def importer_hvn(chemin_fichier_hvn: Path):
......@@ -54,7 +59,7 @@ def importer_hvn(chemin_fichier_hvn: Path):
def charger_surfaces_bio(chemin_fichier: Path) -> pd.DataFrame:
log.info(" => Chargement des surfaces bio depuis %s", chemin_fichier)
return pd.read_excel(
df = pd.read_excel(
chemin_fichier,
sheet_name='PV_Echelles',
usecols='A:S',
......@@ -96,6 +101,8 @@ def charger_surfaces_bio(chemin_fichier: Path) -> pd.DataFrame:
).query(
'typologie_territoire != "Toute_Zone"'
)
return df
def importer_surfaces_bio(chemin_fichier_surfaces_bio: Path) -> pd.DataFrame:
......@@ -116,4 +123,7 @@ def importer_surfaces_bio(chemin_fichier_surfaces_bio: Path) -> pd.DataFrame:
surfaces_bio.typologie_territoire)
# les na correspondent aux donnees non renseignées pour cause de confidentialité => on remplace par -1 pour pouvoir les repérer par la suite
surfaces_bio = surfaces_bio.fillna(-1)
verifier_absence_doublons(surfaces_bio, 'id_territoire')
return surfaces_bio.loc[:, ['id_territoire', 'surface_bio_ha']]
......@@ -5,7 +5,7 @@ from pandas import DataFrame
from crater.crater_logger import log
from crater.outils import calculerNoteParInterpolation2Seuils
from crater.pratiques_agricoles.gestionnaire_sources_pratiques_agricoles import importer_surfaces_bio
from crater.territoires.outils import ajouter_donnees_regroupements_de_communes_par_somme_donnees_communales, \
from crater.territoires.outils import ajouter_donnees_regroupements_communes_par_somme_donnees_communales, \
ajouter_donnees_pays_par_somme_donnees_regions, ID_FRANCE
......@@ -39,7 +39,7 @@ def _ajouter_donnees_surfaces_bio(
donnees_pratiques_agricoles.loc[
donnees_pratiques_agricoles.annee_dernier_mouvement_commune > 2020, 'surface_bio_ha'] = np.nan
donnees_pratiques_agricoles = ajouter_donnees_regroupements_de_communes_par_somme_donnees_communales(
donnees_pratiques_agricoles = ajouter_donnees_regroupements_communes_par_somme_donnees_communales(
donnees_pratiques_agricoles,
'surface_bio_ha'
)
......
......@@ -78,7 +78,7 @@ def _ajouter_colonne_region_appartenance_principale(donnees_besoins):
def _ajouter_colonnes_donnees_besoins_parcel(donnees_besoins, fichier_besoins_parcel, territoires):
besoins_parcel_arrondis_2_decimales = charger_besoins_parcel(fichier_besoins_parcel).round(2)
besoins_parcel_arrondis_2_decimales = _ajouter_besoins_regroupements_de_communes(
besoins_parcel_arrondis_2_decimales = _ajouter_besoins_regroupements_communes(
besoins_parcel_arrondis_2_decimales,
territoires
)
......@@ -91,7 +91,7 @@ def _ajouter_colonnes_donnees_besoins_parcel(donnees_besoins, fichier_besoins_pa
).drop(columns='id_territoire_crater')
def _ajouter_besoins_regroupements_de_communes(besoins_parcel_arrondis_2_decimales, territoires):
def _ajouter_besoins_regroupements_communes(besoins_parcel_arrondis_2_decimales, territoires):
communes = filtrer_et_dupliquer_communes_appartenant_a_une_categorie_de_territoire(territoires, 'REGROUPEMENT_COMMUNES')
besoins_regroupements_communes = communes.reset_index().loc[:,
['id_territoire', 'categorie_territoire', 'id_regroupement_communes']]
......
......@@ -14,7 +14,7 @@ import crater.territoires.chargeur_mouvements_communes as chargeur_mouvements_co
import crater.territoires.chargeur_regions as chargeur_regions
import crater.territoires.chargeur_referentiel_territoires as chargeur_referentiel_territoires
import crater.territoires.outils as outils_territoires
from crater.territoires.outils import NUMEROS_DEPARTEMENTS_DROM, NUMEROS_REGIONS_HORS_DROM
from crater.territoires.outils import IDS_CATEGORIES_TERRITOIRES_SUPRACOMMUNAUX, NUMEROS_DEPARTEMENTS_DROM, NUMEROS_REGIONS_HORS_DROM
from crater.crater_logger import log
from crater.outils import DictDataFrames
......@@ -54,8 +54,11 @@ def _generer_referentiel_territoires(sources: DictDataFrames) -> DataFrame:
territoires = _ajouter_id_pays_aux_territoires(territoires)
territoires = _ajouter_id_departement_et_region_aux_epcis_et_regroupements_de_communes(territoires)
territoires = _ajouter_regroupements_communes_aux_communes(
territoires,
sources['composition_regroupements_communes']
)
territoires = _ajouter_arrondissements(
territoires,
sources['arrondissements']
......@@ -71,7 +74,13 @@ def _generer_referentiel_territoires(sources: DictDataFrames) -> DataFrame:
sources['mouvements_communes']
)
territoires = _ajouter_id_departement_et_region_aux_epcis_et_regroupements_communes(territoires)
territoires = _ajouter_nombre_de_communes_par_territoire(territoires)
territoires = _reordonner_colonnes(territoires)
territoires = outils_territoires.trier_territoires(territoires)
return territoires
......@@ -79,25 +88,16 @@ def _generer_referentiel_territoires(sources: DictDataFrames) -> DataFrame:
def _assembler_differents_territoires(sources: DictDataFrames) -> DataFrame:
communes = _normaliser_df_territoires(sources['communes'], 'id_commune', 'nom_commune', 'COMMUNE')
epcis = _normaliser_df_territoires(sources['epcis'], 'id_epci', 'nom_epci', "EPCI")
regroupements_communes = _normaliser_df_territoires(sources['regroupements_communes'], 'id_regroupement_communes', 'nom_regroupement_communes', "REGROUPEMENT_COMMUNES")
departements = _normaliser_df_territoires(sources['departements'], 'id_departement', 'nom_departement', "DEPARTEMENT")
regions = _normaliser_df_territoires(sources['regions'], 'id_region', 'nom_region', "REGION")
pays = _creer_base_de_donnees_pays()
regroupements_de_communes_par_commune = sources['regroupements_de_communes'].sort_values(
by=["id_regroupement_communes"]
).groupby(['id_commune'], as_index=False
).agg({'id_regroupement_communes': '|'.join}
).rename(columns={'id_regroupement_communes': 'ids_regroupements_communes'})
communes = pd.merge(communes, regroupements_de_communes_par_commune.loc[:, ['id_commune', 'ids_regroupements_communes']], left_on='id_territoire', right_on='id_commune', how='left')
regroupements_de_communes = sources['regroupements_de_communes'].loc[:, ['id_regroupement_communes', 'nom_regroupement_communes', 'categorie_regroupement_communes']].drop_duplicates()
regroupements_de_communes = _normaliser_df_territoires(regroupements_de_communes, 'id_regroupement_communes', 'nom_regroupement_communes', "REGROUPEMENT_COMMUNES")
territoires = pd.concat(
[pays.sort_values(by=['id_territoire']),
regions.sort_values(by=['id_territoire']),
departements.sort_values(by=['id_territoire']),
regroupements_de_communes.sort_values(by=['id_territoire']),
regroupements_communes.sort_values(by=['id_territoire']),
epcis.sort_values(by=['id_territoire']),
communes.sort_values(by=['id_territoire'])
],
......@@ -135,6 +135,7 @@ def _reordonner_colonnes(territoires: DataFrame) -> DataFrame:
'categorie_regroupement_communes',
'id_epci',
'categorie_epci',
'nb_communes',
'ids_arrondissements_commune',
'codes_postaux_commune',
'annee_dernier_mouvement_commune',
......@@ -177,7 +178,22 @@ def _ajouter_id_pays_aux_territoires(territoires: DataFrame) -> DataFrame:
return territoires
def _ajouter_id_departement_et_region_aux_epcis_et_regroupements_de_communes(territoires: DataFrame) -> DataFrame:
def _ajouter_nombre_de_communes_par_territoire(territoires: DataFrame) -> DataFrame:
territoires['nb_communes'] = 0
territoires.loc[territoires['categorie_territoire'] == 'COMMUNE', 'nb_communes'] = 1
for id_echelle in IDS_CATEGORIES_TERRITOIRES_SUPRACOMMUNAUX:
territoires.update(territoires.loc[territoires['categorie_territoire'] == 'COMMUNE'].groupby(id_echelle).size().rename('nb_communes').astype('Int64'))
regroupements_communes = pd.DataFrame(territoires.ids_regroupements_communes.str.split('|'))
regroupements_communes = regroupements_communes.explode('ids_regroupements_communes')
territoires.update(regroupements_communes.groupby('ids_regroupements_communes').size().rename('nb_communes').astype('Int64'))
return territoires
def _ajouter_id_departement_et_region_aux_epcis_et_regroupements_communes(territoires: DataFrame) -> DataFrame:
territoires = _ajouter_id_departement_et_region_aux_ensembles_de_communes(territoires, 'EPCI')
territoires = _ajouter_id_departement_et_region_aux_ensembles_de_communes(territoires, 'REGROUPEMENT_COMMUNES')
return territoires
......@@ -224,6 +240,31 @@ def _ajouter_id_departement_et_region_aux_ensembles_de_communes(
return territoires
def _ajouter_regroupements_communes_aux_communes(
territoires: DataFrame,
composition_regroupements_communes: DataFrame,
) -> DataFrame:
regroupements_communes = (
composition_regroupements_communes.loc[:, ["id_commune", "id_regroupement_communes"]]
).sort_values(
by=["id_commune",
"id_regroupement_communes"]
).groupby(
['id_commune'],
as_index=False
).agg(
{'id_regroupement_communes': '|'.join}
).rename(
columns={
'id_regroupement_communes': 'ids_regroupements_communes',
'id_commune': 'id_territoire'}
).set_index('id_territoire')
territoires = territoires.join(regroupements_communes)
return territoires
def _ajouter_arrondissements(
territoires: DataFrame,
arrondissements: DataFrame,
......@@ -349,12 +390,15 @@ def _charger_sources_territoires(
departements = chargeur_departements.charger(chemin_fichier_departements)
regions = chargeur_regions.charger(chemin_fichier_regions)
codes_postaux = chargeur_codes_postaux.charger(chemin_fichier_codes_postaux)
regroupements_de_communes = chargeur_regroupements_communes.charger(chemin_dossier_regroupements_communes)
regroupements_communes = chargeur_regroupements_communes.charger_regroupements_communes(chemin_dossier_regroupements_communes)
composition_regroupements_communes = chargeur_regroupements_communes.charger_composition_regroupements_communes(chemin_dossier_regroupements_communes)
composition_regroupements_communes = composition_regroupements_communes.merge(regroupements_communes.loc[:, ['nom_regroupement_communes', 'id_regroupement_communes']], on = 'nom_regroupement_communes', how='left')
outils_territoires.verifier_absence_na(composition_regroupements_communes, 'id_commune', 'id_regroupement_communes')
communes, epcis = _traiter_communes_sans_epci(communes, epcis)
communes, arrondissements, mouvements_communes, epcis, departements, regions, codes_postaux = _supprimer_DROMs(
communes, arrondissements, mouvements_communes, epcis, departements, regions, codes_postaux
communes, arrondissements, mouvements_communes, epcis, regroupements_communes, composition_regroupements_communes, departements, regions, codes_postaux = _supprimer_DROMs(
communes, arrondissements, mouvements_communes, epcis, regroupements_communes, composition_regroupements_communes, departements, regions, codes_postaux
)
return {
......@@ -362,10 +406,11 @@ def _charger_sources_territoires(
'arrondissements': arrondissements,
'mouvements_communes': mouvements_communes,
'epcis': epcis,
'regroupements_communes': regroupements_communes,
'departements': departements,
'regions': regions,
'codes_postaux': codes_postaux,
'regroupements_de_communes': regroupements_de_communes
'composition_regroupements_communes': composition_regroupements_communes
}
......@@ -379,23 +424,23 @@ def _supprimer_DROMs(
arrondissements: DataFrame,
mouvements_communes: DataFrame,
epcis: DataFrame,
regroupements_communes: DataFrame,
composition_regroupements_communes: DataFrame,
departements: DataFrame,
regions: DataFrame,
codes_postaux: DataFrame
) -> Tuple[DataFrame, DataFrame, DataFrame, DataFrame, DataFrame, DataFrame, DataFrame]:
communes = communes.loc[lambda df: ~df['id_region'].str[2:4].isin(["{:02}".format(num) for num in NUMEROS_REGIONS_HORS_DROM])]
arrondissements = arrondissements.loc[lambda df: ~df['id_arrondissement'].str[2:4].isin(NUMEROS_DEPARTEMENTS_DROM)]
mouvements_communes = mouvements_communes.loc[
lambda df: ~df['id_commune_final'].str[2:4].isin(NUMEROS_DEPARTEMENTS_DROM)
].loc[
lambda df: ~df['id_commune_initial'].str[2:4].isin(NUMEROS_DEPARTEMENTS_DROM)
]
liste_epcis_hors_DROM = set(communes[~communes['id_epci'].isnull()]['id_epci'])
epcis = epcis.loc[lambda df: df['id_epci'].isin(liste_epcis_hors_DROM)]
departements = departements.loc[lambda df: ~df['id_region'].str[2:4].isin(["{:02}".format(num) for num in NUMEROS_REGIONS_HORS_DROM])]
regions = regions.loc[lambda df: ~df['id_region'].str[2:4].isin(["{:02}".format(num) for num in NUMEROS_REGIONS_HORS_DROM])]
codes_postaux = codes_postaux.loc[lambda df: ~df['id_commune_ou_arrondissement'].str[2:4].isin(NUMEROS_DEPARTEMENTS_DROM)]
communes = communes.loc[~communes['id_region'].str[2:4].isin(["{:02}".format(num) for num in NUMEROS_REGIONS_HORS_DROM])]
arrondissements = arrondissements.loc[~arrondissements['id_arrondissement'].str[2:4].isin(NUMEROS_DEPARTEMENTS_DROM)]
mouvements_communes = mouvements_communes.loc[~mouvements_communes['id_commune_final'].str[2:4].isin(NUMEROS_DEPARTEMENTS_DROM)]
mouvements_communes = mouvements_communes.loc[~mouvements_communes['id_commune_initial'].str[2:4].isin(NUMEROS_DEPARTEMENTS_DROM)]
epcis = epcis.loc[epcis['id_epci'].isin(communes.id_epci.dropna())]
composition_regroupements_communes = composition_regroupements_communes.loc[composition_regroupements_communes['id_commune'].isin(communes.id_commune)]
regroupements_communes = regroupements_communes.loc[~regroupements_communes['nom_regroupement_communes'].isin(['PNR de Guyane', 'PNR de Martinique'])]
departements = departements.loc[~departements['id_region'].str[2:4].isin(["{:02}".format(num) for num in NUMEROS_REGIONS_HORS_DROM])]
regions = regions.loc[~regions['id_region'].str[2:4].isin(["{:02}".format(num) for num in NUMEROS_REGIONS_HORS_DROM])]
codes_postaux = codes_postaux.loc[~codes_postaux['id_commune_ou_arrondissement'].str[2:4].isin(NUMEROS_DEPARTEMENTS_DROM)]
return communes, arrondissements, mouvements_communes, epcis, departements, regions, codes_postaux
return communes, arrondissements, mouvements_communes, epcis, regroupements_communes, composition_regroupements_communes, departements, regions, codes_postaux
......@@ -4,7 +4,7 @@ import pandas as pd
from pandas import DataFrame
from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater, verifier_absence_doublons
def charger(chemin_fichier: Path) -> DataFrame:
......@@ -38,6 +38,7 @@ def charger(chemin_fichier: Path) -> DataFrame:
)
_traduire_code_insee_vers_id_crater(df)
verifier_absence_doublons(df, 'id_arrondissement')
return df
......
......@@ -6,7 +6,7 @@ from pandas import DataFrame
from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater, \
traduire_code_insee_vers_id_epci_crater, traduire_code_insee_vers_id_departement_crater, \
traduire_code_insee_vers_id_region_crater
traduire_code_insee_vers_id_region_crater, verifier_absence_doublons
def charger(chemin_fichier: Path) -> DataFrame:
......@@ -45,6 +45,7 @@ def charger(chemin_fichier: Path) -> DataFrame:
)
_traduire_code_insee_vers_id_crater(df)
verifier_absence_doublons(df, 'id_commune')
return df
......
......@@ -5,7 +5,7 @@ from pandas import DataFrame
from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_departement_crater, \
traduire_code_insee_vers_id_region_crater
traduire_code_insee_vers_id_region_crater, verifier_absence_doublons
def charger(chemin_fichier: Path) -> DataFrame:
......@@ -42,6 +42,7 @@ def charger(chemin_fichier: Path) -> DataFrame:
_traduire_code_insee_vers_id_crater(df)
verifier_absence_doublons(df, 'id_departement')
return df
......
......@@ -4,7 +4,7 @@ import pandas as pd
from pandas import DataFrame
from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_epci_crater
from crater.territoires.outils import traduire_code_insee_vers_id_epci_crater, verifier_absence_doublons
def charger(chemin_fichier: Path) -> DataFrame:
......@@ -47,6 +47,7 @@ def charger(chemin_fichier: Path) -> DataFrame:
)
_traduire_code_insee_vers_id_crater(df)
verifier_absence_doublons(df, 'id_epci')
return df
......
......@@ -2,7 +2,7 @@ import geopandas as gpd
from pathlib import Path
from crater.reglages import CRS_PROJET
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater, verifier_absence_doublons
from crater.crater_logger import log
......@@ -15,6 +15,7 @@ def charger_geometries_communes(
geometries_communes = gpd.read_file(chemin_dossier).to_crs(crs)
_traduire_code_insee_vers_id_crater(geometries_communes)
verifier_absence_doublons(geometries_communes, 'id_commune')
if chemin_dossier.name == 'communes-20200101':
geometries_communes = _corriger_code_insee_Bernwiller(geometries_communes)
......
......@@ -4,7 +4,7 @@ import pandas as pd
from pandas import DataFrame
from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater, verifier_absence_doublons
def charger(chemin_fichier: Path) -> DataFrame:
......@@ -35,6 +35,7 @@ def charger(chemin_fichier: Path) -> DataFrame:
)
_traduire_code_insee_vers_id_crater(df)
verifier_absence_doublons(df, 'id_commune_ou_arrondissement')
return df
......
......@@ -4,7 +4,7 @@ import pandas as pd
from pandas import DataFrame
from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater, verifier_absence_doublons
def charger(chemin_fichier: Path) -> DataFrame:
......@@ -40,7 +40,8 @@ def charger(chemin_fichier: Path) -> DataFrame:
)
_traduire_code_insee_vers_id_crater(df)
verifier_absence_doublons(df, 'id_commune')
return df
......
......@@ -4,7 +4,7 @@ import pandas as pd
from pandas import DataFrame
from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_region_crater
from crater.territoires.outils import traduire_code_insee_vers_id_region_crater, verifier_absence_doublons
def charger(chemin_fichier: Path) -> DataFrame:
......@@ -36,6 +36,7 @@ def charger(chemin_fichier: Path) -> DataFrame:
)
_traduire_code_insee_vers_id_crater(df)
verifier_absence_doublons(df, 'id_region')
return df
......
......@@ -3,16 +3,41 @@ import pandas as pd
from pandas import DataFrame
from crater.crater_logger import log
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater
from crater.territoires.outils import traduire_code_insee_vers_id_commune_crater, verifier_absence_doublons
def charger(chemin_dossier: Path) -> DataFrame:
def charger_regroupements_communes(chemin_dossier: Path) -> DataFrame:
regroupements_de_communes = pd.DataFrame(columns = ['id_commune', 'nom_commune', 'nom_regroupement_communes', 'categorie_regroupement_communes'])
fichier = chemin_dossier / "regroupements_communes.csv"