init depot renew
This commit is contained in:
@@ -0,0 +1,173 @@
|
||||
from sqlalchemy import create_engine, text,PrimaryKeyConstraint
|
||||
from geoalchemy2 import Geometry
|
||||
import geopandas as gpd
|
||||
from os import listdir,path
|
||||
from pycen import con_rho as con
|
||||
|
||||
# user_cad = 'xxxxxxx' # utilisateur de connexion à la bdd
|
||||
# pwd_cad = 'xxxxxxx' # mot de passe de la bdd
|
||||
# adr_cad = '91.134.194.221' # adresse ip de la bdd
|
||||
# port_cad = '5432' # port de la bdd
|
||||
# base_cad = 'rhomeo' # nom de la bdd
|
||||
schema_cad = 'bdtopo3'
|
||||
# con = create_engine('postgresql+psycopg2://{0}:{1}@{2}:{3}/{4}'.format(user_cad,pwd_cad,adr_cad,port_cad,base_cad), echo=False)
|
||||
|
||||
|
||||
def get_list_table(con,sch="public"):
|
||||
with con.begin() as cnx:
|
||||
return cnx.dialect.get_table_names(cnx,schema=sch)
|
||||
|
||||
def get_columns(con,sch,tab):
|
||||
with con.begin() as cnx:
|
||||
return cnx.dialect.get_columns(cnx,tab,sch)
|
||||
|
||||
def get_table_pkey(con,sch,tab):
|
||||
with con.begin() as cnx:
|
||||
return cnx.dialect.get_foreign_keys(cnx,tab,sch)
|
||||
|
||||
|
||||
# for tab in ['spatial_ref_sys',#'info_metadonnees','metadonnees_lot','metadonnees_theme',
|
||||
# 'layer_styles']:
|
||||
# sql = """ALTER TABLE bdtopo3.%s
|
||||
# SET SCHEMA public;"""%tab
|
||||
# with con.begin() as cnx:
|
||||
# cnx.execute(sql)
|
||||
# print('Table %s SET TO SCHEMA bdtopo3'%(tab))
|
||||
|
||||
lst_zip = [
|
||||
'/vsizip//home/colas/Craig/CEN_38/BD Vectorielles/IGN - BDTOPO - 202309/bdtopo_dep07_202309_geopackage.zip/BDT_3-3_GPKG_LAMB93_D007-ED2023-09-15/BDT_3-3_GPKG_LAMB93_D007-ED2023-09-15.gpkg',
|
||||
'/vsizip//home/colas/Craig/CEN_38/BD Vectorielles/IGN - BDTOPO - 202309/bdtopo_dep26_202309_geopackage.zip/BDT_3-3_GPKG_LAMB93_D026-ED2023-09-15/BDT_3-3_GPKG_LAMB93_D026-ED2023-09-15.gpkg',
|
||||
'/vsizip//home/colas/Craig/CEN_38/BD Vectorielles/IGN - BDTOPO - 202309/bdtopo_dep42_202309_geopackage.zip/BDT_3-3_GPKG_LAMB93_D042-ED2023-09-15/BDT_3-3_GPKG_LAMB93_D042-ED2023-09-15.gpkg'
|
||||
]
|
||||
|
||||
lst_tab = [
|
||||
'cimetiere', # BATI
|
||||
'construction_surfacique', # BATI
|
||||
'reservoir',
|
||||
'batiment',
|
||||
'troncon_de_route',
|
||||
'piste_d_aerodrome',
|
||||
'troncon_de_voie_ferree',
|
||||
'terrain_de_sport',
|
||||
]
|
||||
# cimetiere
|
||||
# construction_surfacique
|
||||
# reservoir
|
||||
# batiment
|
||||
# terrain_de_sport
|
||||
|
||||
|
||||
dict_cols = {
|
||||
'id':'cleabs'
|
||||
}
|
||||
|
||||
|
||||
PATH = "/home/colas/Documents/5_BDD/6_IGN/BDTOPO/BDTOPO_3-3_TOUSTHEMES_SHP_LAMB93_D074_2023-09-15/BDTOPO/1_DONNEES_LIVRAISON_2023-09-00196/BDT_3-3_SHP_LAMB93_D074-ED2023-09-15/BATI"
|
||||
PATH2 = '../TRANSPORT'
|
||||
for tab in lst_tab:
|
||||
file = tab.upper()+'.shp'
|
||||
if file in listdir(path.join(PATH)):
|
||||
df = gpd.read_file(path.join(PATH,file))
|
||||
df.columns = df.columns.str.lower()
|
||||
df.set_index('id',inplace=True)
|
||||
# df.rename(columns=dict_cols,inplace=True)
|
||||
print('Load %s'%tab)
|
||||
else: continue
|
||||
|
||||
# columns_type = get_columns(con,schema_cad,tab)
|
||||
# geom_type = [x for x in columns_type if x['name']=='geometrie']
|
||||
# print('Ident geom_type OK')
|
||||
|
||||
# if geom_type:
|
||||
# geom_type = geom_type[0]
|
||||
|
||||
# if df.geometry.name != geom_type['name']:
|
||||
# df.rename_geometry(geom_type['name'],inplace=True)
|
||||
if df.geometry.name != 'geom':
|
||||
df.rename_geometry('geom',inplace=True)
|
||||
|
||||
has_z = True if df.has_z.all() else False
|
||||
unique_geom = df.geom_type.unique()
|
||||
geom_type = df.geom_type[0].upper() if len(unique_geom) == 1 else 'GEOMETRY'
|
||||
geom_type = geom_type+'Z'if has_z else geom_type
|
||||
|
||||
(df
|
||||
.to_wkt()
|
||||
.to_sql(
|
||||
tab,
|
||||
con,
|
||||
schema_cad,
|
||||
if_exists='append',
|
||||
index=True,
|
||||
dtype={
|
||||
'geom':Geometry(geometry_type=geom_type,srid=2154)
|
||||
}
|
||||
)
|
||||
)
|
||||
print(tab)
|
||||
|
||||
|
||||
# get_table_pkey(con,schema_cad,tab)
|
||||
# get_columns(con,schema_cad,tab)
|
||||
|
||||
## 38
|
||||
# Load troncon_de_voie_ferree
|
||||
# Ident geom_type OK
|
||||
# troncon_de_voie_ferree
|
||||
# Load terrain_de_sport
|
||||
# Ident geom_type OK
|
||||
# terrain_de_sport
|
||||
## 26
|
||||
# Load cimetiere
|
||||
# Ident geom_type OK
|
||||
# cimetiere
|
||||
# Load construction_surfacique
|
||||
# Ident geom_type OK
|
||||
# construction_surfacique
|
||||
# Load reservoir
|
||||
# Ident geom_type OK
|
||||
# reservoir
|
||||
# Load batiment
|
||||
# Ident geom_type OK
|
||||
# batiment
|
||||
|
||||
## NO INSERT
|
||||
# Load troncon_de_route
|
||||
# Ident geom_type OK
|
||||
|
||||
|
||||
for Zip in lst_zip:
|
||||
print('\n'+Zip+'\n')
|
||||
for tab in get_list_table(con,schema_cad):
|
||||
if tab not in lst_tab:
|
||||
continue
|
||||
if Zip in lst_zip[:2] or (
|
||||
Zip==lst_zip[2] and tab in [
|
||||
'cimetiere',
|
||||
'construction_surfacique',
|
||||
'reservoir',
|
||||
'batiment',
|
||||
]):
|
||||
continue
|
||||
df = gpd.read_file(Zip,layer=tab)
|
||||
print('Load %s'%tab)
|
||||
|
||||
columns_type = get_columns(con,schema_cad,tab)
|
||||
geom_type = [x for x in columns_type if x['name']=='geometrie']
|
||||
print('Ident geom_type OK')
|
||||
|
||||
if geom_type:
|
||||
geom_type = geom_type[0]
|
||||
|
||||
if df.geometry.name != geom_type['name']:
|
||||
df.rename_geometry(geom_type['name'],inplace=True)
|
||||
|
||||
df.to_wkt().to_sql(
|
||||
tab,
|
||||
con,
|
||||
schema_cad,
|
||||
if_exists='append',
|
||||
index=False,
|
||||
dtype={geom_type['name']:geom_type['type']} if geom_type else None
|
||||
)
|
||||
print(tab)
|
||||
@@ -0,0 +1,40 @@
|
||||
from geoalchemy2 import Geometry
|
||||
import geopandas as gpd
|
||||
from sqlalchemy import create_engine
|
||||
|
||||
user_cad = 'cgeier' # utilisateur de connexion à la bdd
|
||||
pwd_cad = 'adm1n*bdCen' # mot de passe de la bdd
|
||||
adr_cad = '91.134.194.221' # adresse ip de la bdd
|
||||
port_cad = '5432' # port de la bdd
|
||||
base_cad = 'rhomeo' # nom de la bdd
|
||||
schema_cad = 'refgeo'
|
||||
con = create_engine('postgresql+psycopg2://{0}:{1}@{2}:{3}/{4}'.format(user_cad,pwd_cad,adr_cad,port_cad,base_cad), echo=False)
|
||||
|
||||
|
||||
file = '/home/colas/Documents/5_BDD/BASSIN_VERSANT/AGENCE EAU/bvmdo/bvmdo.shp'
|
||||
df = gpd.read_file(file)
|
||||
df.rename_geometry('geom', inplace=True)
|
||||
|
||||
has_z = True if df.has_z.all() else False
|
||||
unique_geom = df.geom_type.unique()
|
||||
geom_type = df.geom_type[0].upper() if len(unique_geom) == 1 else 'GEOMETRY'
|
||||
geom_type = geom_type+'Z'if has_z else geom_type
|
||||
|
||||
(df
|
||||
.to_wkt()
|
||||
.to_sql(
|
||||
'zh',
|
||||
con,
|
||||
schema_cad,
|
||||
if_exists='append',
|
||||
index=False,
|
||||
dtype={
|
||||
'geom':Geometry(geometry_type=geom_type,srid=2154)
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
sql = 'SELECT * FROM tachenew.tache_urbaine'
|
||||
sql = 'SELECT * FROM arvfnew.arvf_global_buffer'
|
||||
df = gpd.read_postgis(sql,con)
|
||||
@@ -0,0 +1,369 @@
|
||||
from pycen import con_rho
|
||||
|
||||
def indicI12_zh(con):
|
||||
sql = """
|
||||
DROP TABLE IF EXISTS indicnew.indic_sig_zh;
|
||||
CREATE TABLE IF NOT EXISTS indicnew.indic_sig_zh AS (
|
||||
SELECT DISTINCT
|
||||
zh.id_bdd,
|
||||
st_area2d(zh.geom)::double precision AS area
|
||||
FROM refgeo.zh
|
||||
);
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD CONSTRAINT indicnew_sig_zh_pkey PRIMARY KEY (id_bdd);
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS isole double precision;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS diffus double precision;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS groupe double precision;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS peudense double precision;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS dense double precision;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS tresdense double precision;
|
||||
|
||||
--DROP TABLE IF EXISTS indicnew.indic_sig_zh_temp;
|
||||
CREATE TABLE IF NOT EXISTS indicnew.indic_sig_zh_temp AS (
|
||||
SELECT
|
||||
zh.id_bdd,
|
||||
tache_urbaine.reclasse AS reclasse,
|
||||
Sum(st_area2d(st_intersection(tache_urbaine.geom, zh.geom)))::double precision AS reclasse_surf
|
||||
FROM tachenew.tache_urbaine
|
||||
JOIN refgeo.zh ON (st_intersects(tache_urbaine.geom, zh.geom))
|
||||
GROUP BY zh.id_bdd, tache_urbaine.reclasse, zh.geom
|
||||
);
|
||||
UPDATE indicnew.indic_sig_zh SET isole = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '1- isolé');
|
||||
UPDATE indicnew.indic_sig_zh SET diffus = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '2- diffus');
|
||||
UPDATE indicnew.indic_sig_zh SET groupe = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '3- groupé');
|
||||
UPDATE indicnew.indic_sig_zh SET peudense = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '4- urbain peu dense');
|
||||
UPDATE indicnew.indic_sig_zh SET dense = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '5- urbain dense');
|
||||
UPDATE indicnew.indic_sig_zh SET tresdense = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '6- urbain très dense');
|
||||
DROP TABLE IF EXISTS indicnew.indic_sig_zh_temp;
|
||||
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS bati_area double precision;
|
||||
WITH t2 AS (
|
||||
SELECT
|
||||
t1.id_bdd,
|
||||
t1.surf
|
||||
FROM refgeo.zh
|
||||
JOIN (
|
||||
SELECT
|
||||
zh.id_bdd,
|
||||
Sum(st_area2d(st_intersection(zh.geom, tache_urbaine.geom))) AS surf
|
||||
FROM refgeo.zh
|
||||
JOIN tachenew.tache_urbaine ON (st_intersects(zh.geom, tache_urbaine.geom))
|
||||
GROUP BY id_bdd
|
||||
) AS t1 USING (id_bdd)
|
||||
)
|
||||
UPDATE indicnew.indic_sig_zh SET bati_area = t2.surf FROM t2 WHERE indic_sig_zh.id_bdd = t2.id_bdd;
|
||||
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS arvf_area double precision;
|
||||
WITH t2 AS (
|
||||
SELECT
|
||||
t1.id_bdd,
|
||||
t1.surf
|
||||
FROM refgeo.zh
|
||||
JOIN (
|
||||
SELECT
|
||||
zh.id_bdd,
|
||||
Sum(st_area2d(st_intersection(zh.geom, arvf_global_buffer.geom))) AS surf
|
||||
FROM refgeo.zh
|
||||
JOIN arvfnew.arvf_global_buffer ON (st_intersects(zh.geom, arvf_global_buffer.geom))
|
||||
GROUP BY id_bdd
|
||||
) AS t1 USING (id_bdd)
|
||||
)
|
||||
UPDATE indicnew.indic_sig_zh SET arvf_area = t2.surf FROM t2 WHERE indic_sig_zh.id_bdd = t2.id_bdd;
|
||||
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS artif_area double precision;
|
||||
WITH t2 AS (
|
||||
SELECT
|
||||
t1.id_bdd,
|
||||
t1.surf
|
||||
FROM refgeo.zh
|
||||
JOIN (
|
||||
SELECT
|
||||
zh.id_bdd,
|
||||
Sum(st_area2d(st_intersection(zh.geom, tache_artif.geom))) AS surf
|
||||
FROM refgeo.zh
|
||||
JOIN tachenew.tache_artif ON (st_intersects(zh.geom, tache_artif.geom))
|
||||
GROUP BY id_bdd
|
||||
) AS t1 USING (id_bdd)
|
||||
)
|
||||
UPDATE indicnew.indic_sig_zh SET artif_area = t2.surf FROM t2 WHERE indic_sig_zh.id_bdd = t2.id_bdd;
|
||||
"""
|
||||
with con.begin() as cnx:
|
||||
cnx.execute(sql)
|
||||
print('indicI12_zh created')
|
||||
|
||||
|
||||
def indicI12_zh_buff(con):
|
||||
sql = '''
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS area_buff double precision;
|
||||
UPDATE indicnew.indic_sig_zh SET area_buff = st_area2d(zh.geom_buff) FROM refgeo.zh WHERE indic_sig_zh.id_bdd = zh.id_bdd;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS isole_buff double precision;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS diffus_buff double precision;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS groupe_buff double precision;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS peudense_buff double precision;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS dense_buff double precision;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS tresdense_buff double precision;
|
||||
|
||||
--DROP TABLE IF EXISTS indicnew.indic_sig_zh_temp;
|
||||
CREATE TABLE IF NOT EXISTS indicnew.indic_sig_zh_temp AS (
|
||||
SELECT
|
||||
zh.id_bdd,
|
||||
tache_urbaine.reclasse AS reclasse,
|
||||
Sum(st_area2d(st_Intersection(tache_urbaine.geom, zh.geom_buff)))::double precision AS reclasse_surf
|
||||
FROM tachenew.tache_urbaine
|
||||
JOIN refgeo.zh ON (st_intersects(tache_urbaine.geom, zh.geom_buff))
|
||||
GROUP BY zh.id_bdd, tache_urbaine.reclasse, zh.geom_buff
|
||||
);
|
||||
UPDATE indicnew.indic_sig_zh SET isole_buff = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '1- isolé');
|
||||
UPDATE indicnew.indic_sig_zh SET diffus_buff = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '2- diffus');
|
||||
UPDATE indicnew.indic_sig_zh SET groupe_buff = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '3- groupé');
|
||||
UPDATE indicnew.indic_sig_zh SET peudense_buff = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '4- urbain peu dense');
|
||||
UPDATE indicnew.indic_sig_zh SET dense_buff = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '5- urbain dense');
|
||||
UPDATE indicnew.indic_sig_zh SET tresdense_buff = (SELECT indic_sig_zh_temp.reclasse_surf FROM indicnew.indic_sig_zh_temp WHERE indic_sig_zh.id_bdd = indic_sig_zh_temp.id_bdd AND indic_sig_zh_temp.reclasse = '6- urbain très dense');
|
||||
DROP TABLE IF EXISTS indicnew.indic_sig_zh_temp;
|
||||
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS bati_area_buff double precision;
|
||||
WITH t2 AS (
|
||||
SELECT
|
||||
t1.id_bdd,
|
||||
t1.surf
|
||||
FROM refgeo.zh
|
||||
JOIN (
|
||||
SELECT
|
||||
zh.id_bdd,
|
||||
Sum(st_area2d(st_Intersection(zh.geom_buff, tache_urbaine.geom))) AS surf
|
||||
FROM refgeo.zh
|
||||
JOIN tachenew.tache_urbaine ON (st_intersects(zh.geom_buff, tache_urbaine.geom))
|
||||
GROUP BY id_bdd
|
||||
) AS t1 USING (id_bdd)
|
||||
)
|
||||
UPDATE indicnew.indic_sig_zh SET bati_area_buff = t2.surf FROM t2 WHERE indic_sig_zh.id_bdd = t2.id_bdd;
|
||||
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS arvf_area_buff double precision;
|
||||
WITH t2 AS (
|
||||
SELECT
|
||||
t1.id_bdd,
|
||||
t1.surf
|
||||
FROM refgeo.zh
|
||||
JOIN (
|
||||
SELECT
|
||||
zh.id_bdd,
|
||||
Sum(st_area2d(st_intersection(zh.geom_buff, arvf_global_buffer.geom))) AS surf
|
||||
FROM refgeo.zh
|
||||
JOIN arvfnew.arvf_global_buffer ON (st_intersects(zh.geom_buff, arvf_global_buffer.geom))
|
||||
GROUP BY id_bdd
|
||||
) AS t1 USING (id_bdd)
|
||||
)
|
||||
UPDATE indicnew.indic_sig_zh SET arvf_area_buff = t2.surf FROM t2 WHERE indic_sig_zh.id_bdd = t2.id_bdd;
|
||||
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS artif_area_buff double precision;
|
||||
WITH t2 AS (
|
||||
SELECT
|
||||
t1.id_bdd,
|
||||
t1.surf
|
||||
FROM refgeo.zh
|
||||
JOIN (
|
||||
SELECT
|
||||
zh.id_bdd,
|
||||
Sum(st_area2d(st_intersection(zh.geom_buff, tache_artif.geom))) AS surf
|
||||
FROM refgeo.zh
|
||||
JOIN tachenew.tache_artif ON (st_intersects(zh.geom_buff, tache_artif.geom))
|
||||
GROUP BY id_bdd
|
||||
) AS t1 USING (id_bdd)
|
||||
)
|
||||
UPDATE indicnew.indic_sig_zh SET artif_area_buff = t2.surf FROM t2 WHERE indic_sig_zh.id_bdd = t2.id_bdd;
|
||||
'''
|
||||
with con.begin() as cnx:
|
||||
cnx.execute(sql)
|
||||
print('indicI12_zh_buff created')
|
||||
|
||||
|
||||
def indicI13_zh(con):
|
||||
sql = """
|
||||
-- Pression agricole sur sites
|
||||
ALTER TABLE IF EXISTS indicnew.indic_sig_zh
|
||||
DROP COLUMN IF EXISTS agri_ign_impact_area;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN IF NOT EXISTS agri_ign_impact_area double precision;
|
||||
WITH calcul_impact_rpg AS (
|
||||
SELECT
|
||||
ilots_sites.id_bdd,
|
||||
Sum(ilots_sites.surf_impact) AS surf_impact,
|
||||
Sum(ilots_sites.surf_impact) * 100 / ilots_sites.surf_site AS pourc_impact
|
||||
FROM (
|
||||
SELECT
|
||||
t1.num_ilot,
|
||||
id_bdd,
|
||||
st_area(t2.geom) AS surf_site,
|
||||
st_area(st_intersection(t1.geom, t2.geom)) AS surf_inters,
|
||||
(st_area(st_intersection(t1.geom, t2.geom))) * t1.pourc_impact AS surf_impact,
|
||||
st_intersection(t1.geom, t2.geom) AS geom
|
||||
FROM rpgnew.rpg_global t1
|
||||
JOIN refgeo.zh t2 ON (st_intersects(t1.geom, t2.geom))
|
||||
) AS ilots_sites
|
||||
GROUP BY ilots_sites.id_bdd, ilots_sites.surf_site
|
||||
)
|
||||
UPDATE indicnew.indic_sig_zh SET agri_ign_impact_area = calcul_impact_rpg.surf_impact FROM calcul_impact_rpg WHERE indic_sig_zh.id_bdd = calcul_impact_rpg.id_bdd;
|
||||
-- Requête exécutée avec succès en 2 s 116 msec.
|
||||
"""
|
||||
with con.begin() as cnx:
|
||||
cnx.execute(sql)
|
||||
print('indicI13_zh created')
|
||||
|
||||
|
||||
def indicI13_zh_buff(con):
|
||||
sql = """
|
||||
-- Pression agricole sur sites_buffer
|
||||
ALTER TABLE IF EXISTS indicnew.indic_sig_zh
|
||||
DROP COLUMN IF EXISTS agri_ign_impact_area_buff;
|
||||
ALTER TABLE indicnew.indic_sig_zh
|
||||
ADD COLUMN agri_ign_impact_area_buff double precision;
|
||||
WITH calcul_impact_rpg_buff AS (
|
||||
SELECT
|
||||
ilots_sites.id_bdd,
|
||||
Sum(ilots_sites.surf_impact_buff) AS surf_impact_buff,
|
||||
Sum(ilots_sites.surf_impact_buff) * 100 / ilots_sites.surf_site_buff AS pourc_impact_buff
|
||||
FROM (
|
||||
SELECT
|
||||
t1.num_ilot,
|
||||
t2.id_bdd,
|
||||
st_area(t2.geom_buff) AS surf_site_buff,
|
||||
st_area(st_intersection(t1.geom, t2.geom_buff)) AS surf_inters,
|
||||
(st_area(st_intersection(t1.geom, t2.geom_buff))) * t1.pourc_impact AS surf_impact_buff,
|
||||
st_intersection(t1.geom, t2.geom_buff) AS geom
|
||||
FROM rpgnew.rpg_global t1
|
||||
JOIN refgeo.zh t2 ON (st_intersects(t1.geom, t2.geom_buff))
|
||||
) AS ilots_sites
|
||||
GROUP BY ilots_sites.id_bdd, ilots_sites.surf_site_buff
|
||||
)
|
||||
UPDATE indicnew.indic_sig_zh SET agri_ign_impact_area_buff = calcul_impact_rpg_buff.surf_impact_buff FROM calcul_impact_rpg_buff WHERE indic_sig_zh.id_bdd = calcul_impact_rpg_buff.id_bdd;
|
||||
-- Requête exécutée avec succès en 4 s 843 msec.
|
||||
"""
|
||||
with con.begin() as cnx:
|
||||
cnx.execute(sql)
|
||||
print('indicI13_zh_buff created')
|
||||
|
||||
def indicI13_bv(con):
|
||||
sql = """
|
||||
-- Pression agricole sur BVMDO
|
||||
ALTER TABLE IF EXISTS indicnew.indic_sig_bvmdo
|
||||
DROP COLUMN IF EXISTS agri_ign_impact_area;
|
||||
ALTER TABLE indicnew.indic_sig_bvmdo
|
||||
ADD COLUMN agri_ign_impact_area double precision;
|
||||
WITH calcul_impact_rpg_bvmdo AS (
|
||||
SELECT
|
||||
ilots_bvmdo.cmdo,
|
||||
Sum(ilots_bvmdo.surf_impact) AS surf_impact,
|
||||
Sum(ilots_bvmdo.surf_impact) * 100 / ilots_bvmdo.surf_bvmdo AS pourc_impact
|
||||
FROM (
|
||||
SELECT
|
||||
t1.num_ilot,
|
||||
t2.cmdo,
|
||||
st_area(t2.geom) AS surf_bvmdo,
|
||||
st_area(st_intersection(t1.geom, t2.geom)) AS surf_inters,
|
||||
(st_area(st_intersection(t1.geom, t2.geom))) * t1.pourc_impact AS surf_impact,
|
||||
st_intersection(t1.geom, t2.geom) AS geom
|
||||
FROM rpgnew.rpg_global t1
|
||||
JOIN refgeo.bvmdo t2 ON (st_intersects(t1.geom, t2.geom))
|
||||
) AS ilots_bvmdo
|
||||
GROUP BY ilots_bvmdo.cmdo, ilots_bvmdo.surf_bvmdo
|
||||
)
|
||||
UPDATE indicnew.indic_sig_bvmdo SET agri_ign_impact_area = calcul_impact_rpg_bvmdo.surf_impact FROM calcul_impact_rpg_bvmdo WHERE indic_sig_bvmdo.cmdo = calcul_impact_rpg_bvmdo.cmdo;
|
||||
-- Requête exécutée avec succès en 6 s 414 msec.
|
||||
"""
|
||||
with con.begin() as cnx:
|
||||
cnx.execute(sql)
|
||||
print('indicI13_bv created')
|
||||
|
||||
|
||||
def create_zhGeom_buff(con):
|
||||
sql = """
|
||||
ALTER TABLE refgeo.zh ADD COLUMN IF NOT EXISTS geom_buff geometry(MultiPolygon,2154);
|
||||
UPDATE refgeo.zh
|
||||
SET geom_buff = st_multi(st_difference(st_buffer(zh.geom, ( |/ (st_area(zh.geom)*2/pi()) ) - ( |/ (st_area(zh.geom)/pi()) ), 40), zh.geom));
|
||||
"""
|
||||
with con.begin() as cnx:
|
||||
cnx.execute(sql)
|
||||
print('geom_buff created')
|
||||
|
||||
def indicBilan(con):
|
||||
sql = """
|
||||
DROP TABLE IF EXISTS indicnew.indic_bilan_zh;
|
||||
CREATE TABLE indicnew.indic_bilan_zh AS
|
||||
WITH
|
||||
t1 AS (
|
||||
SELECT zh.id_bdd as id_bdd, Count(*) as nb_zone_hydro, Sum(indic_sig_bvmdo.area) as surf_zone_hydro, Sum(indic_sig_bvmdo.isole) as isole_zone_hydro, Sum(indic_sig_bvmdo.diffus) as diffus_zone_hydro, Sum(indic_sig_bvmdo.groupe) as groupe_zone_hydro, Sum(indic_sig_bvmdo.peudense) as peudense_zone_hydro, Sum(indic_sig_bvmdo.dense) as dense_zone_hydro, Sum(indic_sig_bvmdo.tresdense) as tresdense_zone_hydro, Sum(indic_sig_bvmdo.bati_area) as surf_zone_hydro_bati, Sum(indic_sig_bvmdo.arvf_area) as surf_zone_hydro_arvf, Sum(indic_sig_bvmdo.artif_area) as surf_zone_hydro_artif, Sum(indic_sig_bvmdo.agri_ign_impact_area) as surf_zone_hydro_agri
|
||||
FROM refgeo.zh
|
||||
JOIN refgeo.bvmdo ON (st_intersects(zh.geom, bvmdo.geom))
|
||||
JOIN indicnew.indic_sig_bvmdo USING (cmdo)
|
||||
GROUP BY zh.id_bdd)
|
||||
SELECT
|
||||
id_bdd,
|
||||
coalesce(indic_sig_zh.area, 0) as surf_zh,
|
||||
coalesce(indic_sig_zh.area, 0) +
|
||||
coalesce(indic_sig_zh.area_buff, 0) as surf_rhomeo,
|
||||
CASE WHEN (coalesce(indic_sig_zh.bati_area, 0) + coalesce(indic_sig_zh.bati_area_buff, 0)) > 0
|
||||
THEN
|
||||
(coalesce(indic_sig_zh.peudense, 0) +
|
||||
coalesce(indic_sig_zh.dense, 0) +
|
||||
coalesce(indic_sig_zh.tresdense, 0) +
|
||||
coalesce(indic_sig_zh.peudense_buff, 0) +
|
||||
coalesce(indic_sig_zh.dense_buff, 0) +
|
||||
coalesce(indic_sig_zh.tresdense_buff, 0)) / (coalesce(indic_sig_zh.bati_area, 0) + coalesce(indic_sig_zh.bati_area_buff, 0)) * 100
|
||||
ELSE
|
||||
0
|
||||
END as presdirect_urba,
|
||||
(coalesce(indic_sig_zh.artif_area, 0) +
|
||||
coalesce(indic_sig_zh.artif_area_buff, 0)) / (coalesce(indic_sig_zh.area, 0) + coalesce(indic_sig_zh.area_buff, 0)) * 100 as presdirect_artif,
|
||||
(coalesce(indic_sig_zh.agri_ign_impact_area, 0) + coalesce(indic_sig_zh.agri_ign_impact_area_buff, 0)) / (indic_sig_zh.area + indic_sig_zh.area_buff) * 100 as presdirect_agri,
|
||||
CASE WHEN t1.surf_zone_hydro_bati > 0 THEN
|
||||
(coalesce(t1.peudense_zone_hydro, 0) +
|
||||
coalesce(t1.dense_zone_hydro, 0) +
|
||||
coalesce(t1.tresdense_zone_hydro, 0)) / t1.surf_zone_hydro_bati * 100
|
||||
ELSE
|
||||
0
|
||||
END as presindir_urba,
|
||||
coalesce(t1.surf_zone_hydro_artif, 0) / t1.surf_zone_hydro * 100 as presindir_artif,
|
||||
coalesce(t1.surf_zone_hydro_agri, 0) / t1.surf_zone_hydro * 100 as presindir_agri,
|
||||
LEFT(current_timestamp(0)::text, 10) as date_maj
|
||||
FROM refgeo.zh
|
||||
INNER JOIN indicnew.indic_sig_zh USING (id_bdd)
|
||||
INNER JOIN t1 USING (id_bdd);
|
||||
ALTER TABLE indicnew.indic_bilan_zh DROP CONSTRAINT IF EXISTS indic_bilan_zh_pkey;
|
||||
ALTER TABLE indicnew.indic_bilan_zh
|
||||
ADD CONSTRAINT indic_bilan_zh_pkey PRIMARY KEY(id_bdd);
|
||||
"""
|
||||
with con.begin() as cnx:
|
||||
cnx.execute(sql)
|
||||
print('indicBilan created')
|
||||
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
from pycen import con_rho
|
||||
|
||||
create_zhGeom_buff(con_rho)
|
||||
indicI12_zh(con_rho)
|
||||
indicI12_zh_buff(con_rho)
|
||||
indicI13_zh(con_rho)
|
||||
indicI13_zh_buff(con_rho)
|
||||
indicBilan(con_rho)
|
||||
Reference in New Issue
Block a user