Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL
PostgreSQL Forum PostgreSQL. Avant de poster -> F.A.Q PostGreSQL Tutoriels PostGreSQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/03/2007, 17h32   #1
Invité de passage
 
Inscription : février 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 20
Points : 4
Points : 4
Par défaut prb création d'une fonction utilisant des fonctions de postgis

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 :
Code :
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";
Tout d'abord je n'arrive pas l'executer et je ne suis pas sûr de sa logique...

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
Benjamin_es est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 10h38   #2
Rédacteur/Modérateur
 
Avatar de eclesia
 
Inscription : décembre 2006
Messages : 1 838
Détails du profil
Informations forums :
Inscription : décembre 2006
Messages : 1 838
Points : 1 832
Points : 1 832
cela fait bin longtemps que je n'ai pas ecrit de fonction.

mais je suis dans le domaine des SIG. et je constate que tu n'as aucune chance de recupérer des données avec la fonctions "touches". (si elle marche de meme maniere que ce que je connais) "touches" implique que les geometries sont en contactes, dans ton cas un polygone et des points, il faudrait que le point soit parfaitement sur le contour du polygone.

la fonction a utiliser devrait etre "intersect".
__________________
Systèmes d'Informations Géographiques
- Projets : GeoAPI GeotoolKit PuzzleGIS

Pour un monde sans BigBrother IxQuick ni censure RSF
eclesia est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/03/2007, 11h34   #3
Invité de passage
 
Inscription : février 2007
Messages : 20
Détails du profil
Informations forums :
Inscription : février 2007
Messages : 20
Points : 4
Points : 4
Merci pour l'info, je viens de la tester sur un échantillon de données ; il ne me sort aucun résultat, étrange... je vais regarder comment j'ai défini les "tuiles"

p.s. j'ai résolu mon prb avec la fonction "within"
Benjamin_es est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h07.


 
 
 
 
Partenaires

Hébergement Web