Force SRID во взглядах в Postgis 2.0

9

У меня очень сложная проблема: у меня есть база данных Postgis 2.0, используемая в качестве хранилища данных для Geoserver 2.1.3

У меня есть таблица со столбцом геометрии (с именем фигуры), с SRID 4326

Я создал вид как это:

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

А потом я опубликовал вид с помощью геосервера. Все работает, кроме запросов GetFeatureInfo, что завершается ошибкой 'Операция со смешанной геометрией SRID Простое

select * from geometry_columns

возвращает значение SRID файла pippo.geom 0 (но должно быть 4326)

Я пытался также с этим определением для представления

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

но у меня все еще есть SRID = 0 в geometry_columns .... любая помощь?

Вот как слой определяется в Geoserver: введите описание изображения здесь

Временное решение

Я нашел обходной путь, чтобы решить не саму проблему, а позволить Geoserver выполнять пространственный поиск по запросам GetFeatureInfo:

вместо того, чтобы создавать представление и публиковать его, я опубликовал SQL-слой, определенный непосредственно в геосервере. В форме определения слоя это позволило мне выбрать правильный тип gemoetry и SRID, и теперь все работает!

Томмазо
источник

Ответы:

8

Вы можете использовать typmod для указания srid в geometry_columnsпредставлении, что-то вроде

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

В руководстве есть больше информации.

gomatteo
источник
0

В слоях вы можете увидеть CRS (Система координат координат)

введите описание изображения здесь

Вы можете форсировать CRS в Geoserver

http://docs.geoserver.org/2.1.3/user/webadmin/data/layers.html#webadmin-layers

введите описание изображения здесь

Mapperz
источник
Geoserver ищет в geometry_columns собственный CRS слоя, который в моем случае равен 0. Я отредактировал ответ, добавив определение слоя в Geoserver
Tommaso