Erzwingen Sie SRID in Ansichten in Postgis 2.0

9

Ich habe ein sehr kniffliges Problem: Ich habe eine Postgis 2.0-Datenbank, die als Datenspeicher für Geoserver 2.1.3 verwendet wird

Ich habe eine Tabelle mit einer Geometriespalte (benannte Form) mit der SRID 4326

Ich habe eine Ansicht wie diese erstellt:

CREATE VIEW pippo AS SELECT st_geometryn(shape,1) as geom FROM events

Und dann habe ich die Ansicht mit Geoserver veröffentlicht. Alles funktioniert, bis auf GetFeatureInfo-Anforderungen, die mit dem Fehler 'Operation bei gemischten SRID-Geometrien A fehlschlagen

select * from geometry_columns

gibt zurück, dass die SRID von pippo.geom 0 ist (sollte aber 4326 sein)

Ich habe es auch mit dieser Definition für die Ansicht versucht

CREATE VIEW pippo AS SELECT st_setsrid(st_geometryn(shape,1), 4326) as geom FROM events

aber ich habe immer noch SRID = 0 in den geometrischen Spalten ... Hilfe?

So wird die Ebene in Geoserver definiert: Geben Sie hier die Bildbeschreibung ein

Problemumgehung

Ich habe eine Problemumgehung gefunden, um nicht das Problem selbst zu beheben, sondern um Geoserver die Möglichkeit zu geben, eine räumliche Suche für GetFeatureInfo-Anforderungen durchzuführen:

Anstatt eine Ansicht zu erstellen und zu veröffentlichen, habe ich eine SQL-Ebene veröffentlicht, die direkt in Geoserver definiert ist. Im Layer-Definitionsformular konnte ich den richtigen Gemoetry-Typ und die richtige SRID auswählen und jetzt funktioniert alles!

Tommaso
quelle

Antworten:

8

Sie können ein typmod verwenden, um den srid in der geometry_columnsAnsicht anzugeben , etwa

CREATE VIEW pippo AS
SELECT st_geometryn(shape,1)::geometry(Geometry, 4326) as geom
FROM events

Das Handbuch enthält weitere Informationen.

gomatteo
quelle