74 lines
2.6 KiB
Python
74 lines
2.6 KiB
Python
from pycen import (
|
|
v_pelouseseches as ps,
|
|
con, con_bdcen,
|
|
update_to_sql
|
|
)
|
|
import geopandas as gpd
|
|
|
|
|
|
def update_psInf1200(df):
|
|
|
|
from rasterstats import zonal_stats
|
|
path0 = '/home/colas/Documents/9_PROJETS/2_PS/'
|
|
path2_mnt = path0+'MNT/'
|
|
file_mnt5 = 'MNT_5m.tif'
|
|
|
|
zonal_tmp = zonal_stats(df,path2_mnt+file_mnt5,stats="max",nodata=0,all_touched=True)
|
|
zonal = gpd.pd.DataFrame(zonal_tmp)
|
|
zonal.columns = ['max_alti']
|
|
tmp = gpd.pd.concat([df.reset_index(drop=True),zonal], axis=1)
|
|
tmp = tmp.set_geometry('geom', crs=2154)
|
|
tmp.infeq_1200 = tmp.max_alti <= 1200
|
|
|
|
PS = tmp[['site_code','infeq_1200']]\
|
|
.rename(columns={'site_code':'id_site'})
|
|
|
|
PS.to_sql('r_infeq_1200m',con,'ps',if_exists='append',index=False)
|
|
# update_to_sql(PS,con,'r_infeq_1200m','ps','id_site')
|
|
|
|
|
|
|
|
ps_all = gpd.read_postgis('''
|
|
SELECT vp.*,s7.infeq_1200
|
|
FROM ps."v_pelouseseches_all" vp
|
|
LEFT JOIN ps.r_infeq_1200m s7 ON vp.site_code::text = s7.id_site::text
|
|
ORDER BY vp.site_code DESC NULLS LAST;
|
|
''',con)
|
|
isnot_1200 = ps_all.infeq_1200.isna()
|
|
update_psInf1200(ps_all[isnot_1200])
|
|
|
|
|
|
|
|
metro = gpd.read_file("/home/colas/Documents/tmp/PS_ACTU_METRO/Perimètre_GAM.geojson")
|
|
metro.rename_geometry('geom', inplace=True)
|
|
ps_agg = gpd.read_postgis('SELECT * FROM "pelouse_seche"."c_ps_inventaire_agreg"',con_bdcen)
|
|
ps_vps = gpd.read_postgis('SELECT * FROM ps."v_pelouseseches"',con)
|
|
ps_noalti = gpd.read_postgis('SELECT * FROM ps."v_pelouseseches_noalti"',con)
|
|
|
|
psdate_cols = ps_all.columns[ps_all.columns.str.startswith('date')]
|
|
|
|
ps_metro = ps_vps[ps_vps.intersects(metro.unary_union)].copy()
|
|
ag_metro = ps_agg[ps_agg.intersects(metro.unary_union)].copy()
|
|
|
|
is_cbna = ps_metro.source.str.contains('CBNA',na=False)
|
|
is_agg = ps_metro.id_origine.isin(ag_metro.id.tolist())
|
|
|
|
not_intersect = ~ps_metro.centroid.intersects(ag_metro.buffer(0).unary_union)
|
|
|
|
ps_metro_cbna = ps_metro[is_cbna].copy()
|
|
|
|
|
|
termo = ps_metro[not_intersect & is_cbna].copy()
|
|
|
|
ps_metro[psdate_cols] = ps_metro[psdate_cols].astype(str)
|
|
termo[psdate_cols] = termo[psdate_cols].astype(str)
|
|
termo.to_file('/home/colas/Documents/tmp/PS_ACTU_METRO/ps_actu_metro.gpkg',layer='ps_termo',driver='GPKG')
|
|
ps_metro.to_file('/home/colas/Documents/tmp/PS_ACTU_METRO/ps_actu_metro.gpkg',layer='ps_metro',driver='GPKG')
|
|
ag_metro.to_file('/home/colas/Documents/tmp/PS_ACTU_METRO/ps_actu_metro.gpkg',layer='ag_metro',driver='GPKG')
|
|
|
|
|
|
ps_termo = gpd.read_file('/home/colas/Documents/tmp/PS_ACTU_METRO/ps_actu_metro.gpkg',layer='ps_termo')
|
|
updt_termo = ps_termo[['site_code']].copy()
|
|
updt_termo.columns = ['id']
|
|
updt_termo['id_type_milieu'] = 99
|
|
update_to_sql(updt_termo,con,'sites','sites','id') |