Bienvenue! Inscrivez-vous et rejoignez notre communaut :)
  • Login:

Bienvenue sur Forum SIG - Systmes d'Information Gographique et Gomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre premire visite, assurez vous de faire une recherche pralable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des rsultats 1 7 sur 7
  1. #1

    Date d'inscription
    janvier 2008
    Localisation
    Dijon
    Emploi
    Charg d'tude Faune / Flore
    ge
    35
    Messages
    44

    Par dfaut [PostGreSQL 8.x] PostGIS : Cration de points partir d'une table non gographique

    Bonjour,

    je suis plus que dbutant dans l'utilisation du couple Postgres / postgis mais a m'a l'air tout a fait adapt mes besoins.

    Je cherche en fait crer automatiquement (script ??) une couche de points partir des donnes contenues dans une table non gomtrique (table donnees en l'occurrence).



    je sais le faire sous qgis en utilisant des .csv mais la j'aimerai que ce soit plus pratique et que la couche de point se mette jour chaque fois que je modifie ma table "donnees"

    Est il possible de raliser cette opration avec un script ?

    Merci d'avance pour vos conseils,
    -------
    Guillaume

  2. #2
    Supporter(rice)
    Date d'inscription
    aot 2005
    Localisation
    Nantes
    Emploi
    Consultant Gomatique Indpendant
    Organisme
    WebGeoDataVore
    ge
    37
    Messages
    274

    Mes rseaux sociaux

    Follow TomTom On Twitter
    Add TomTom on Linkedin

    Par dfaut

    Bonjour,

    http://www.postgis.org/pipermail/pos...ry/018287.html
    Il faut crer une fonction et un trigger. La fonction servira grer la mthode pour crer le point depuis les coordonnes et le trigger pour dire quel moment lancer la fonction (aprs insertion d'un enregistrement ou mise jour des coordonnes d'un point existant)

    Cordialement

    TomTom
    Quand rien ne va revenez aux sources...
    ...la documentation, le code

  3. #3

    Date d'inscription
    janvier 2008
    Localisation
    Dijon
    Emploi
    Charg d'tude Faune / Flore
    ge
    35
    Messages
    44

    Par dfaut

    Merci beaucoup pour cette rponse.

    Maintenant que je sais que c'est possible, je vais m'atteler comprendre comment marchent les fonctions et les triggers.

    J'aurais srement encore besoin de votre aide.

    Je vais potasser a ce week-end.
    -------
    Guillaume

  4. #4

    Date d'inscription
    janvier 2008
    Localisation
    Dijon
    Emploi
    Charg d'tude Faune / Flore
    ge
    35
    Messages
    44

    Smile

    Voici un petit retour pour la manipulation.

    J'ai rajout une colonne de gomtrie (en WGS84) ma ta table donnees

    Code:
    SELECT AddGeometryColumn (donnees,the_geom,4326,POINT,2);
    Ensuite j'ai modifi la fonction et le trigger fourni dans le lien de TomTom (encore merci)

    Fonction
    Code:
    -- Function: check_donnees_ids()
    
    -- DROP FUNCTION check_donnees_ids();
    
    CREATE OR REPLACE FUNCTION check_donnees_ids()
      RETURNS "trigger" AS
    $BODY$
      DECLARE
      BEGIN
        if (NEW.longitude > 0 and NEW.latitude > 0) then
        NEW.the_geom = setSRID(MakePoint(NEW.longitude,NEW.latitude),4326);
        end if;
    
        RETURN NEW;
      END;
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE;
    ALTER FUNCTION check_donnees_ids() OWNER TO postgres;
    Trigger

    Code:
    -- Trigger: donnees_update on donnees
    
    -- DROP TRIGGER donnees_update ON donnees;
    
    CREATE TRIGGER donnees_update
      BEFORE INSERT
      ON donnees
      FOR EACH ROW
      EXECUTE PROCEDURE check_donnees_ids();
    J'ai lanc a dans la console PSQL et maintenant ds que j'ajoute des valeurs dans les colonnes longitude et latitude le point correspondant se cre. Magique.

    Peut tre que le code est optimisable mais c'est dj bien parce que a marche

    Petite question supplmentaire : est il possible de crer une fonction qui cre les points y compris pour les points dj existants ?

    Merci beaucoup,
    -------
    Guillaume

  5. #5
    Supporter(rice)
    Date d'inscription
    aot 2005
    Localisation
    Nantes
    Emploi
    Consultant Gomatique Indpendant
    Organisme
    WebGeoDataVore
    ge
    37
    Messages
    274

    Mes rseaux sociaux

    Follow TomTom On Twitter
    Add TomTom on Linkedin

    Par dfaut

    Bonjour,

    Pour votre demande supplmentaire de crer une fonction qui met jour les points y compris existants, je ne sais pas si c'est faisable...
    Nanmoins, il serait plus logique de lancer une requte de manire ponctuelle pour mettre jour l'existant plutt que de passer par une fonction qui s'applique l'ensemble des lignes.

    Je m'explique :

    Imaginiez que vous ayez 100 lignes avec des coordonnes mais pour le moment, aucune avec une reprsentation spatiale.
    Vous appliquez votre trigger actuel sur la table de 100 lignes en vous disant qu' l'insertion de la 101me, a vous crera la reprsentation.
    Vous insrer une nouvelle donne. Super, vous avez 100 lignes sans reprsentations gomtriques et 1 ligne avec une reprsentation.

    Votre proposition

    J'admets avoir cr la fonction que vous demandez (une hypothse), elle va donc tester pour la 102me ligne que je viens d'insrer les 101 prcdentes et la nouvelle ligne avec votre test "latitude > 0 and longitude >0". Vos points sont donc tous jour. En tant toujours imaginatif, j'ai un million de lignes maintenant, chaque insertion de nouvelle ligne, je vais retester le million prcdent? Je ne pense pas sauf si vous voulez faire des calculs pour le "fun" et que votre base de donnes consomme de la ressource systme.

    Ma proposition

    Le cas avec un million de ligne sans reprsentation gomtrique. Vous lancez votre requte de mise jour une fois, a mouline certes...
    Vous utilisez votre trigger actuel sur la table, une mise jour de trois lignes devient une vrification de 3 lignes, votre serveur est pargn

    La requte pour mettre jour la table de manire ponctuelle.
    Code:
    UPDATE matable
    SET the_geom = setSRID(MakePoint(longitude,latitude),4326)
    WHERE (longitude > 0 and latitude > 0);
    Cordialement

    TomTom
    Quand rien ne va revenez aux sources...
    ...la documentation, le code

  6. #6

    Date d'inscription
    janvier 2008
    Localisation
    Dijon
    Emploi
    Charg d'tude Faune / Flore
    ge
    35
    Messages
    44

    Par dfaut

    merci pour tes conseils et tes suggestions.

    Dcidment je ne suis jamais du quand je viens sur ce forum.
    -------
    Guillaume

  7. #7

    Date d'inscription
    mars 2018
    Messages
    2

    Par dfaut Re : [PostGreSQL 8.x] PostGIS : Cration de points partir d'une table non gographi

    Bonjour tous,
    J'ai le mme problme que Guillaume D. J'essaye partir d'une table faite sur PostgreSQL de gnrer automatiquement des points lors de la synchronisation de ce fichier avec ArcGIS Pro. Mais il y a plusieurs choses que je ne parviens pas comprendre.
    - Comment ajouter des donnes dans ma table pour le moment vide ? J'aimerai la remplir l'aide d'un import de fichier .csv mais lorsque je fais a il me met un message d'erreur indiquant que je n'ai rien renseign dans mon fichier csv pour la colonne gomtrie.
    - Je ne comprends pas bien le code pour le Trigger, qu'est ce que "donnees", c'est crit BEFORE INSERT ON donnees. Il me met une erreur et j'essaye de l'adapter mon cas mais je n'y arrive pas.
    Merci beaucoup pour votre aide,
    Eva

 

 

Discussions similaires

  1. [PgAdmin 3] Lier table gographique (postgis) et table attributaire
    Par zikalea dans le forum Assistance et Programmation
    Rponses: 11
    Dernier message: 04/04/2013, 17h59
  2. [MapInfo 8.x] Crer des point partir d'un table avec des adresses non gographique
    Par Ltie dans le forum Assistance Technique
    Rponses: 2
    Dernier message: 14/03/2013, 08h00
  3. [MapInfo 8.x] Cration d'une table partir d'une table dj existante
    Par bicho1 dans le forum Assistance Technique
    Rponses: 5
    Dernier message: 21/02/2012, 16h34
  4. [PostGreSQL] ArcSDE suppression d'une table spatiale PostGIS
    Par sporito33 dans le forum Assistance et Programmation
    Rponses: 0
    Dernier message: 12/11/2011, 20h12
  5. Rponses: 2
    Dernier message: 20/05/2010, 09h38

Les tags pour cette discussion

Liens sociaux

Rgles de messages

  • Vous ne pouvez pas crer de nouvelles discussions
  • Vous ne pouvez pas envoyer des rponses
  • Vous ne pouvez pas envoyer des pices jointes
  • Vous ne pouvez pas modifier vos messages
  •