Cette technique de de délimitation  d'enneigement et de calcul des surface d'un bassin versant en présence de uages est une variante de l'élaboration de l''enneigement d'un bassin présenté  ici

https://nivo06.knobuntu.fr/index.php/technique/63-technique/340-surfaces-d-enneigement-d-un-bassin-versant

Avec les nouvelles versions  de PYTHON 3 et QGIS 3.10 il a été nécessaire de réécrire le script python pour l'adapter à la nnouvelle version.  D'autre part la vectorisation dans QGIS 3.10 provoque des erreurs de polygones qu'il a fallut corriger.

Ce qui change

Calcul de la surface Raster

La polygonisation des trames (raster) provoque des erreurs dans le cas de formes complexes .

S'il  a été  possible de simplifier la geometrie pour lle Modele Numerique  duTerrain ( MNT )des Alpes et recuperer un polygone sans erreur, ce n'a pa été  le cas pour les formes complexes de repartition de la neige  (cartes FSC fractional snow cover).

La vectorisation de ces trames provoque des auto-intsections, ,polygones emmelés,  moeuds doubles , que QGIS ne sait pas résoudre.

Les différentes tecniques de simplification de géométrie, remodelage des entités, découpe de polygones ne donnent pas de résultas probants. Et la résolution manuelle est  bien trop longue ,contraignante et fastidieuse. Et le resultat n'est pas garanti.

La solution retenue sera donc de calculer la surface des cellules élementaires du raster FSC et par cohérence, je vais appliquer  le script équivalent au calcul des surfaces de bassin au dessus d'une altitude donnée.

Voici un extrait du code du traitement des surfaces de neige visible

 

