This commit is contained in:
Colas Geier 2025-09-18 16:52:27 +02:00
parent 44b134119b
commit 017d40db6a

98
tmp/PG_AVAL.py Normal file
View File

@ -0,0 +1,98 @@
import geopandas as gpd
import json
from shapely.geometry import shape
from pycen import con_gn
PATH = '/home/colas/Documents/tmp/AVAL/'
gnaura = gpd.pd.read_csv(PATH+'BIODIVAURA_synthese_observations_2025-06-16T10_23_13.147Z.csv',sep=';')
gncen38 = gpd.pd.read_csv(PATH+'GN_synthese_observations_2025-06-16T10_23_43.122Z.csv',sep=';',dtype={'niveau_precision_diffusion':str})
gnaura = gpd.GeoDataFrame(gnaura, geometry=gpd.points_from_xy(gnaura.x_centroid_4326,gnaura.y_centroid_4326),crs=4326)
gncen38 = gpd.GeoDataFrame(gncen38, geometry=gpd.points_from_xy(gncen38.x_centroid_4326,gncen38.y_centroid_4326),crs=4326)
gnaura.dropna(how='all',inplace=True,axis=1)
gncen38.dropna(how='all',inplace=True,axis=1)
# Suppression des données CEN38 dans gnaura
lstdrop = gnaura[gnaura.uuid_perm_sinp.isin(gncen38.uuid_perm_sinp)].index
gnaura.drop(lstdrop,inplace=True)
# Completion phylogenie BIODIVAURA
sql = """
SELECT
t.cd_ref,
t.regne,
-- t.phylum,
-- t.classe,
-- t.ordre,
-- t.famille,
t.group1_inpn,
t.group2_inpn,
--t.nom_vern,
--t.nom_complet,
--t.nom_valide,
--t.lb_nom,
--s.*
--s.rq_statut,
--s.code_statut,
--s.cd_type_statut,
--s.label_statut,
--s.full_citation,
--s.doc_url
t.group3_inpn
FROM taxonomie.taxref t
--JOIN taxonomie.v_bdc_status s USING (cd_nom)
WHERE t.cd_ref IN {cd_nom}
;""".format(cd_nom = tuple(gnaura.cd_ref.unique()))
phylo = gpd.pd.read_sql_query(sql,con_gn)
gnaura = gnaura.merge(phylo,how='left',left_on='cd_ref',right_on='cd_ref',copy=False)
# Suppression des données polygones dans gnaura
# gnaura = gnaura[~gnaura.geojson_4326.str.contains('polygon',case=False,na=False)]
# Compilation des données
compil = gpd.pd.concat([gncen38,gnaura])
aura_imprecise = compil[compil.geojson_4326.str.contains('polygon',case=False,na=False)].copy()
compilF = compil[~compil.geojson_4326.str.contains('polygon',case=False,na=False)].copy()
compilF.to_csv(PATH+'compile_38&AURA_synthese_observations_2025-06-16.csv',sep=';',index=False)
compilF.to_crs(2154).to_file(PATH+'compile_38&AURA_synthese_observations.geojson')
# Ecriture des données imprécises
geom = [shape(json.loads(i)) for i in aura_imprecise.geojson_4326]
gdf_imprecis = gpd.GeoDataFrame(aura_imprecise,geometry=geom,crs=4326)
aura_imprecise.to_csv(PATH+'AURA_synthese_observations_imprecise_2025-06-16.csv',sep=';',index=False)
gdf_imprecis.to_crs(2154).to_file(PATH+'AURA_synthese_observations_imprecise.geojson')
# Génération du fichier liste_sp
liste_sp = compilF[['cd_ref','date_debut','date_fin','nom_valide','nom_vernaculaire','regne','group1_inpn','group2_inpn','group3_inpn','classe','ordre','famille','nombre_min','nombre_max','observateurs','fournisseur','communes','x_centroid_4326','y_centroid_4326']].copy()
liste_sp.sort_values(by=['cd_ref','date_debut'],inplace=True)
liste_sp.drop_duplicates(subset='cd_ref',keep='last',inplace=True)
liste_sp.to_excel(PATH+'liste_sp_AVAL.xlsx',index=False,sheet_name='liste_sp')
# intersection des sites
gdf = gpd.read_file(PATH+'AVAL_ZO_Zone tampon_600m.gpkg')[['nom_ens','geometry']]
dfF = (compilF.to_crs(2154).sjoin(gdf, how='left')
.drop(columns=['geometry','index_right',"Unnamed: 0"],errors='ignore')
)
dfF = dfF[[
'nom_ens','id_synthese', 'date_debut', 'date_fin', 'heure_debut',
'heure_fin', 'cd_nom', 'cd_ref', 'nom_valide', 'nom_vernaculaire',
'nom_cite', 'regne', 'group1_inpn', 'group2_inpn', 'group3_inpn',
'classe', 'ordre', 'famille', 'rang_taxo', 'nombre_min', 'nombre_max',
'alti_min', 'alti_max', 'observateurs', 'determinateur', 'communes',
'geometrie_wkt_4326', 'x_centroid_4326', 'y_centroid_4326', 'nom_lieu',
'comment_releve', 'comment_occurrence', #'validateur',
'niveau_validation', 'jdd_nom', 'jdd_uuid', 'jdd_id', 'ca_nom',
'ca_uuid', 'ca_id', 'precision_geographique', 'nature_objet_geo',
'type_regroupement', 'technique_observation', 'biologique_statut',
'etat_biologique', 'biogeographique_statut', 'naturalite',
'preuve_existante', 'stade_vie', 'sexe', #'niveau_precision_diffusion',
'objet_denombrement', 'type_denombrement', 'niveau_sensibilite',
'statut_observation', 'floutage_dee', 'statut_source', 'type_info_geo',
'methode_determination', 'comportement', 'id_origine', 'uuid_perm_sinp',
'uuid_perm_grp_sinp', 'date_creation', 'date_modification',
'champs_additionnels', 'fournisseur', 'geojson_4326',
'statut_biologique', 'type_source', 'type_precision',
'sensibilite', 'confidentialite'
]]
dfF.rename(columns={'nom':'nom_site'},inplace=True)
dfF.to_csv(PATH+'compile_38&AURA_synthese_observations_2025-06-16.csv', sep=";")