Bonjour à tous,
je suis débutant dans l'utilisation de PostGreSQL ; je l'utilise avec PostGIS afin d'effectuer des requêtes spatiales.
J'ai deux bases de données : une contenant des infomations ponctuelles : l'autre contient des carrées qui découpe l'espace sous forme de tuiles.
J'aimerai créer une fonction pouvant afficher les données ponctuelles appartenant à l'intérieur d'une tuile.
J'ai essayé de créer une fonction :
Tout d'abord je n'arrive pas l'executer et je ne suis pas sûr de sa logique...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 CREATE OR REPLACE FUNCTION tuiles(geometry, geometry) RETURNS text AS $BODY$ DECLARE curseur REFCURSOR; DECLARE i INTEGER; BEGIN i:=1; OPEN curseur FOR SELECT $2.the_geom FROM $2; j:=FETCH FORWARD i FROM curseur; WHILE (j!=0) LOOP IF Touches($1.the_geom,j)==1 THEN EXECUTE 'FETCH FORWARD' || i || FROM curseur; END IF; i:=i+1; j:=FETCH FORWARD i FROM curseur; END LOOP; END; $BODY$ LANGUAGE 'plpgsql' IMMUTABLE STRICT; ALTER FUNCTION tuiles(geometry, geometry) OWNER TO "admin";
Merci de me répondre
P.S. : Explication de la fonction touches tirée du manuel de postgis "Touches(geometry, geometry)
(Effectué par le module GEOS) : retourne 1 (vrai) si les géométries se "touchent spatiallement"."
Benjamin
Partager