#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 : 55Est-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: 1226
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ĂȘteIci 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 : 34On 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: 1566
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: 97
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: 1566
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.
Oui effectivement !![]()
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: 97
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

