Python_scripts/tmp/diag_foret_siteCEN.py
2026-07-21 11:34:07 +02:00

49 lines
2.6 KiB
Python

from pycen import con_fon, con_gn
import geopandas as gpd
zh = gpd.read_postgis('SELECT * FROM gn_exports.v_synthese_zh_rhomeosite', con_gn)
_ens = gpd.read_postgis('SELECT * FROM sites.sites', con_fon,geom_col='geom')
_ens.sort_values('site_id',inplace=True)
_ens.site_id = _ens.site_id.str.replace('_ZI','')
site = gpd.read_postgis('SELECT * FROM _tdbfcen.vm_sites_cen_2026_shp',con_fon)
site['area_mastery'] = site.area / 10000
ens = _ens[_ens.site_id.isin(site.id_site_cen.tolist())]
# ens = gpd.pd.concat([ens,_ens[(_ens.site_id.str.strip('_ZO').isin(site[~site.id_site_cen.isin(ens.site_id)].id_site_cen.tolist()))]])
# ens.site_id = ens.site_id.str.strip('_ZO')
ens['area_total'] = ens.area / 10000
zh_over_ens = zh.overlay(ens).dissolve('site_id')
zh_over_ens['area_zh_total'] = zh_over_ens.area / 10000
zh_over_ens.to_file('/home/cgeier/Téléchargements/foret_sitecen/overlay_ens_zh.geojson',driver='GeoJSON')
foret = gpd.read_file('/home/cgeier/Téléchargements/foret_sitecen/ign_masque_foret.geojson')
over = foret.overlay(site).dissolve('id_site_cen')
over['area_forest_master'] = over.area / 10000
over.to_file('/home/cgeier/Téléchargements/foret_sitecen/overlay_sites_foret.geojson',driver='GeoJSON')
peup = gpd.read_file('/home/cgeier/Téléchargements/foret_sitecen/peuplier_onsites.geojson')
p_over = peup.overlay(site).dissolve('id_site_cen')
p_over['area_peuplier_master'] = p_over.area / 10000
p_over.to_file('/home/cgeier/Téléchargements/foret_sitecen/overlay_sites_peupleraie.geojson',driver='GeoJSON')
zh_over = zh.overlay(site).dissolve('id_site_cen')
zh_over['area_zh_master'] = zh_over.area / 10000
zh_over.to_file('/home/cgeier/Téléchargements/foret_sitecen/overlay_site_maitrise_zh.geojson',driver='GeoJSON')
df = (
ens[['site_id','site_nom','geom','area_total']]
.merge(over[['area_mastery','area_forest_master']].reset_index(drop=False), how='left', right_on='id_site_cen',left_on='site_id')
.drop(columns='id_site_cen')
.merge(p_over[['area_peuplier_master']].reset_index(drop=False), how='left', right_on='id_site_cen',left_on='site_id')
.drop(columns='id_site_cen')
.merge(zh_over_ens[['area_zh_total']].reset_index(drop=False), on='site_id', how='left')
.merge(zh_over[['area_zh_master']].reset_index(drop=False), how='left', right_on='id_site_cen',left_on='site_id')
.drop(columns='id_site_cen')
.sort_values('site_id')
.fillna(0)
)
df = df[~df.site_id.isin(['CACH','N2GL','N2IP','RNGL','RNIP','NDDM'])]
df.to_file('/home/cgeier/Téléchargements/foret_sitecen/sites_foret.geojson',driver='GeoJSON')