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!

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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.