IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

prb création d'une fonction utilisant des fonctions de postgis


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 11
    Points
    11
    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 : 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";
    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

  2. #2
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    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 : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 20
    Points : 11
    Points
    11
    Par défaut
    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"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 30/09/2014, 16h29
  2. Utiliser des fonctions d'une DLL C++
    Par ced001 dans le forum Delphi
    Réponses: 2
    Dernier message: 09/02/2007, 16h03
  3. utiliser des fonctions d'une librairie C++ en C
    Par vivien313131 dans le forum C
    Réponses: 2
    Dernier message: 30/11/2006, 09h56
  4. utilisation des fonctions d'une dll
    Par jackk dans le forum C++
    Réponses: 14
    Dernier message: 15/06/2005, 16h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo