Я новичок в Postgis и QGIS. Я создал вид, определенный как
CREATE OR REPLACE VIEW pupr.vstudentmuni AS
SELECT m.id AS munid, m.name AS muname, m.geom, s.code,
(s.name::text || ' '::text) || s.lastname::text AS fullname
FROM pupr.municipio m, pupr.student_location l, pupr.student s
WHERE st_within(l.geom, m.geom) AND s.code = l.code;
в PostgreSQL. Попытка добавить это представление в QGIS возвращает следующую ошибку ...
"Invalid layer"..."sql= is an invalid layer and cannot be loaded."
Не уверен, в чем проблема. Таблица упоминается в geommetry_columns
таблице в PostGIS, но я вижу запись сообщения в QGIS, которая говорит: «Нет ключевого поля для данного представления». Я использую PostgreSQL 9.2 и QGIS 1.8.0.
qgis
postgis
spatial-view
ufeliciano
источник
источник
Ответы:
Когда вы добавляете представление из PostGIS в QGIS, вы должны указать поле уникального идентификатора. Справа от имени слоя будет раскрывающийся список, в котором можно указать, какое поле использовать. Если у вас нет поля уникального идентификатора, вы можете создать поле поддельного идентификатора, используя оконную функцию row_number () в запросе, который создает ваше представление.
источник
Сегодня я столкнулся с этой ошибкой с представлением, созданным из объединения таблиц. В итоге появилось два уникальных поля, которые расстроили QGis. Изначально вид был такой:
Таким образом, в представлении было два поля первичного ключа. Вместо этого я должен был указать результирующие поля, чтобы в конечном итоге единственный кандидат на поле для уникального идентификатора:
источник