Wymuś SRID w widokach w Postgis 2.0

9

Mam bardzo trudny problem: mam bazę danych Postgis 2.0, używaną jako magazyn danych dla Geoserver 2.1.3

Mam tabelę z kolumną geometrii (o nazwie kształt) z SRID 4326

Stworzyłem taki widok:

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

A potem opublikowałem widok za pomocą geoservera. Wszystko działa, z wyjątkiem żądań GetFeatureInfo, które kończą się błędem „Operacja na mieszanych geometriach SRID Prosty

select * from geometry_columns

zwraca, że ​​SRID pippo.geom wynosi 0 (ale powinien wynosić 4326)

Próbowałem również z tą definicją widoku

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

ale nadal mam SRID = 0 w geometry_columns .... jakaś pomoc?

Oto, jak zdefiniowano warstwę w Geoserver: wprowadź opis zdjęcia tutaj

Obejście

Znalazłem obejście, aby rozwiązać nie sam problem, ale pozwolić Geoserverowi na przeprowadzenie wyszukiwania przestrzennego na żądanie GetFeatureInfo:

zamiast tworzyć widok i publikować go, opublikowałem warstwę SQL zdefiniowaną bezpośrednio w geoserver. W formularzu definicji warstwy mogłem wybrać odpowiedni typ gemoetrii i SRID i wszystko już działa!

Tommaso
źródło

Odpowiedzi:

8

Możesz użyć typmod, aby określić srid w geometry_columnswidoku, coś w rodzaju

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

Instrukcja ma więcej informacji.

gomatteo
źródło
0

W warstwach można zobaczyć CRS (system odniesienia za pomocą współrzędnych)

wprowadź opis zdjęcia tutaj

Możesz wymusić CRS w Geoserver

http://docs.geoserver.org/2.1.3/user/webadmin/data/layers.html#webadmin-layers

wprowadź opis zdjęcia tutaj

Mapperz
źródło
Geoserver szuka w geometry_columns natywnego CRS warstwy, który w moim przypadku wynosi 0. Zedytowałem odpowiedź dołączającą definicję warstwy w Geoserver
Tommaso,