IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 PostgreSQL Discussion :

Erreur lors de la vérification d'une contrainte


Sujet :

PostgreSQL

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut Erreur lors de la vérification d'une contrainte
    Bonjour,

    J'ai créé une table avec Postgresql. J'ai ajouté à cette table une colonne 'geom' de type POINT (PostGIS) et de dimension 2 avec la fonction addgeometrycolumn(). J'ai créé des enregistrements dans cette table sans toucher au champ geom. J'ai voulu remplir les champs geom avec la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE client SET geom=st_geomfromewkt('POINT(45 50)');
    et j'ai obtenu l'erreur suivante :
    la nouvelle ligne viole la contrainte de vérification « table » de la relation « enforce_srid_geom »

    Auriez-vous une idée de ce qui se passe ?

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Corse (Corse)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Points : 836
    Points
    836
    Par défaut
    bojnour le srid correspond à un système de référence spatiale(http://en.wikipedia.org/wiki/SRID),les coordonnées de ton point ne correspondent pas à ce "srid", pour tester postgis tu peux à la limite supprimer la contrainte portant sur le srid (d’après les coordonnées de ton point tu n'as pas besoin de srid)

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut
    Merci pour votre réponse rapide.
    J'avais même testé avec la projection conique conforme Lambert 1 et un point de coordonnées (601000, 201000) et ça me donnait la même erreur.

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 882
    Points : 53 070
    Points
    53 070
    Billets dans le blog
    6
    Par défaut
    C'est vous qui n'avez pas compris ce qu'est une dimension !
    Lisez l'article que j'ai écrit sur la manipulation des SIG dans SQL : http://blog.developpez.com/sqlpro/p9...n-geographiqu/

    et notamment :
    6.3 - Méthodes communes
    [...]
    Dimension() : Integer
    Retourne la dimension spatiale de l’objet de 0 à 2 (un point étant de dimension 0, une ligne 1, un polygone 2…)
    A +

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut
    D'accord merci. Je vais essayer avec la dimension 0. Mais n'y a-t-il pas une redondance ? Pour créer une colonne spatiale, il faut préciser la dimension et le type géométrique 'POINT' dans mon cas?

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 882
    Points : 53 070
    Points
    53 070
    Billets dans le blog
    6
    Par défaut
    NON !
    Le standard OGC prévoir que le type est GEOMETRY ou GEOGRAPY (avec donc en sus un SRID) mais l'utilisation de addgeometrycolumn() pour un type plus précis est un gadget PostGreSQL pour alimenter une table système des colonnes géométriques....
    Mieux vaut passer par une contrainte CHECK sur un type GEO que par ce genre de gadget !

    A +

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut
    Si j'ai bien compris, il vaut mieux utiliser le type GEOMETRY + dimension 0 qu'utiliser le type POINT.
    Et ne pas utiliser addgeometrycolumn() mais ajouter un champs normal (texte ?) et mettre une contrainte check pour vérifier que c'est une GEOMETRY ? Dans ce cas, faudrait-il remplir la table geometry columns manuerllement ?

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 882
    Points : 53 070
    Points
    53 070
    Billets dans le blog
    6
    Par défaut
    Type GEOMETRY + contrainte CHECK.
    Alimentation manuelle de la table geometry_columns si besoin est !
    Je comprend pas votre "champs text" (au passage dans les SGBDR les "champs" ça n'existe pas. Soyez clair et précis. On parle de colonne dans une table !)

    A +

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2008
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 308
    Points : 90
    Points
    90
    Par défaut
    Ok merci je comprends maintenant.
    Mes enseignants, par contre, conseillent de passer plutôt par la fonction addgeometrycolumn() qui pour vous est un "gadget" Postgresql. Donc pour vous, c'est mieux de passer par les standards OGC qu'utiliser des gadgets. Juste pour récapituler.

    Merci.

  10. #10
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 882
    Points : 53 070
    Points
    53 070
    Billets dans le blog
    6
    Par défaut
    OUI, chaque fois qu'il y a des normes (et le langage SQL est une norme ISO) ou à défaut un standard (et la partie SIG de PostGreSQL, comme celle de SQL Server reposent sur le standard OGC), il vaut TOUJOURS mieux se reposer dessus, sauf dans le cas ou la particularité apporte un avantage certains, mais c'est au risque d'une mauvaise interopérabilité qui peut vous péter au nez à retardement....

    Lisez l'article que j'ai écrit à ce sujet : http://blog.developpez.com/sqlpro/p9...er-les-normes/

    PS : je suis moi même enseignant, auteur du livre sur SQL, le plus vendu à ce jour en français (et vous y trouverez un chapitre de 30 pages sur les SIG en SQL) mais aussi et surtout professionnel !

    A +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur lors de la création d'une contrainte d'unicité
    Par Maren00 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 04/09/2009, 21h07
  2. Réponses: 3
    Dernier message: 07/12/2005, 14h28
  3. [vb.net] erreur lors de l'éxécution d'une classe
    Par os_rasta dans le forum VB.NET
    Réponses: 10
    Dernier message: 01/12/2005, 18h34
  4. Erreur lors de l'ajout d'une table
    Par FredMines dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 27/07/2005, 13h13
  5. message d'erreur lors de la création d'une base
    Par franculo_caoulene dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 16/04/2004, 15h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo