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.

Yahia El Haddad
quelle
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));
MakinFlippyFloppy
quelle
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.

Mike T.
quelle
0

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

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

Hardik
quelle
Ich arbeite bereits mit dieser Funktion!
Yahia El Haddad