Forzar SRID en vistas en Postgis 2.0

9

Tengo un problema muy complicado: tengo una base de datos Postgis 2.0, utilizada como almacén de datos para Geoserver 2.1.3

Tengo una tabla con una columna de geometría (forma denominada), con SRID 4326

He creado una vista como esta:

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

Y luego publiqué la vista usando geoserver. Todo funciona, excepto las solicitudes GetFeatureInfo, que falla con el error 'Operación en geometrías SRID mixtas. Un simple

select * from geometry_columns

devuelve que el SRID de pippo.geom es 0 (pero debería ser 4326)

Intenté también con esta definición para la vista

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

pero todavía tengo SRID = 0 en geometry_columns ... ¿alguna ayuda?

Así es como se define la capa en Geoserver: ingrese la descripción de la imagen aquí

Solución alterna

Encontré una solución alternativa para solucionar no el problema en sí, sino para permitir que Geoserver realice una búsqueda espacial en las solicitudes GetFeatureInfo:

en lugar de crear una vista y publicarla, publiqué una capa SQL definida directamente en geoserver. ¡En la forma de definición de capa me permitió seleccionar el tipo de gemoetría y SRID correctos y todo está funcionando ahora!

Tommaso
fuente

Respuestas:

8

Puede usar un typmod para especificar la cuadrícula en la geometry_columnsvista, algo así como

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

El manual tiene más información.

gomatteo
fuente