Forçar SRID em visualizações no Postgis 2.0

9

Eu tenho um problema muito complicado: eu tenho um banco de dados Postgis 2.0, usado como armazenamento de dados para o Geoserver 2.1.3

Eu tenho uma tabela com uma coluna de geometria (forma nomeada), com SRID 4326

Eu criei uma visão como esta:

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

E então publiquei a visualização usando o geoserver. Tudo funciona, exceto as solicitações GetFeatureInfo, que falham com o erro 'Operação em geometrias SRID mistas

select * from geometry_columns

retorna que o SRID do pippo.geom é 0 (mas deve ser 4326)

Eu tentei também com essa definição para a view

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

mas ainda tenho SRID = 0 nas geometry_columns .... alguma ajuda?

Aqui está como a camada é definida no Geoserver: insira a descrição da imagem aqui

Gambiarra

Encontrei uma solução alternativa para corrigir não o problema em si, mas permitir que o Geoserver fizesse uma pesquisa espacial em solicitações GetFeatureInfo:

em vez de criar uma visualização e publicá-la, publiquei uma camada SQL definida diretamente no geoserver. No formulário de definição de camada, me permitiu selecionar o tipo de gemoetry e SRID certos e tudo está funcionando agora!

Tommaso
fonte

Respostas:

8

Você pode usar um typmod para especificar o srid na geometry_columnsexibição, algo como

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

O manual tem mais informações.

gomatteo
fonte
0

Quando em Camadas, você pode ver o CRS (Sistema de Referência de Coordenadas)

insira a descrição da imagem aqui

Você pode forçar o CRS no Geoserver

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

insira a descrição da imagem aqui

Mapperz
fonte
Geoserver olhares em geometry_columns para os CRS nativas da camada, que no meu caso é 0. Eu editei a resposta fixar a definição de camada em Geoserver
Tommaso