Skip to main content
Sign in
Snippets Groups Projects

Ajout des données Environnement

5 files
+ 2392
9
Compare changes
  • Side-by-side
  • Inline

Files

@@ -6,6 +6,8 @@ import json
@dataclass()
class DataEnvironnement:
occupation_sols = None
repertoire_occupation_circo = None
dictionnaire_sites_pollues = None
nb_sites_pollues_circo = None
nb_sites_pollues_dep = None
@@ -29,6 +31,70 @@ class GetEnvironnement:
self.circo = data.circo
self.data.environnement.sources = utilitaires.get_sources("environnement")
def get_occupation_sols(self):
# Données cartographiques
utilitaires.db_exec(
self.db.mogrify(
f"""
SELECT t.libelle_fr, t.couleur, st_asgeojson(t.wkb_geometry)
FROM sdes_occupation_sols_2012 as t
LEFT JOIN zone_circo c
ON st_intersects(t.wkb_geometry, c.wkb_geometry)
WHERE c.ref = '{self.circo}';"""
)
)
self.data.environnement.occupation_sols = [
{
"type_occupation": r[0],
"couleur": r[1],
"geojson": dict(
type="Feature", properties=dict(), geometry=json.loads(r[2])
),
}
for r in self.db.fetchall()
]
# Données pour le tableau au niveau des circonscriptions
utilitaires.db_exec(
self.db.mogrify(
f"""SELECT tot_circo.nom_occupation, tot_circo.part_circo, tot_france.part_france FROM (
WITH somme_aire_circo AS (
SELECT SUM(st_area(st_intersection(c1.wkb_geometry, oc1.wkb_geometry))) as somme_circo
FROM sdes_occupation_sols_2012 as oc1
LEFT JOIN zone_circo c1
ON st_intersects(c1.wkb_geometry, oc1.wkb_geometry)
WHERE c1.ref = '{self.circo}')
SELECT oc.type_occupation, oc.nom_occupation, SUM(oc.aire_oc/somme_aire_circo.somme_circo) as part_circo
FROM somme_aire_circo, (
SELECT t.code_12 as type_occupation, t.libelle_fr AS nom_occupation,
st_area(st_intersection(c.wkb_geometry,t.wkb_geometry)) as aire_oc
FROM sdes_occupation_sols_2012 as t
LEFT JOIN zone_circo c ON st_intersects(c.wkb_geometry, t.wkb_geometry)
WHERE c.ref = '{self.circo}'
) as oc
GROUP BY 1, 2
ORDER BY part_circo
) as tot_circo
LEFT JOIN (
WITH somme_aire_france AS (SELECT SUM(area_ha) as somme FROM sdes_occupation_sols_2012)
SELECT o.code_12 as type_france, SUM(o.area_ha/somme_aire_france.somme) as part_france
FROM sdes_occupation_sols_2012 as o, somme_aire_france
GROUP BY 1
) as tot_france
ON tot_circo.type_occupation = tot_france.type_france;"""
)
)
self.data.environnement.nb_occup = [
{
"type_occupation": r[0],
"part_superficie_circo": float(r[1]),
"part_superficie_france": float(r[2]),
}
for r in self.db.fetchall()
]
# Données pour ce type agricole au niveau français
def get_sites_pollues(self):
utilitaires.db_exec(
db.mogrify(
Loading