Postgis 2.0 - a exibição public.geometry_columns não contém informações corretas para as visualizações


10

Atualizamos recentemente nosso banco de dados para o Postgis 2.0.

Em nosso sistema , costumávamos criar visualizações para tabelas contendo uma coluna geométrica. Após criar a visualização, também atualizamos manualmente a tabela geometry_columns com as informações necessárias. As visualizações são usadas para criar camadas de Geoserver e também para alimentar dados para ogr2ogr.

O problema no Postgis 2.0 é que a tabela geometry_columns foi substituída por uma visualização que recupera dados dos catálogos do sistema. No nosso caso, para as visualizações criadas, não recuperamos as informações corretas nas colunas 'coord_dimension', 'srid' e 'type'.
Informação : após algumas pesquisas, descobri que a visualização geometry_columns está usando a tabela pg_constraint para preencher essas colunas, mas, para essa visualização, não há restrições definidas.

Alguém tem alguma idéia de como podemos resolver esse problema? Como podemos forçar a visualização gemetry_columns para recuperar as informações necessárias? Existe uma solução alternativa ou outra maneira de fazer isso?

Respostas:


8

Encontrei uma solução para o meu problema: Todas as informações necessárias podem ser encontradas neste link https://postgis.net/docs/using_postgis_dbmanagement.html#Manual_Register_Spatial_Column

Solução 1: Crie a tabela e adicione a coluna typometry baseada em typmod, o processo de criação a registraria corretamente em geometry_columns.
Correto: CREATE TABLE pois_ny (gid SERIAL PRIMARY KEY, geom geometry (POINT, 4326));
Incorreto: CREATE TABLE pois_ny (gid SERIAL PRIMARY KEY); SELECT AddGeometryColumn ('pois_ny', 'geom', 4326, 'POINT', 2, false);

Solução 2: Crie a vista e force o typmod para as colunas de geometria,
por exemplo, CREATE VIEW vw_pois_ny_parks AS SELECT geom :: geometry (POINT, 4326) Como geom FROM pois_ny

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.