neigevisiblepythonLe principe:

  1. decouper le raster FSC au dimensions du bassin( ligne 245-252)
  2. demander le nb de cellules en X et Y( lignes 259 et 260)
  3. Calcul de la dimension des cellules ( ligne 261 265 et 266)
  4. Une double boucle en X etY permet de lire tous les contenus des cellules (269-277
  5. On compte ensuite celles qui ont un code 82 ou celles >99 qui sont les codes neige
  6. La surface est obtenue en multipliant le nb de cellules selectionnées par la hauteur et la la largeur des cellules Le resultat est divisé par 1000000 pour obtenir la surface en km2 ( ligne 278)

 

Réécriture du code en PYTHON 3

La version précédente était écctite en python2 . Il a fallut réécrire le code pour l'adapter à QGIS 3 et Python 3

notamment utilisation de QgsProject ,changement des algorithme processing .....

 

le code python et les bassins versant des Alpes  sont accessibles sut github    https://github.com/gknopf/Surface-d-enneigement

 

 

 

 

 

 

 

 

 

 

 

Vis5D

Vis5d est un système de visualistion 3D  écrit en  C, utilisé principalement pour animer des simulations météorologiques. Il s'agissait du premier système à produire des affichages 3D entièrement interactifs animés d'ensembles de données volumétriques à dynamique temporelle,, ainsi que du premier système de visualisation 3D open source.  Il est sous licence GNU GPL.

il a fallut bien des  compétences  et d'aides externes pour recompiler cet outil . Il est maintenant dépassé mais donne encore  de bons résultats malgré son age. L'ergonomie surtout,  n'est plus ce que l'on pratique actuellement

La vidéo présentée ci-dessous montre une application pratique du logiciel. Elle prend pour exemple le  passage de la perturbation du 10 février 2014 vu par le modèle AROME de Météo-France qui illustre la complexité des températures dans les Alpes du Sud et la détermination  de l'altitude de la limite pluie-neige en continuel mouvement

 

Modele AROME du 10Fevrier 2014 à OOUTC .Evolution horaire sur 30h de la limite pluie neige niveau 870hPa.

La couleur verte représente les températures entre 0 et +3 degrés  le dégradé de rouge les températures positives et le bleu les valeurs négatives.La circulation des  lignes de flux dans les Alpes du Sud  sont représentées  au niveau 850 hPa  par les lignes oranges.

vis5d

La couleur verte représente les températures entre 0 et +3 degrés  le dégradé de rouge les températures positives et le bleu les valeurs négatives.La circulation des  lignes de flux dans les Alpes du Sud  sont représentées  au niveau 850 hPa  par les lignes oranges.

La coupe au niveau de pression 870hPa illustre la variation tant spatiale que temporelle de la limite pluie neige entre l'arrivée de la perturbation active le 10 février à 00h et le passage en courant de Nord-Ouest le 11 au matin marquant la fin de l'épisode.
Le matin du 10 les précipitations sont intense et l'air froid d'Italie s'écoule dans un flux d'Est . Les températures à 06h sont de +1 à Sospel et Caussols . la limite pluie neige se situe vers 600 a 700m.(neige signalée à Cateauneuf de Grasse ). Les masses d'air douces qui remontent de Méditerranée vont relever significativement la limite pluie-neige. Sur le Cheiron,  la pluie est montée à plus de 1700m.  Greolière révèle un manteau neigeux ondulé  et crevassé  par la pluie. Près de la frontière Italienne, par contre l'air froid résiste. A 15h les températures coté Italien sont toujours négatives et la Lombarde entretient le temps neigeux sur la chaîne frontalière alors que les versants Sud sont sous l'influence du courant de Sud-Ouest à plus de 3 degrés. La limite de la pluie n'a pas du  dépassé les 1200m dans le domaine de la Lombarde . Un refroidissement intervient vers 19h accompagné de nouvelles précipitations qui déposent encore 30 cm à Estenc et 5cm à Gréolière La limite pluie neige s'abaisse alors en tous lieux vers 800m

 

 

 

On connait tous les grands massifs des Alpes mais leur délimitation est souvent confuse . des sites comme géol-alpes.com ou homoalpinus.com donnent des pistes pour la division des massifs mais montrent également que lesfrontières ne sont pas vraiment définies, et qu'il existe de multiples représentations qui s'avèrent parfois conflictuelles.

  • L'une d'elle que l'o peut considérer comme classique prend en compte l'aspect naturel comme la géologie, l'orographie, l'hydrographie ou encore le climat.
  • Une autre s'inscrivant dans un aspect plus humain  privilégie lles aspects économiques, comme par exemple le tourismeet  l'agriculture. Cette approche s'appuie sur des données statistiques et des délimitations administratives.
  • Enfin une troisiemme tient compte de la météorologie des grands courants à l'écoulement  perturbés par les alpes , générants les lignes de foehn , les retour d'Est en méditérranée et influencant le nivologie. Pour cette dernière discipline on a divisé les alpes en entités homogènes du point de vue précipitations, vents  et chutes de neiges. Le Mercantour et les Préalpes de Dignes sont classés en nivologies enmassifs du  Mercantour et du Haut-var/Haut-Verdon séparés par la vallée de la Tinée marquant la limite des retours d'Est enneigeant fortement la chaine frontalière.

La division que je détaille ici est la représentation classique se basant sur l'aspect naturel de l'hydrographie et l'orographie.

Je vais me servir

  • d'unecarte géoréférencée des grands massifs alpins servant d'ébauche.
  • de la courbe de niveaux 1500m pour une délimitation précise des contours.
  • des rivières et des cols.

Le but de cette étude est d'obtenir un fichier de formes polygonalaes qui poura être lu par un logiciel SIG (Systeme d'Information Géographique ) tel que QGIS ou OSM.

 

ebauche massifs

Méthode

Importation de l'ébauche des massifs

Importation du fichier image dans QGIS et géoréférencement par la commande

Dizitizing tools 

L'ajustement se fait par transparence a l'aide des boutons de commandes de déplacements,rotations ,ajustement par 2 points etc.

Remarque :Dizitizing tools est une exteznsion Qgis.  La carte n'ayant pas la même projection ne s'ajuste que partiellement sur de grands domaines. Mais la définition est suffisante à l'échelle d'un massif et peut etre réajusté

Tracé d'un massif

On va se servir de cett carte pour positionner approximativement le massif .

On cree une nouvelle couche vectorielle  polygonale en ajoutant un nouveau champ contenant le nom des massifs.

couche -> nouvelle couche -> nouvelle couche shapefile
- nom du fichier : ebauche massif
-type de fichier  : polygone

 Remarque: Le tracé peut etre grossier en dessous de 1500m car c'est le contour 1500m qui va délimiter le massif. au dessus les sommets doivent être plus précis et suivre les rivière et les cols.

 Raster 1500

c'est le raster d'élévation 1500m obtenu par la commande

raster > Calculatrice raster
paramètres :Bande raster : Dem_alpes-Nord, Fichier sortie Raster1500, Formule :Dem_alpes_Nord@1 >1500m

Commentaire; Dem alpes _nord est le fichier d'élévation terrain pour les Alpes . La  validation de la formule va creer un fichier raster de 2 classes 0 et 1  en moir et blanc. Le blanc représentant les valeurs de terrain supérieures à 1500m.

