Problem mit der Geometrie-SRID in PostGIS


10

Ich habe meinen Tisch (getragen) in PostGIS besetzt

id_borne serial NOT NULL,
  num_borne character varying,
  shape_borne geometry

Ich habe die SRID meiner Tabelle mit erfolgreich geändert

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

Die alte SRID war 0.

Das Problem ist, dass beim Versuch, meiner Tabelle ein neues Element hinzuzufügen, bornefolgende Meldung angezeigt wird:

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

Geben Sie hier die Bildbeschreibung ein

Das ist mein problem Die SRID wird aktualisiert, aber wenn ich versuche, einen neuen Punkt hinzuzufügen, wird diese Meldung angezeigt.


2
Stellen Sie sicher, dass Sie Ihren Daten eine SRID geben, die mit der Tabelle übereinstimmt, bevor Sie versuchen, sie einzufügen.
Ian Turton

Ich verstehe nicht, der Srid meiner Daten ist der Srid meiner Tabelle! es ist das gleiche, nein?
Yahia El Haddad

1
Können Sie uns eine Ihrer Insert-Anweisungen zeigen?
Ian Turton

wie folgt: INSERT INTO borne (num_borne, shape_borne) VALUES (1, POINT (25800, 256000));
Yahia El Haddad

1
Die Geometrie In Ihrer Einfügeanweisung hat kein srid. Das ist die Ursache des Fehlers
Devdatta Tengshe

Antworten:


13

Was passiert ist, dass den Daten, die Sie einfügen möchten, keine SRID zugewiesen ist. Um eine zuzuweisen, versuchen Sie, die eingefügte Geometrie in Ihre insert-Anweisung mit ST_SetSRID () zu verpacken. Z.B,

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

oder

INSERT INTO public.borne (num_borne, shape_borne) 
VALUES (1, ST_SetSRID(ST_MakePoint(25800 , 256000), 26191));

Ich habe keinen Tisch
Yahia El Haddad

Aktualisiert, um Ihren Anwendungsfall einzuschließen.
MakinFlippyFloppy

Es hat nicht funktioniert !
Yahia El Haddad

Was ist die Fehlermeldung? Versuchen Sie auch Folgendes auszuführen: select find_srid('public', 'borne', 'shape_borne');Stellen Sie sicher, dass der srid tatsächlich auf dem Feld eingestellt ist.
MakinFlippyFloppy

Es ist in Ordnung! es funktioniert mit INSERT INTO public.borne (num_borne, shape_borne) VALUES (1, ST_SetSRID (ST_MakePoint (25800, 256000), 26191)); Es ist obligatorisch, ST_SetSRID (ST_MakePoint (...) zum Hinzufügen in diese Tabelle zu verwenden. Für meine andere Tabelle (Parcelle) wird mit einer normalen Beispielanforderung gewortet: INSERT IN Parcelle (num_parcelle, shape) VALUES (1, POLYGON (() 0 0, 1 0, 1 1, 0 1, 0 0)));
Yahia El Haddad

6

Wenn Sie die WKT einer Geometrie in pgAdmin III eingeben, müssen Sie die SRID mithilfe der EWKT-Syntax angeben, andernfalls wird standardmäßig 0 verwendet.

Geben Sie dies in das Geometriefeld von pgAdmin III ein:

SRID=26191;POINT(25800 256000)

Andernfalls hat @MakinFlippyFloppy mit ST_SetSRID die richtige SQL-Methode.


0

Ich denke, der unten stehende Link kann Ihnen helfen. Schauen Sie sich die folgende Seite an:

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


Ich arbeite bereits mit dieser Funktion!
Yahia El Haddad
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.