setSRID geht nicht

Hallo,

durch diesen Befehl möchte ich the_geom eine SRID vergeben.

 UPDATE testshape SET the_geom=setsrid(the_geom,21781)

Leider erhalte ich aber eine Fehlermeldung:

ERROR:  new row for relation "testshape" violates check constraint "enforce_srid_the_geom"

the_geom ist ein Multistring.

An was könnte das liegen, normalerweise geht der Update-Befehl.

Karl

Die SRID, die du updaten möchtest entspricht nicht der, die für die Tabelle vorgesehen ist. Du kannt das mit dem Eintrag in der Tabelle geometry_columns vergleichen, was da drin steht.

Gruß Uwe

Hm…

Ich habe zuvor hier einen Eintrag angelegt.

f_table_catalog: leer
f_table_schema: public
f_table_name: roads
f_geometry_column: the_geom
coord_dimension: 2
srid: 21781
type: MULTILINESTRING


Daran sollte es also nicht liegen. Die Fehlermeldung ist besteht aber weiterhin.

ERROR:  new row for relation "roads" violates check constraint "enforce_srid_the_geom"

Warum

SELECT srid(the_geom) FROM roads

immer noch -1 ausgibt bleibt mir ein Rätsel

Moin!

Hast du das Geometriefeld mit addgeometrycolumn angelegt?

Gruß Uwe

EDIT: Wenn du die Tabelle im PGAdmin anschaust, welcher wert steht denn da für den srid-Constraint drin?

Hallo,

die Daten sind von diesem Beispiel:

PgRouting 1.02 on Win32



PG-Admin - roads - Constraints - enforce_srid_the_geom:

ALTER TABLE roads
  ADD CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = (-1));

Daran kann es wohl liegen.
Wie bekomme ich nur das -1 weg.

Du kannst doch einfach den Constraint auf die SRID setzen, die du haben willst, oder du legst die Geometriespalte neu an an mit der SRID, die du willst. Den Code dazu hast du ja (fast) schon. Oder du beschränkst dich auf Geometrien, die keine Projektion(das bedeutet die -1) haben. Allerdings solltest du auf jeden Fall wenn du was änderst, auf Zusammenhänge mit anderen Geometrien achten. Sonst könnten einige Abfagen eventuell ins Leere laufen.

Grüssle Uwe



ALTER TABLE roads
  ADD CONSTRAINT enforce_srid_the_geom CHECK (srid(the_geom) = (21781));

hier kommt wieder eine Fehlermeldung:


  ERROR: check constraint "enforce_srid_the_geom_alt" is violated by some row

Irgendwie hast du jetzt einen neuen Constraint angelegt, aber eigentlich verstehe ich nicht was du geade machst? Eigentlich solltest du den srid-Constraint ändern oder löschen und neu anlegen können…
Grüssle Uwe

nach dem löschen hat es funktionert

merci