Créer un champ géométrie ligne sur postgreSQL-GIS

Fermé
damenounou Messages postés 7 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 22 mars 2018 - 21 mars 2018 à 17:28
damenounou Messages postés 7 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 22 mars 2018 - 22 mars 2018 à 10:24
Bonjour,

J'essaye de créer une ligne à partir de coordonnées X et Y dans un champ d'une table.
Voilà ce que j'ai essayé mais qui ne marche malheureusement pas :
1- Création d'une colonne X et d'une Y pour le point de départ de la ligne
2- Création d'une colonne X et Y pour le point de fin de la ligne
3- Création de deux colonnes géométrie pour le point de départ et de fin à partir des coordonnées X et Y
requête lancée et qui marche :
UPDATE "AERIEN"."LA"
SET "Point_deb"=ST_MakePoint ("X_deb","Y_deb",27564);

UPDATE "AERIEN"."LA"
SET "Point_fin"=ST_MakePoint ("X_fin","Y_fin",27564);

4- Création d'une colonne géométrie pour la ligne partant du point de début au point de fin.
Et là, c'est le drame !! =(

UPDATE "AERIEN"."LA"
SET "Ligne"=ST_MakeLine ("Point_deb","Point_fin",27564);

Apparemment la fonction ST_MakeLine n'est pas reconnue... peut-être que je l'utilise mal...

Ainsi ma question est : comment créer une ligne sur PostgreSQL-PostGIS ?

Merci pour votre aide,
Eva
A voir également:

1 réponse

yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
21 mars 2018 à 20:48
bonsoir, "qui ne marche malheureusement pas", "c'est le drame": message d'erreur (sans doute secret, que tu ne peux pas partager), ou comportement inattendu (que tu ne peux pas décrire)?
dans quel but passes-tu un troisième paramètre à ST_MakeLine?
0
damenounou Messages postés 7 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 22 mars 2018
22 mars 2018 à 08:22
Bonjour,

Voici le message d'erreur retourné à la suite de la requête UPDATE "AERIEN"."LA"
SET "Ligne"=ST_MakeLine ("Point_deb","Point_fin",27564);

ERROR: ERREUR: la fonction st_makeline(geometry, geometry, integer) n'existe pas
LINE 2: SET "Ligne"=ST_MakeLine ("Point_deb","Point_fin",27564);
^
HINT: Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.


SQL state: 42883
Character: 34

Mon objectif est de dessiner des lignes à partir de mes points pour que ma couche soit de type ligne lors de son insertion dans ma carte QGIS. Mais je ne sais pas comment faire sans passer par le dessin des points ?

Merci pour votre aide,
Eva
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > damenounou Messages postés 7 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 22 mars 2018
22 mars 2018 à 08:52
dans quel but passes-tu un troisième paramètre à ST_MakeLine?
0
damenounou Messages postés 7 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 22 mars 2018
22 mars 2018 à 09:42
C'est pour dessiner une ligne lors de mon import dans un logiciel de SIG (QGIS).
Les points crée avant s'affiche en tant que point (normal) et moi je veux une ligne au final.
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > damenounou Messages postés 7 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 22 mars 2018
22 mars 2018 à 09:48
pourquoi mets-tu trois valeurs séparées par des virgules entre parenthèses après ST_MakeLine?
0
damenounou Messages postés 7 Date d'inscription mercredi 21 mars 2018 Statut Membre Dernière intervention 22 mars 2018
22 mars 2018 à 10:10
C'est bon j'ai trouvé mon erreur merci de ton aide car tu m'as orienté sur mon pb.
En fait, la fonction ST_MakeLine reçoit en entrée que deux arguments et moi je lui en donnée trois avec le SRID mais il n'est pas utile car on s'appui sur des points qui ont déjà un SRID.
Donc voici la requête finale :
UPDATE "AERIEN"."LA"
SET "Ligne"=ST_MakeLine ("Point_deb","Point_fin");
Maintenant, j'espère que ça va bien me faire une ligne et au bon endroit.
0