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.


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));

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.


0

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

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


Je travaille déjà avec cette fonction!
Yahia El Haddad
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.