Decoupe selon un massif

On va découper le raster1500 de l'ensemble des Alpes aux dimension de l'ebauche du massif par la commande

raster  > contour > decouper selon un masque
parmetres : en entrée raster1500 , masque :ebauche_massif

Commentaire: On va ainsi obtenir un raster aux dimensions du massif.

 Vectoriser

On obtient le contor sous forme vectotielle par la commande

raster > converir > polygoniser
paramètre: en entrée la decoupe précédente

Filtrer

Pour ne retenir du vecteur précédents que les valeurs d'élévation supérieures à  1500m

Commande:

couche >filtrer 
paramètres: en entrée : le polygone précédent , le filtre : DN>0

Commentaire ; La couche vectorielle contient le champs DN de valeur 0 ou 1 : 1 correspond aux valeurs d'élévations > 1500m

Simplifier la geométrie

Pour limiter le nombre de points

Commande en mode édition sélectionner une entité

edition > simplifier l'entité
paramètre: Méthode simplifier par la distance , Tolérance 1 pixel

Commentaire : Le  polygone n'a pas besoin d'une grande précision le nombre de sommet passe de 10000 à 200

Vérification

Se placer en vue 3D dynamique pour une meilleure visualisation du terrain

Commande

Internet>qgis2threejs

Commentaire : en ajoutant les col et en dilatant l'image on vérifie le bon placement des sommets

Telechargement

Téléchargements des fichiers de contour de massif pour une utilisation dans QGIS  Massifs_alpins.zip

Le but de cette étude est de calculer les surfaces d'enneigementmalgré la  présence de nuages

On va prendre comme eemple le bassin de la tinée et les cartes Fractional snow cover  du 15 mai 2018 noté FSC20180515

Methode

La carte FSC20180515 est une photo satellite au format raster en bande unique grise en projection  WGS84. Pour calculer les surface dans QGIS  il faut une representation métrique identique  pour toutes les cartes calculées on prendra la projection Lambert 93

polygoniser une courbe de niveau

Sur la carte FSC20180515 on determinera visuellement la courbe de niveau qui représente le mieux la limite de la neige dans les secteurs en ciel clair.

On va ensuite isoler cette courbe de niveau '(ici 2000m) et transformer cette ligne en polygone noté poly2000alpes.shp

on découpe ce polygone aux limites du bassin versant noté dans l'esemple poly2000Tinee.shp

On va ensuite calculer l'intersection poly2000Tinée avec l'enveloppe des nuages du bassin pour obtenir les nuages qui sont dans la zone enneigée.

Calcul de l'emprise des nuages

Le code de la bande raster qui caractérisise lezs nuages a la valeur 30.

On va utiliser la calculatrice raster por isoler les nuages par la formule 30*(bande1=30)+ 0*(bande1!=30)

On va ensuite polygoniser, filtrer les valeurs 30 decouper au dimensions du bassin  pour obtenir les polygones nuages de la Tinée noté PolynuageTinee.shp

Nuages sur Neige

Cette étape consiste a séparer la couche des nuages pour ne retenir que celle qui couvre la partie enneigée puis calculer la surface.

On va cercher l'intersection des 2 polygones Poly2000Tinee et NuageTinee.

Fusionner les polygones de la couche rsultante en un seul et calculer la surface. pour l'esemple 90 km2

Calcul de l'étendue de la neige

cette section se fait de la même manière que le calcul de l'emprise des nuages en prenant comme valeur de la bande raster les nombres 82 (forets enneigées et 100 à 200 pour les différentes couches de neige.

dans  la calculatrice raster  la formule donne  200*(bande1=82)+ 200*(bande1>99)

Comme il y a beaucoup de fichier à traiter j'ai élaboré un script en python qui calcule ces surfaces

le script python pour ce calcul a utiliser dans qgis 2.14

Script python neige et masque des nuages sur neige

Le calcul de surface peut paraitre simple mais les traitements séquentiels pour aboutir à la dernière étape du calcul des surfaces est plus complexe qu'il n'y paraît. L'élaboration du script python qui va traiter des situations variées necessite quelques arrangement par rapport à la vidéo précédente.

Tout dabord le calcul des polygones de lignes de niveau ne donne pas de résultats satisfaisant : Qgis va fermer les lignes de niveaux en rejoignant le 1er et le dernier point ce qui va parfois couper un bassin en 2 parties ce qui n'est pas souhaitable.
Pour contourner le probleme on utilise le calculatrice raster  et on selectionne simplement les valeurs supérieures à une altitude dans le DEM (Data Elevation Model  ou MNT en francais Mouvement Naturel de Terrain)  puis on vectorise et on coupe au niveau d'un bassin.

Comme cette opération est assez longue sur l'ensemble des Alpes  et revient assez souvent j'ai précalculé ces fichiers entre 1000 et 3000m et stocké dans le répertoire QGis/alpes/Poly100//demalpes+altitude+.tif. Je vais m'en servir par la suite dans le script.

le script pour la délimitation des polygones des Alpes

D'autre part la réduction de plusieurs entités en un multipolygone ne se passe pas toujours très bien quand lla représentation des nuages est morcelée en de multiples cumulus .  j'ai répété l'opération fusion de polygone en un seul 3 fois de suite pour limiter ce problème .

Enfin la quantité de fichier à trater  est limitée. Chez moi il ne faut pas exploiter plus de 25 fichier FSC (fractional snow Cover) par serie.  Pour cela il suffit de les isoler dans un répertoire à part. Et même si l'erreur intervient, les fichiers déjà traités restent valables.

Le fichier de traitement  de la neige en présence de nuage est ici   Neigenuage.py

 les versions des programmes utilisés sont python2.7 et QGIS 2.14 ESSEN

 Les surfaces d'enneigement caculées du bassin de la Tinée au cours de l'hiver 2017-2018

 

osmosis800Les données vectorielles sont traitées dans QGIS par des fichiers shapefile. Mais quand on commence  à  importer des fichiers issus de OpenStreetMap le volume de données devient vite ingérable  et necessite un traitement par des bases de données spatiales. La base de données SPATIALITE de  QGIS est la plus adaptée et simple d'utilisation mais lorsqu'on veut avoir acces aux geometrie  pour des calculs externes  plus poussés, aux relations entre tables et aux requetes SQL,  il faut passer a POSTGIS qui est l'extension spatiale de POSTGRES

 

La derniere partie traite des importations des ficiers OSM  dans la base POSTGIS par OSMOSIS.

L'exposé se base sur une configuration LINUX

 

 

articles en relation

Installation  pstgress sur UBUNTU

Communauté francophone POSTGRESQL

Communautee francophone POSTGIS

 

installation de POSTGRESQL

 

On commence par installer le paquet postgresql.

utilisateur postgres en ligne de commande

$ sudo -i -u postgres 
Password: 

Désormais, l'invite de commande doit mentionner que vous êtes actif en tant que postgres. Pour lancer l'invite de commande SQL de PostgreSQL, tapez simplement :

psql

Vous devriez obtenir quelque chose comme :

psql (9.5.10)
Type "help" for help.

postgres=# 

Petit guide de survie pour le client psql

        \h pour l'aide-mémoire des commandes SQL
        \? pour l'aide-mémoire des commandes psql
        \g ou point-virgule en fin d'instruction pour exécuter la requête
        \q pour quitter

Créer un utilisateur PostgreSQL

