Forcer le SRID dans les vues dans Postgis 2.0


9

J'ai un problème très délicat: j'ai une base de données Postgis 2.0, utilisée comme banque de données pour Geoserver 2.1.3

J'ai une table avec une colonne de géométrie (forme nommée), avec SRID 4326

J'ai créé une vue comme celle-ci:

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

Et puis j'ai publié la vue en utilisant geoserver. Tout fonctionne, sauf pour les demandes GetFeatureInfo, qui échoue avec l'erreur «Opération sur des géométries SRID mixtes Un simple

select * from geometry_columns

renvoie que le SRID de pippo.geom est 0 (mais devrait être 4326)

J'ai essayé aussi avec cette définition pour la vue

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

mais j'ai encore SRID = 0 dans les geometry_columns .... une aide?

Voici comment la couche est définie dans Geoserver: entrez la description de l'image ici

solution de contournement

J'ai trouvé une solution de contournement pour résoudre non pas le problème lui-même, mais pour permettre à Geoserver d'effectuer une recherche spatiale sur les demandes GetFeatureInfo:

au lieu de créer une vue et de la publier, j'ai publié une couche SQL définie directement dans le géoserveur. Dans le formulaire de définition de couche, cela m'a permis de sélectionner le bon type de gemmétrie et le SRID et tout fonctionne maintenant!

Réponses:


8

Vous pouvez utiliser un typmod pour spécifier le srid dans la geometry_columnsvue, quelque chose comme

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

Le manuel contient plus d'informations.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.