Problème avec Geometry SRID dans PostGIS

10

J'ai créé ma table (supporté) dans PostGIS

id_borne serial NOT NULL,
  num_borne character varying,
  shape_borne geometry

J'ai réussi à changer le SRID de ma table en utilisant

select UpdateGeometrySRID('public', 'borne', 'shape_borne', 26191) ;

L'ancien SRID était 0.

Le problème est que lorsque j'essaie d'ajouter un nouvel élément à ma table, bornej'ai ce message d'erreur:

geometry srid (0) does not match column srid (26191)

entrez la description de l'image ici

Voilà mon problème! Le SRID est mis à jour mais lorsque j'essaye d'ajouter un nouveau point, je reçois ce message.

Yahia El Haddad
la source
2
assurez-vous de donner à vos données un SRID qui correspond au tableau avant d'essayer de l'insérer.
Ian Turton
je ne comprends pas, le srid de mes données est le srid de ma table! c'est pareil, non?
Yahia El Haddad
1
pouvez-vous nous montrer une de vos déclarations d'insertion?
Ian Turton
comme ceci: INSERT INTO borne (num_borne, shape_borne) VALUES (1, POINT (25800, 256000));
Yahia El Haddad
1
La géométrie de votre instruction d'insertion n'a pas de srid. C'est la cause de l'erreur
Devdatta Tengshe

Réponses:

13

Ce qui se passe, c'est que les données que vous essayez d'insérer n'ont pas de SRID attribué. Pour en affecter une, essayez d'encapsuler la géométrie insérée dans votre instruction d'insertion avec ST_SetSRID (). Par exemple,

INSERT INTO public.borne (num_borne, shape_borne) 
    (SELECT num_borne, ST_SetSRID(shape_borne, 26191)
     FROM public.sometable);

ou

INSERT INTO public.borne (num_borne, shape_borne) 
VALUES (1, ST_SetSRID(ST_MakePoint(25800 , 256000), 26191));
MakinFlippyFloppy
la source
je n'ai pas de table
Yahia El Haddad
Mis à jour pour inclure votre cas d'utilisation.
MakinFlippyFloppy
cela n'a pas fonctionné !
Yahia El Haddad
Quel est le message d'erreur? essayez également select find_srid('public', 'borne', 'shape_borne');de lancer : pour vous assurer que le srid est bien défini sur le champ.
MakinFlippyFloppy
c'est bon! il fonctionne avec l'utilisation de INSERT INTO public.borne (num_borne, shape_borne) VALUES (1, ST_SetSRID (ST_MakePoint (25800, 256000), 26191)); il est obligatoire d'utiliser ST_SetSRID (ST_MakePoint (...) pour ajouter dans cette table? pour mon autre table (parcelle) c'est wortking avec une demande normale par exemple: INSERT INTO parcelle (num_parcelle, shape) VALUES (1, POLYGON ((( 0 0, 1 0, 1 1, 0 1, 0 0)));
Yahia El Haddad
6

Si vous saisissez le WKT d'une géométrie dans pgAdmin III, vous devez spécifier le SRID à l'aide de la syntaxe EWKT, sinon la valeur par défaut est 0.

Tapez ceci dans le champ géométrique de pgAdmin III:

SRID=26191;POINT(25800 256000)

Sinon, @MakinFlippyFloppy a la manière SQL correcte, en utilisant ST_SetSRID.

Mike T
la source
0

Le lien ci-dessous peut vous aider, consultez la page ci-dessous:

http://postgis.org/docs/UpdateGeometrySRID.html

Hardik
la source
Je travaille déjà avec cette fonction!
Yahia El Haddad