Commit 9fe0da53 authored by Lionel's avatar Lionel
Browse files

Ajout id_territoire_parcel dans donnees territoires

parent d7f9d216
......@@ -191,6 +191,7 @@ def generer_fichiers_resultats_crater():
CHEMIN_SOURCE_POPULATION_TOTALE,
CHEMIN_SOURCE_POPULATION_TOTALE_HISTORIQUE,
CHEMIN_PRECALCUL_SAU,
CHEMIN_CRATER_DATA_SOURCES / DOSSIER_PARCEL / 'correspondance_territoires_parcel_crater.csv',
CHEMIN_OUTPUT_DATA / DOSSIER_TERRITOIRES
)
population_agricole, sources_population_agricole = calculer_population_agricole(
......@@ -216,7 +217,7 @@ def generer_fichiers_resultats_crater():
calculer_axe_production_besoins(
referentiel_territoires,
CHEMIN_CRATER_DATA_SOURCES / DOSSIER_PARCEL / 'reponse_api_parcel_besoins_pour_assiette_actuelle_20200925.csv',
CHEMIN_CRATER_DATA_SOURCES / DOSSIER_PARCEL / 'reponse_api_parcel_besoins_pour_assiette_actuelle.csv',
CHEMIN_CRATER_DATA_SOURCES / DOSSIER_CRATER / 'cultures_et_groupes_cultures.csv',
CHEMIN_CRATER_DATA_SOURCES / DOSSIER_PARCEL / 'produits_hors_elevage_vers_codes_cultures.csv',
CHEMIN_CRATER_DATA_SOURCES / DOSSIER_PARCEL / 'produits_elevage_vers_codes_cultures.csv',
......@@ -276,7 +277,7 @@ def lancer_calcul_production_besoins():
calculer_axe_production_besoins(
referentiel_territoires,
CHEMIN_CRATER_DATA_SOURCES / DOSSIER_PARCEL / 'reponse_api_parcel_besoins_pour_assiette_actuelle_20200925.csv',
CHEMIN_CRATER_DATA_SOURCES / DOSSIER_PARCEL / 'reponse_api_parcel_besoins_pour_assiette_actuelle.csv',
CHEMIN_CRATER_DATA_SOURCES / DOSSIER_CRATER / 'cultures_et_groupes_cultures.csv',
CHEMIN_CRATER_DATA_SOURCES / DOSSIER_PARCEL / 'produits_hors_elevage_vers_codes_cultures.csv',
CHEMIN_CRATER_DATA_SOURCES / DOSSIER_PARCEL / 'produits_elevage_vers_codes_cultures.csv',
......
......@@ -17,6 +17,7 @@ import crater.territoires.chargeur_regions as chargeur_regions
import crater.territoires.chargeur_territoires as chargeur_territoires
import crater.territoires.outils as outils_territoires
from crater.outils import reinitialiser_dossier, DictTerritoires
from crater.territoires import chargeur_territoires_parcel
def _generer_referentiel_territoires(sources: DictTerritoires) -> DictTerritoires:
......@@ -59,6 +60,10 @@ def _generer_referentiel_territoires(sources: DictTerritoires) -> DictTerritoire
sources['mouvements_communes'],
2017
)
_ajouter_id_territoire_parcel(
territoires,
sources['territoires_parcel']
)
return territoires
......@@ -96,7 +101,8 @@ def _exporter_referentiel_territoires(
['sau_ha',
'population_totale_2017',
'population_totale_2010',
'population_totale_1990']
'population_totale_1990',
'id_territoire_parcel']
),
'multiple',
chemin_dossier_output
......@@ -107,7 +113,8 @@ def _exporter_referentiel_territoires(
['sau_ha',
'population_totale_2017',
'population_totale_2010',
'population_totale_1990']
'population_totale_1990',
'id_territoire_parcel']
),
'unique',
chemin_dossier_output / "donnees.csv"
......@@ -258,6 +265,43 @@ def _ajouter_population_totale_historique(
)
def _ajouter_id_territoire_parcel(
territoires: DictTerritoires,
territoires_parcel: DataFrame
) -> None:
id_territoires_parcel = territoires_parcel.loc[:, ['id_territoire', 'id_territoire_parcel']]
territoires['communes']['id_territoire_parcel'] = (territoires['communes']
.merge(id_territoires_parcel, how='left',
left_on='id_commune', right_on='id_territoire')
.loc[:, ['id_territoire_parcel']]
)
territoires['epcis']['id_territoire_parcel'] = (territoires['epcis']
.merge(id_territoires_parcel, how='left',
left_on='id_epci', right_on='id_territoire')
.loc[:, ['id_territoire_parcel']]
)
territoires['departements']['id_territoire_parcel'] = (territoires['departements']
.merge(id_territoires_parcel, how='left',
left_on='id_departement',
right_on='id_territoire')
.loc[:, ['id_territoire_parcel']]
)
territoires['regions']['id_territoire_parcel'] = (territoires['regions']
.merge(id_territoires_parcel, how='left',
left_on='id_region', right_on='id_territoire')
.loc[:, ['id_territoire_parcel']]
)
territoires['pays']['id_territoire_parcel'] = (territoires['pays']
.merge(id_territoires_parcel, how='left',
left_on='id_pays', right_on='id_territoire')
.loc[:, ['id_territoire_parcel']]
)
def _ajouter_id_commune(arrondissements: DataFrame, df: DataFrame):
df = pd.merge(
df,
......@@ -302,6 +346,7 @@ def calculer_territoires(
chemin_fichier_population_totale,
chemin_fichier_population_totale_historique,
chemin_fichier_sau,
chemin_fichier_territoires_parcel,
chemin_dossier_output
):
sources = charger_sources(
......@@ -313,7 +358,8 @@ def calculer_territoires(
chemin_fichier_codes_postaux,
chemin_fichier_population_totale,
chemin_fichier_population_totale_historique,
chemin_fichier_sau
chemin_fichier_sau,
chemin_fichier_territoires_parcel
)
territoires = _generer_referentiel_territoires(
......@@ -337,7 +383,8 @@ def charger_sources(
chemin_fichier_codes_postaux: Path,
chemin_fichier_population_totale: Path,
chemin_fichier_population_totale_historique: Path,
chemin_fichier_sau: Path
chemin_fichier_sau: Path,
chemin_fichier_territoires_parcel: Path
) -> DictTerritoires:
print("\n##### CHARGEMEMENT DES DONNEES SOURCES DE TERRITOIRES #####")
......@@ -355,6 +402,8 @@ def charger_sources(
population_totale_historique = chargeur_population_totale_historique.charger(
chemin_fichier_population_totale_historique)
territoires_parcel = chargeur_territoires_parcel.charger(chemin_fichier_territoires_parcel)
chargeur_communes.traduire_code_insee_vers_id_crater(communes)
chargeur_arrondissements.traduire_code_insee_vers_id_crater(arrondissements)
chargeur_mouvements_communes.traduire_code_insee_vers_id_crater(mouvements_communes)
......@@ -376,5 +425,6 @@ def charger_sources(
'codes_postaux': codes_postaux,
'population_totale': population_totale,
'population_totale_historique': population_totale_historique,
'sau': sau
'sau': sau,
'territoires_parcel': territoires_parcel
}
......@@ -132,7 +132,8 @@ def charger_donnees(chemin_fichier: Path) -> DataFrame:
'sau_ha': 'float',
'population_totale_2017': 'Int64',
'population_totale_2010': 'Int64',
'population_totale_1990': 'Int64'
'population_totale_1990': 'Int64',
'id_territoire_parcel': 'str'
},
na_values=['']
).round(
......
from pathlib import Path
import pandas as pd
from pandas import DataFrame
def charger(chemin_fichier: Path) -> DataFrame:
print(f" => Chargement territoires PARCEL {chemin_fichier}")
return pd.read_csv(chemin_fichier, sep=';', dtype='str')
id_territoire;nom_territoire;categorie_territoire;sau_ha;population_totale_2017;population_totale_2010;population_totale_1990
P-FR;France;PAYS;1280.00;24550;24055;2400
R-11;Île-de-France;REGION;;20000;20000;2000
R-53;Bretagne;REGION;280.00;2000;2000;200
R-75;Nouvelle-Aquitaine;REGION;;;;
R-76;Occitanie;REGION;1000.00;2000;2000;200
D-29;FINISTERE;DEPARTEMENT;280.00;1000;1000;100
D-31;HAUTE GARONNE;DEPARTEMENT;1000.00;2000;2000;200
D-56;MORBIHAN;DEPARTEMENT;;1000;1000;100
D-75;PARIS;DEPARTEMENT;;20000;20000;2000
E-C;CA Concarneau Cornouaille Agglomération;EPCI;280.00;1000;1000;100
E-T;Toulouse Métropole;EPCI;1000.00;2000;2000;200
E-L;CU Lorient;EPCI;;1000;1000;100
E-PA;Paris;EPCI;;20000;20000;2000
C-29153;Névez;COMMUNE;100.00;400;400;40
C-29293;Trégunc;COMMUNE;180.00;600;600;60
C-31069;Blagnac;COMMUNE;1000.00;2000;2000;200
C-56121;Lorient;COMMUNE;;1000;1000;100
C-75056;Paris;COMMUNE;;20000;20000;2000
C-56620;Larmor;COMMUNE;;;;
C-33063;Bordeaux;COMMUNE;;;;
C-A;A;COMMUNE;;100;10;
C-B;B;COMMUNE;;200;15;
C-C;C;COMMUNE;;250;30;
C-E;E;COMMUNE;;;;
C-G;G;COMMUNE;;;;
C-H;H;COMMUNE;;;;
id_territoire;nom_territoire;categorie_territoire;sau_ha;population_totale_2017;population_totale_2010;population_totale_1990;id_territoire_parcel
P-FR;France;PAYS;1280.00;24550;24055;2400;1
R-11;Île-de-France;REGION;;20000;20000;2000;2
R-53;Bretagne;REGION;280.00;2000;2000;200;
R-75;Nouvelle-Aquitaine;REGION;;;;;
R-76;Occitanie;REGION;1000.00;2000;2000;200;
D-29;FINISTERE;DEPARTEMENT;280.00;1000;1000;100;
D-31;HAUTE GARONNE;DEPARTEMENT;1000.00;2000;2000;200;
D-56;MORBIHAN;DEPARTEMENT;;1000;1000;100;
D-75;PARIS;DEPARTEMENT;;20000;20000;2000;
E-C;CA Concarneau Cornouaille Agglomération;EPCI;280.00;1000;1000;100;
E-T;Toulouse Métropole;EPCI;1000.00;2000;2000;200;
E-L;CU Lorient;EPCI;;1000;1000;100;
E-PA;Paris;EPCI;;20000;20000;2000;
C-29153;Névez;COMMUNE;100.00;400;400;40;
C-29293;Trégunc;COMMUNE;180.00;600;600;60;
C-31069;Blagnac;COMMUNE;1000.00;2000;2000;200;
C-56121;Lorient;COMMUNE;;1000;1000;100;
C-75056;Paris;COMMUNE;;20000;20000;2000;
C-56620;Larmor;COMMUNE;;;;;
C-33063;Bordeaux;COMMUNE;;;;;
C-A;A;COMMUNE;;100;10;;
C-B;B;COMMUNE;;200;15;;
C-C;C;COMMUNE;;250;30;;
C-E;E;COMMUNE;;;;;
C-G;G;COMMUNE;;;;;
C-H;H;COMMUNE;;;;;
id_territoire;nom_territoire;categorie_territoire;id_territoire_parcel;nom_territoire_parcel;pourcentage_confiance_resultat;code_retour
P-FR;FRANCE;PAYS;1;France métropolitaine;100;200
R-11;ILE DE FRANCE;REGION;2;Île-de-France (Région);100;200
\ No newline at end of file
import unittest
from crater.outils import DictTerritoires
from crater.reglages import DOSSIER_TERRITOIRES, DOSSIER_SAU
from crater.reglages import DOSSIER_TERRITOIRES, DOSSIER_SAU, DOSSIER_PARCEL
from crater.territoires import calculateur
from tests.test_outils import assert_list_of_csv_files_are_equals, \
CHEMIN_INPUT_DATA, CHEMIN_OUTPUT_DATA, CHEMIN_EXPECTED_DATA, \
......@@ -22,6 +22,7 @@ class TestTerritoires(unittest.TestCase):
CHEMIN_INPUT_DATA / DOSSIER_TERRITOIRES / DOSSIER_CAS_NOMINAL / 'population_totale_2017.csv',
CHEMIN_INPUT_DATA / DOSSIER_TERRITOIRES / DOSSIER_CAS_NOMINAL / 'population_totale_historique_2015.xlsx',
CHEMIN_INPUT_DATA / DOSSIER_SAU / DOSSIER_CAS_NOMINAL / 'sau-communes.csv',
CHEMIN_INPUT_DATA / DOSSIER_PARCEL / 'correspondance_territoires_parcel_crater.csv',
CHEMIN_OUTPUT_DATA / DOSSIER_TERRITOIRES
)[0]
# when
......@@ -44,6 +45,7 @@ class TestTerritoires(unittest.TestCase):
CHEMIN_INPUT_DATA / DOSSIER_TERRITOIRES / DOSSIER_CAS_NOMINAL / 'population_totale_2017.csv',
CHEMIN_INPUT_DATA / DOSSIER_TERRITOIRES / DOSSIER_CAS_NOMINAL / 'population_totale_historique_2015.xlsx',
CHEMIN_INPUT_DATA / DOSSIER_SAU / DOSSIER_CAS_NOMINAL / 'sau-communes.csv',
CHEMIN_INPUT_DATA / DOSSIER_PARCEL / 'correspondance_territoires_parcel_crater.csv',
CHEMIN_OUTPUT_DATA / DOSSIER_TERRITOIRES
)
assert_list_of_csv_files_are_equals(
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment