Précédent   Forum des professionnels en informatique > Bases de données > PostgreSQL > Débuter
Débuter Forum d'entraide : Débuter en base de données avec PostgreSQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 05/06/2011, 23h58   #1
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
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 :
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 ?
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 08h03   #2
Membre confirmé
 
Homme
Inscription : janvier 2006
Messages : 227
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Corse (Corse)

Informations forums :
Inscription : janvier 2006
Messages : 227
Points : 239
Points : 239
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)
xavier-Pierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 08h37   #3
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
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.
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/06/2011, 20h12   #4
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
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 :
Citation:
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 +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 09h21   #5
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
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?
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 10h22   #6
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
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 +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 10h47   #7
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
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 ?
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 13h08   #8
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
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 +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 13h48   #9
Membre du Club
 
Inscription : novembre 2008
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2008
Messages : 270
Points : 50
Points : 50
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.
yo_haha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/06/2011, 15h00   #10
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
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 +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h51.


 
 
 
 
Partenaires

Hébergement Web