Commencez par créer un nouvel utilisateur, qui portera par exemple le même nom que vous. Dans la ligne de commande ci-dessous, tapez (rappel : la partie « postgres=# » est l'invite de commande, il ne faut pas la retaper ! Ainsi, la commande ci-dessous requiert de taper « CREATE USER <nom_utilisateur>; », en remplaçant <nom_utilisateur> par un identifiant bien choisi) :

postgres=# CREATE USER knobuntu;

N'oubliez pas le point-virgule à la fin…

Par défaut, votre nouvel utilisateur n'a aucun droit. Donnez-lui la possibilité de créer de nouvelles bases de données :

postgres=# ALTER ROLE <nom_utilisateur> WITH CREATEDB;

Ensuite, créez une base de données pour votre utilisateur. Par exemple, vous pouvez prendre comme nom : nom_utilisateur. Ainsi, la connexion sera automatique.

si une base de données possède le même nom que l'utilisateur avec lequel on se connecte alors le client psql se connecte par défaut à cette base.
postgres=# CREATE DATABASE alpesosm OWNER knobuntu;

Attribuer un mot de passe à l'utilisateur pour qu'il puisse se connecter à la base (le ENCRYPTED permet l'utilisation de md5 dans le pg_hba.conf) :

postgres=# ALTER USER <nom_utilisateur> WITH ENCRYPTED PASSWORD 'mon_mot_de_passe';

Vous pouvez maintenant quitter, "redevenir vous-même" et relancer psql directement, en étant cette fois connecté sous votre propre nom :

postgres=# \q
postgres@ubuntu:~$ psql nom_base_de_donnee

La ligne de commande est devenue :

nom_base_de_donnee=>

Notez la transformation du # en > : vous n'êtes plus superutilisateur…

 

Installer POSTGIS et configurer

Sous ubuntu 17.4 les versions à installer sont postgresql9.6 et postgis 2.3

installation de UBUNTUGIS

sudo add-apt-repository ppa: ubuntugis / ubuntugis-unstable
sudo apt update 
sudo apt install postgis postgresql-9.6-postgis-2.3

J

e cree la  base osmkno  et comme user knosm

Je cree les extensions

 sudo -u postgres psql -c "CREATE EXTENSION postgis; CREATE EXTENSION postgis_topology;"  osmkno

 

PGADMIN3

Pgadmin3 est une application graphique permettant de gerer POSTGRESQL

elle est  a installer dans les dépots UBUNTU et compris dans le paquet ubuntugis

configurer pgadmin3

pour l'importation et l'exportation des fichiers shapefiles  dans le menu Plugin

sudo apt-get install postgis-gui

Editer le fichier  sudo gedit /usr/share/pgadmin3/plugins.d/plugins.ini et ajouter

;
; pgShapeLoader (Linux):
; 
Title=PostGIS Shapefile and DBF loader
Command=$$PGBINDIR/shp2pgsql-gui -U $$USERNAME -d $$DATABASE -p $$PORT -h $$HOSTNAME
Description=Open a PostGIS ESRI Shapefile or Plain dbf loader console to the current database.
KeyFile=$$PGBINDIR/shp2pgsql-gui
Platform=unix
ServerType=postgresql
Database=Yes
SetPassword=No

SHP2PGSQL

shp2pgsql.gui est une application graphique  permettant de charger les shapesfiles dans Postgres. eslle se trouive  dans les paquets ubuntu et dans ubuntugis

 

OSM2PGSQL

est une application en lifgne de commande  permettant de charger les fichiers xml osm dans Postges elle se trouve dans les dépots Ubuntu et dans le paquet ubuntugis

Installer osm2pgsql

liens: https://wiki.openstreetmap.org/wiki/FR:Osm2pgsql

Utilisation en ligne de commande

osm2pgsql -H localhost -U knosm -W -d osmkno -s -a  tinee.osm

avec tinee.osm nom du fichier osm a transferer dans la base -d  osmkno et l'utilisateur  -U knosm en -H ocalhost et demande de mot de passe -W  avec l'option -s  slim  et -a append

dans pgadmin3 cette commande a inserer 5 tables de points lignes polygones etc...

 OSMOSIS

est une application java en ligne de commande pour la manipulation des données OSM. L'application se compose d'une série d'outils qui peuvent être chaînés pour effectuer une opération de grande envergure. C'est notamment l'outil permettant d'importer  et de traiter les données OSM dans une base de données POSTGIS

articles en relation

Page de référence
Commandes OSMOSIS

 

Utilisation

 les fiichers sont décompressés  dans /home/knobuntu/QGis/osmosis

En ligne de commande se placer  dans le repertoire d'extractin et lancer la commande ./bin/osmosis suivis des options

cd QGis/osm/osmosis
./bin/osmosis <options>

Exemple de traitement   du fichier corse/corse-latest.osm.pbf  pour en  extraire les sommets  dans la base alpesosm

le traitement se fait en 2 étapes :
  1. Extraction des pics du fichier  corse-latest.osm.pbf avec osmosis et ecriture du fichier xml corse_peak.osm
  2. Tansfert du fichier osm dans la base postgres alpesosm
cd QGis/osm/osmosis
./bin/osmosis --read-pbf ../corse/corse-latest.osm.pbf --tf accept-nodes natural=peak --tf reject-ways --tf reject-relations --write-xml corse_peak.osm;
 $ osm2pgsql -H localhost -U postgres -W -d alpesosm /home/knobuntu/QGis/osm/osmosis/corse_peak.osm
.Une fois importé dans la BDD  ces fichiers énormes doivent etre réduits par des requetes sql et des traitements appropriés pour ne retenir que  les valeurs necessaires a l'affichage  pour ne pas ralentir le fonctionnement de QGIS

Cest souvent un travail assez long...

liens utiles

les cles valeurs osm :https://wiki.openstreetmap.org/wiki/FR

osm cle valeur taginfo https://taginfo.openstreetmap.org/k


 Extraction OSM https://overpass-turbo.eu/

 

 

Sous-catégories