Postgis 2.0: la vista public.geometry_columns no contiene información correcta para las vistas


10

Recientemente hemos actualizado nuestra base de datos a Postgis 2.0.

En nuestro sistema , solíamos crear vistas para tablas que contenían una columna de geometría. Después de crear la vista, también actualizamos manualmente la tabla geometry_columns con la información necesaria. Las vistas se utilizan para crear capas Geoserver y también para alimentar datos para ogr2ogr.

El problema en Postgis 2.0 es que la tabla geometry_columns fue reemplazada por una vista que recupera datos de los catálogos del sistema. En nuestro caso, para las vistas creadas, no recuperamos la información correcta en las columnas 'coord_dimension', 'srid' y 'type'.
Información : después de investigar, descubrí que la vista geometry_columns está usando la tabla pg_constraint para llenar esas columnas, pero para esa vista no hay restricciones definidas.

¿Alguien tiene alguna idea de cómo podemos solucionar este problema? ¿Cómo podemos forzar la vista gemetry_columns para recuperar la información necesaria? ¿Hay alguna solución u otra forma de hacerlo?

Respuestas:


8

He encontrado una solución a mi problema: toda la información necesaria se puede encontrar en este enlace https://postgis.net/docs/using_postgis_dbmanagement.html#Manual_Register_Spatial_Column

Solución 1: Cree la tabla y agregue la columna de geometría typmod basada, el proceso de creación la registraría correctamente en geometry_columns.
Correcto: CREATE TABLE pois_ny (gid SERIAL PRIMARY KEY, geometría de geom (POINT, 4326));
Incorrecto: CREATE TABLE pois_ny (gid SERIAL PRIMARY KEY); SELECT AddGeometryColumn ('pois_ny', 'geom', 4326, 'POINT', 2, false);

Solución 2: Cree la vista y fuerce typmod para las columnas de geometría,
por ejemplo CREAR VISTA vw_pois_ny_parks AS SELECT geom :: geometry (POINT, 4326) Como geom FROM pois_ny

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.