Postgis 2.0 - представление public.geometry_columns не содержит правильную информацию для представлений


10

Недавно мы обновили нашу базу данных до Postgis 2.0.

В нашей системе мы использовали для создания представлений для таблиц, содержащих столбец геометрии. После создания представления мы также вручную обновили таблицу geometry_columns необходимой информацией. Представления используются для создания слоев Geoserver, а также для подачи данных для ogr2ogr.

Проблема в Postgis 2.0 состоит в том, что таблица geometry_columns была заменена видом, который извлекает данные из системных каталогов. В нашем случае, для созданных представлений мы не получаем правильную информацию в столбцах'ordin_dimension ', "Srid" и "Type".
Информация : после некоторых исследований я обнаружил, что представление geometry_columns использует таблицу pg_constraint для заполнения этих столбцов, но для этого представления не определены ограничения.

У кого-нибудь есть идеи, как мы можем решить эту проблему? Как мы можем заставить представление gemetry_columns получить необходимую информацию? Есть ли обходной путь или другой способ сделать это?

Ответы:


8

Я нашел решение своей проблемы: всю необходимую информацию можно найти по этой ссылке https://postgis.net/docs/using_postgis_dbmanagement.html#Manual_Register_Spatial_Column

Решение 1. Создайте таблицу и добавьте столбец геометрии на основе typmod, процесс создания правильно зарегистрирует ее в geometry_columns.
Правильно: CREATE TABLE pois_ny (gid SERIAL PRIMARY KEY, геометрия geom (POINT, 4326));
Неверно: CREATE TABLE pois_ny (gid SERIAL PRIMARY KEY); SELECT AddGeometryColumn ('pois_ny', 'geom', 4326, 'POINT', 2, false);

Решение 2. Создайте view и force typmod для столбцов геометрии,
например, CREATE VIEW vw_pois_ny_parks AS SELECT geom :: geometry (POINT, 4326) Как geom ОТ pois_ny

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.