Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Sun 17 January 2021 10:30

NicolasTau
Juste Inscrit !
Date d'inscription: 16 Jan 2021
Messages: 7

Probl d'insertion de donnees geometriques

Bonjour,

Je créé ce sujet en espérant que quelqu'un pourra m'aider à résoudre mon problème.
Pour résumer, je n'arrive pas à rentrer de données géographiques dans ma base de données. J'utilise QGIS 3.3 avec PostgreSQL10/pgAdmin4/PostGIS3.
Je précise que je débute avec les SBDR, SIG,... Je ne les utilise que depuis peu pour mes études.

Je voudrais en fait créer des points de toutes pièces sur une carte. J'ai donc commencé par créer une table où j'ai ajouté toutes les informations de mes différents sites que j'ai tout simplement appelé "Sites". Ensuite, j'ai créé une colonne "Geom" qui va contenir l'information géographique avec la commande suivante :

Code:

ALTER TABLE Public."Sites" ADD COLUMN Geom geometry(POINT, 4326);

Jusque là, tout va bien ! J'ai ensuite créé deux colonne "long" et "lat" (ce sont des données "real") pour que l'information géographique se cale sur les longitudes et latitudes que j'entre dans la table. Ensuite, quand je veux ajouter des données dans cette colonne "geom", j'utilise donc cette requête :

Code:

UPDATE public."Sites" Set geom = st_srid(st_makepoint(Sites.long,Sites.lat),4326);

Le logiciel me renvoie l'erreur suivante :

Code:

