在Postgis 2.0中的视图中强制使用SRID


9

我有一个非常棘手的问题:我有一个Postgis 2.0数据库,用作Geoserver 2.1.3的数据存储

我有一个带有几何列(名为形状)的表,其SRID 4326

我创建了这样的视图:

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

然后,我使用geoserver发布了视图。除GetFeatureInfo请求外,其他所有操作均有效,并显示错误“对混合SRID几何进行操作”。

select * from geometry_columns

返回pippo.geom的SRID为0(但应为4326)

我也尝试使用此定义进行查看

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

但是我在geometry_columns中仍然有SRID = 0。...有什么帮助吗?

这是在Geoserver中定义图层的方式: 在此处输入图片说明

解决方法

我找到了一种解决方法,不仅可以解决问题本身,还可以让Geoserver对GetFeatureInfo请求执行空间搜索:

我没有创建视图并发布它,而是发布了直接在geoserver中定义的SQL层。在层定义表单中,它使我可以选择正确的宝石学类型和SRID,并且现在一切正常!

Answers:


8

您可以使用typmod在geometry_columns视图中指定srid ,例如

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

手册有更多信息。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.