Renseigner automatiquement l’altitude d’un point

L'outil de saisie des données naturaliste est enfin motorisé par les dernières version de PostgreSQL (9.2) et de Postgis (2.0).

Nous allons utiliser les trigger de PostgreSQL et la capacité de PostGIS 2 à gérer les données raster pour renseigner automatiquement l'altitude des données ponctuelles renseignées dans l'interface.

Le MNT de la BD TOPO de l'IGN a été intégré à la base pour l'ensemble de la région dans la table mnt_lr du schéma ign_bd_topo.

La commande utilisée pour créer cette table à partir d'un raster régional est la suivante :

raster2pgsql -s 2154 -C -I -r -M -F -t 100x100 mnt_lr.tif ign_bd_topo.mnt_lr | psql -h localhost -d sicen -U dba

Nous allons donc utiliser un trigger qui se déclenchera pour chaque ligne avant chaque insertion ou mise à jour.

Création de la fonction

CREATE OR REPLACE FUNCTION saisie.renseigne_altitude()
RETURNS trigger AS ‘BEGIN
IF st_geometrytype(NEW.geometrie) ILIKE  »%point »
THEN NEW.elevation := st_value(rast,NEW.geometrie) FROM ign_bd_topo.mnt_lr WHERE st_intersects(NEW.geometrie, rast);
END IF;
RETURN NEW;
END’
LANGUAGE ‘plpgsql’;

Création du déclencheur

CREATE TRIGGER maj_altitude BEFORE INSERT OR UPDATE ON saisie.saisie_observation FOR EACH ROW EXECUTE PROCEDURE saisie.renseigne_altitude();