ERREUR : ERREUR:  entrée manquante de la clause FROM pour la table « sites »
LINE 1: ...TE public."Sites" Set geom = st_srid(st_makepoint(Sites.long...
                                                                                         ^
État SQL : 42P01
Caractère : 55

Est-ce que je me suis trompé dans la commande ? ou est-ce qu'il y  a une erreur de syntaxe que je n'ai pas remarqué ?

Merci d'avance,

Bonne soirée

Nicolas.

Hors ligne

 

#2 Sun 17 January 2021 18:06

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1132

Re: Probl d'insertion de donnees geometriques

Salut,

le problème concerne la casse du nom de votre table.

Les requêtes sous postgresql ont sensibles à la casse en ce qui concerne les noms d'objets (tables, fonctions, schemas ...)
et les convertissent automatiquement en casse minuscule avant exécution, à moins que ceux-ci soient encadrés par des doubles quotes (").

Exemple

Code:

    Sites  -> transformé en sites par Postgresql avant execution de la requête
    SITES-> transformé en sites par Postgresql avant execution de la requête

Ici le nom de votre table est «Sites», et vous essayez d'y faire référence en tant que «sites» dans la
clause SET de votre requête. PostgreSQL vous réponds :

entrée manquante de la clause FROM pour la table « sites »


Ce qui signifie : la table «sites» est inconnue au bataillon.

Pour fonctionner, vous requête doit encadrer chaque occurrence du nom de votre table «Sites»par des doubles quotes.

Code:

UPDATE public."Sites" Set geom = st_srid(st_makepoint("Sites".long,"Sites".lat),4326);

Etant donné la simpilcité de la requête, vous auriez pu même vous passer d'indiquer le nom de la table dans la clause SET :

Code:

UPDATE public."Sites" Set geom = st_srid(st_makepoint(long, lat),4326);

Généralement, pour éviter ce genre de tracas, on préfère nommer tous le objets en casse minuscule.

Hors ligne

 

#3 Mon 18 January 2021 23:39

NicolasTau
Juste Inscrit !
Date d'inscription: 16 Jan 2021
Messages: 7

Re: Probl d'insertion de donnees geometriques

Bonsoir,

Tout d'abord, merci pour cette réponse rapide !

Ensuite, j'ai bien essayé ce que vous venez de me conseiller. J'ai d'abord enlevé toutes les majuscules de mes noms de colonnes et de tables.
J'ai alors tapé ce code :

Code:

UPDATE public."sites" Set geom = st_srid(st_makepoint("sites".long,"sites".lat),4326);

J'ai d'ailleurs précisé le "site" devant "long" et "lat" car sinon il ne trouve pas la bonne colonne. Enfin, bref, cela me renvoie cela :

Code:

ERREUR : ERREUR:  la fonction st_srid(geometry, integer) n'existe pas
LINE 1: UPDATE public."sites" Set geom = st_srid(st_makepoint("sites...
                                         ^
HINT:  Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.


État SQL : 42883
Caractère : 34

On dirait que la fonction n'existe pas alors qu'elle est bien référencée dans les catalogues et supports en ligne...

Je suis un peu largué sur le coup...

Merci,

Bonne soirée.

Hors ligne

 

#4 Tue 19 January 2021 09:50

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: Probl d'insertion de donnees geometriques

Bonjour,

Avez-vous installé Postgis sur la BD ? (create extension postgis;)

Nicolas

Hors ligne

 

#5 Tue 19 January 2021 10:00

Ben22
Participant actif
Lieu: 33
Date d'inscription: 11 May 2016
Messages: 95

Re: Probl d'insertion de donnees geometriques

Bonjour,

Ne serait-ce pas plutôt St_setsrid(geom, srid) qui correspondrait plus à vos attentes ? st_srid renvoie uniquement le srid, il n'y a pas besoin de le spécifier dans la fonction d'où je pense votre message d'erreur.

Hors ligne

 

#6 Tue 19 January 2021 10:18

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: Probl d'insertion de donnees geometriques

Ben22 a écrit:

Bonjour,

Ne serait-ce pas plutôt St_setsrid(geom, srid) qui correspondrait plus à vos attentes ? st_srid renvoie uniquement le srid, il n'y a pas besoin de le spécifier dans la fonction d'où je pense votre message d'erreur.


Oui effectivement !
wink

Nicolas

Hors ligne

 

#7 Tue 19 January 2021 15:33

NicolasTau
Juste Inscrit !
Date d'inscription: 16 Jan 2021
Messages: 7

Re: Probl d'insertion de donnees geometriques

Avez-vous installé Postgis sur la BD ? (create extension postgis;)


En effet, j'avais installé postgis sur la BD avec cette commande.

Ne serait-ce pas plutôt St_setsrid(geom, srid) qui correspondrait plus à vos attentes ? st_srid renvoie uniquement le srid, il n'y a pas besoin de le spécifier dans la fonction d'où je pense votre message d'erreur.


En fait, je voudrais faire en sorte que la colonne "geom" se remplisse tout seule en fonction de la latitude et de la longitude que j'ai indiquées dans deux autres colonnes.

En réalité, j'ai des sites archéologiques que je ne sais pas positionner car je ne sais pas comment remplir la colonne "geom". J'ai alors trouvé sur un forum et sur la liste des commandes de postgis qu'utiliser la longitude et la latitude était une bonne idée pour automatiser le processus d'une façon simple (les long et lat étant très facile à trouver sur Google Maps ou Googel Earth).

Hors ligne

 

#8 Tue 19 January 2021 16:29

Ben22
Participant actif
Lieu: 33
Date d'inscription: 11 May 2016
Messages: 95

Re: Probl d'insertion de donnees geometriques

Essayez de cette façon :

Code:

UPDATE public."sites" Set geom = st_setsrid(st_makepoint("sites".long,"sites".lat),4326);

Hors ligne

 

#9 Tue 19 January 2021 21:36

NicolasTau
Juste Inscrit !
Date d'inscription: 16 Jan 2021
Messages: 7

Re: Probl d'insertion de donnees geometriques

Bonsoir,

Je viens d'essayer et en effet, ça marche parfaitement !
Il y avait juste un petit problème en plus que j'ai réussi à résoudre, les colonnes "long" et "lat" était en "real" et non pas en "numeric" donc cela ne marchait pas.

Mais maintenant tout fonctionne très bien.

Merci beaucoup à vous tous, vous m'avez énormément aidé !

Bonne soirée et à bientôt.

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB