Commit cacfdb3a authored by Lionel DURAND's avatar Lionel DURAND
Browse files

Complément suite relecture : ajout message erreur par défaut et gestion du cas nan

parent f2c8982f
......@@ -2,6 +2,7 @@ import pandas as pd
from pandas import DataFrame
from crater.crater_logger import log
from crater.politique_fonciere.parametres import SEUIL_ARTIFICIALISATION_HA_QUASI_NULLE_OU_NEGATIVE
from crater.reglages import MESSAGE_INITAL_A_REMPLACER, MESSAGE_DONNEES_NON_DISPONIBLES
def ajouter_message_politique_artificialisation(donnees_politique_fonciere: DataFrame) -> DataFrame:
......@@ -10,7 +11,7 @@ def ajouter_message_politique_artificialisation(donnees_politique_fonciere: Data
def _ajouter_colonne_message_artificialisation(df):
df['politique_artificialisation_valeur'] = ""
df['politique_artificialisation_valeur'] = MESSAGE_INITAL_A_REMPLACER
df['politique_artificialisation_valeur'] = df['politique_artificialisation_valeur'].astype(pd.StringDtype())
df['politique_artificialisation_valeur'] = (
df['politique_artificialisation_valeur']
......@@ -25,13 +26,14 @@ def _ajouter_colonne_message_artificialisation(df):
(df['artificialisation_2011_2016_ha'] > SEUIL_ARTIFICIALISATION_HA_QUASI_NULLE_OU_NEGATIVE)
& (df['evolution_menages_emplois_2011_2016'] <= 0),
_construire_message_artificialisation_positive_avec_perte_menages(df))
.mask(df['artificialisation_2011_2016_ha'].isna(),
MESSAGE_DONNEES_NON_DISPONIBLES)
)
return df
def _construire_message_artificialisation_positive_sans_perte_menages(df):
return (df['politique_artificialisation_valeur'] +
"Attention l'objectif Zéro Artificialisation Nette n'a pas été atteint entre 2011 et 2016 puisque " +
return ("Attention l'objectif Zéro Artificialisation Nette n'a pas été atteint entre 2011 et 2016 puisque " +
df['artificialisation_2011_2016_ha'].map('{:,.0f}'.format) +
" ha (soit " +
df['artificialisation_2011_2016_sur_superficie_pourcent'].map('{:,.1f}'.format) +
......@@ -39,8 +41,7 @@ def _construire_message_artificialisation_positive_sans_perte_menages(df):
).str.replace(',', ' ')
def _construire_message_artificialisation_positive_avec_perte_menages(df):
return (df['politique_artificialisation_valeur'] +
"Attention le territoire a été à rebours de l'objectif Zéro Artificialisation Nette entre 2011 et 2016 puisque " +
return ("Attention le territoire a été à rebours de l'objectif Zéro Artificialisation Nette entre 2011 et 2016 puisque " +
df['artificialisation_2011_2016_ha'].map('{:,.0f}'.format) +
" ha (soit " +
df['artificialisation_2011_2016_sur_superficie_pourcent'].map('{:,.1f}'.format).replace(',', ' ') +
......
......@@ -142,4 +142,7 @@ NOMS_FICHIERS_RPG = {
}
}
CRS_PROJET = "EPSG:2154"
\ No newline at end of file
CRS_PROJET = "EPSG:2154"
MESSAGE_INITAL_A_REMPLACER = "MESSAGE A REMPLACER"
MESSAGE_DONNEES_NON_DISPONIBLES = "Données non disponibles"
\ No newline at end of file
......@@ -14,7 +14,7 @@ SCOT-3;Le SCOT interdepartemental D-32 (3 communes) D-40 (2 communes);REGROUPEME
E-200030435;CC d'Aire-sur-l'Adour;EPCI;212.10;6331;82.13;1078;1459;9349.00;2537;0.88;Attention l'objectif Zéro Artificialisation Nette n'a pas été atteint entre 2011 et 2016 puisque 82 ha (soit 0.9% de la superficie totale du territoire) ont été artificialisés.;335;1.00;7.74;9.20;5.00;La surface agricole par habitant <strong>est trop faible</strong> et l’objectif <abbr title='Zéro Artificialisation Nette'>ZAN</abbr> <strong>n’a pas été atteint entre 2011 et 2016</strong>
E-200054781;Métropole du Grand Paris;EPCI;0.00;237015;1000.00;5000;7000;10000.00;12000;10.00;Attention l'objectif Zéro Artificialisation Nette n'a pas été atteint entre 2011 et 2016 puisque 1 000 ha (soit 10.0% de la superficie totale du territoire) ont été artificialisés.;0;0.00;;;;Données non disponibles
C-32145;Gée-Rivière;COMMUNE;0.00;46;9.79;-1;-10;2559.00;-11;0.38;Attention le territoire a été à rebours de l'objectif Zéro Artificialisation Nette entre 2011 et 2016 puisque 10 ha (soit 0.4% de la superficie totale du territoire) ont été artificialisés alors que le territoire a perdu 11 ménages + emplois !;0;0.00;;;;Données non disponibles
C-32333;Projan(scission2020);COMMUNE;0.00;;;;;;;;;;;;;;Données non disponibles
C-32333;Projan(scission2020);COMMUNE;0.00;;;;;;;;Données non disponibles;;;;;;Données non disponibles
C-32424;Ségos(fusion2017);COMMUNE;0.00;;0.50;10;15;;25;;Attention l'objectif Zéro Artificialisation Nette n'a pas été atteint entre 2011 et 2016 puisque 0 ha (soit nan% de la superficie totale du territoire) ont été artificialisés.;;;;;;Données non disponibles
C-40001;Aire-sur-l'Adour;COMMUNE;131.30;6129;71.84;905;1536;1720.00;2441;4.18;Attention l'objectif Zéro Artificialisation Nette n'a pas été atteint entre 2011 et 2016 puisque 72 ha (soit 4.2% de la superficie totale du territoire) ont été artificialisés.;214;0.60;10.94;8.90;5.00;La surface agricole par habitant <strong>est trop faible</strong> et l’objectif <abbr title='Zéro Artificialisation Nette'>ZAN</abbr> <strong>n’a pas été atteint entre 2011 et 2016</strong>
C-40146;Latrille;COMMUNE;80.80;156;0.00;164;-82;5070.00;82;0.00;L'objectif Zéro Artificialisation Nette a été atteint entre 2011 et 2016 !;5179;10.00;0.0;10.00;10.00;La surface agricole par habitant <strong>est suffisante pour le régime actuel</strong> et l’objectif <abbr title='Zéro Artificialisation Nette'>ZAN</abbr> <strong>a été atteint entre 2011 et 2016</strong>
......
......@@ -80,6 +80,7 @@ class TestUnitairePolitiqueFonciere(unittest.TestCase):
columns=['evolution_menages_emplois_2011_2016', 'artificialisation_2011_2016_ha',
'artificialisation_2011_2016_sur_superficie_pourcent'],
data=[
[np.nan, np.nan, np.nan],
[np.nan, SEUIL_ARTIFICIALISATION_HA_QUASI_NULLE_OU_NEGATIVE, np.nan],
[np.nan, ARTIFICIALISATION_HA_POSITIVE, ARTIFICIALISATION_SUR_SAU_25_POURCENT],
[EVOLUTION_MENAGES_POSITIVE, ARTIFICIALISATION_HA_POSITIVE, ARTIFICIALISATION_SUR_SAU_25_POURCENT],
......@@ -94,6 +95,7 @@ class TestUnitairePolitiqueFonciere(unittest.TestCase):
resultat_attendu = pd.Series(
data=
[
"Données non disponibles",
"L'objectif Zéro Artificialisation Nette a été atteint entre 2011 et 2016 !",
"Attention l'objectif Zéro Artificialisation Nette n'a pas été atteint entre 2011 et 2016 puisque 1 000 ha (soit 25.0% de la superficie totale du territoire) ont été artificialisés.",
"Attention l'objectif Zéro Artificialisation Nette n'a pas été atteint entre 2011 et 2016 puisque 1 000 ha (soit 25.0% de la superficie totale du territoire) ont été artificialisés.",
......@@ -101,7 +103,7 @@ class TestUnitairePolitiqueFonciere(unittest.TestCase):
],
dtype=pd.StringDtype())
self.assertEqual(resultat_attendu.tolist(), df_resultat['politique_artificialisation_valeur'].tolist(), )
self.assertEqual(resultat_attendu.tolist(), df_resultat['politique_artificialisation_valeur'].tolist())
self.assertEqual(resultat_attendu.dtype, df_resultat['politique_artificialisation_valeur'].dtype)
......
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