#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: 1149
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: 1549
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: 96
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: 1549
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: 96
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