Connaitre l'altitude d'un point grâce à ses coordonnées

Merci à tous de partager les améliorations que vous apporteriez sur cette fonction

Création de la fonction dans le schéma "outils"

CREATE OR REPLACE FUNCTION outils.elevation("long" double precision, lat double precision)
  RETURNS double precision AS
$BODY$
import urllib;
page=urllib.urlopen('http://www.earthtools.org/height/'+str(lat)+'/'+str(long));
result_xml = page.READ()
rv = plpy.execute("SELECT ((xpath('//height/meters/text()', '"+result_xml+"'::xml))[1])::text::float AS elevation")
foo = rv[0]['elevation']
RETURN foo
$BODY$
  LANGUAGE plpythonu;

Création d'un script de mise à jour d'une table d'observation

#!/bin/sh
for a in `seq 1 20000`; do
psql -c "UPDATE saisie.saisie_observation SET elevation = outils.elevation(st_x(st_transform(geometrie, 4326)), st_y(st_transform(geometrie, 4326))) WHERE id_entite IN (SELECT id_entite FROM saisie.saisie_observation WHERE elevation IS NULL AND GeometryType(geometrie) = 'POINT' ORDER BY id_entite LIMIT 1)" -h 192.168.1.230 -U nom_utilisateur nom_base_de_donnee
 
# respect des conditions d'utilisation du service 
# interdisant plus d'une requête par seconde
sleep 1;
# echo "Élévation mise à jour"
done
creation_bdd/fonctions/elevation.txt · Dernière modification: 2011/08/07 20:11 par admin_wiki_sicen
www.chimeric.de Creative Commons License Valid CSS Propulsé par DokuWiki Get firefox!! Changements récents - flux RSS Valid XHTML 1.0 Hébergé par Alwaysdata