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
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’;