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Ă© ?

#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: 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ĂȘ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: 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

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: 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

 

Pied de page des forums

Copyright Association GeoRezo