Зробити просторовий вигляд у PostGIS та додати його як шар у QGIS?


49

У PostGIS 2.0 я шукаю ефективний спосіб створити просторово включений перегляд, який можна переглянути в QGIS.

Я стежив за контекстом частини 2 відповіді @Mike Toews на тему: Як створити таблицю з існуючих таблиць (застосовуючи нові схеми) у БД постгіс? , а представлення відображається у вигляді точкового шару (у моєму випадку) у діалоговому вікні "Додати шари PostGIS". Але після створення представлення та просторового його ввімкнення я отримав таку помилку при спробі додати представлення до QGIS:

Ви повинні вибрати таблицю, щоб додати шар

Чи може хтось пояснити, чому просторовий вигляд не завантажується в QGIS, і що мені потрібно зробити, щоб зробити його завантажуваним як шар у QGIS?

Зараз я використовую QGIS v1.8 від інсталятора OSGEO

Я переглядаю, будується з бази даних імен, завантажених у PostGIS. Таблицю географічних назв / просторові дані можна вибирати / переглядати в QGIS просто чудово.

Коли я намагаюся вибрати " mt_view ", QGIS бачить перегляд у діалоговому вікні, але не дозволяє мені його вибрати. Він дає пунктирне вікно навколо області, але не виділяє і не вибирає вид.

QGIS не може вибрати mt_view як шар


Я щойно помітив, що коли запускаю перший запит:

CREATE OR REPLACE VIEW data.test AS
SELECT * FROM data.geoname
WHERE admin1='MT'

представлення відображається в діалоговому вікні QGIS Add Layer, але його неможливо вибрати. Потім, коли я бігаю:

SELECT Populate_Geometry_Columns('data.test'::regclass);

Я отримую результат "0", де згідно з документацією , я думаю, він повинен повертати "1".


1
Я підтверджую проблему. З QGIS 1.8, PostGIS 2.0 та представленням, створеним із таблиці з первинним ключем, подання відображається у доступних шарах, але з'являється повідомлення про помилку "Ви повинні вибрати таблицю, щоб додати шар".
giohappy

2
Чи є інший спосіб автоматичного встановлення основного ключа у вікні Postgis Add Layer, коли ми працюємо з поданнями? Вибрати поле первинного ключа на цьому екрані для будь-яких шарів / представлень дуже важко, якщо ви уявляєте, що звичайний користувач GIS, а в представленні є багато цілих полів.

@Pgimenez, я б запропонував почати нове запитання з того, що ви сказали вище, а потім посилатись на ці URL-адреси запитів у себе. Це дасть їй значно ширшу видимість.
RyanDalton

Немає способу візуалізувати опуклу частину в qgis 1,8 lisboa? Я намагався наступні vievs в Postgis 1.5. Мені сказали використовувати колонку id, щоб опублікувати його в Qgis. Якщо ви не використовуєте стовпчик ідентифікатора, ви все одно не можете його завантажити через помилку. 1. створити або замінити подання con_hull_baeume3 (ставка) як вибрати "0", ST_ConvexHull (ST_Collect (geom)) від бейуму; 2. створити або замінити перегляд con_hull_baeume4 (ставка) як вибрану ставку, ST_ConvexHull (ST_Collect (geom)) від групи групування за ставками; але цей зроби опуклий на кожній з геометричних точок. Я маю на увазі просто використовувати "select ST_ConvexHull (ST_Collect (geom)) FROM baeume;" твори
улан

1
Ласкаво просимо! Будь ласка, опублікуйте це як нове запитання, оскільки воно, схоже, не відповідає оригінальному. Принаймні, якщо це питання, оскільки з останнього твердження не зрозуміло, чи вдалося вам чи ні.
lynxlynxlynx

Відповіді:


54

Я можу підтвердити, що неможливо просто вибрати перелічений перегляд.

Мабуть, потрібно спочатку вибрати «стовпчик первинного ключа». Тоді таблиця вибирається за вибором:

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


1
Нічого собі, я б ніколи цього не бачив. Дуже дякую! Я відредагував заголовок, щоб відобразити проблему, що стосується QGIS, а не подання PostGIS.
RyanDalton

Здається, це проблема для QGIS 1.8 (який я ще не використовував). Ці кроки не потрібні для 1.7.
Майк Т

Правильно, 1,7 намагалися відгадати первинний ключ. Але це не спрацювало добре.
underdark

Зі сторони, @underdark, чи QGIS приймає інші типи ПК?
Джордж Сільва

1
У QGIS3 стовпець очолюється "ідентифікатор функції", а не "стовпчик первинного ключа", і (принаймні для мене) він знаходиться за межею вікна за замовчуванням (тобто не видно), і немає жодних ознак того, що було більше стовпців! Я думаю, що я заношу запит на функцію, щоб після вибору вам було запропоновано отримати ці деталі (якщо потрібно). Здається, розробники припускають, що люди переконаються, що в першому стовпчику є унікальний ключ.
Рассел Фултон

5

(Трохи оновлення моєї відповіді)

Поки поле OBJECTID (рядок_кілька) є першим у визначенні стовпця подання , QGIS буде вибирати його, не вимагаючи додавання з меню "Додати векторний шар".

CREATE OR REPLACE VIEW dqmt.addressverify AS 
 SELECT row_number() OVER (ORDER BY newaddresses.addressid) AS objectid,
    newaddresses.addressid
  , geom
   FROM dqmt.newaddresses;

Я просто виправив декілька старих поглядів, які були порушені відповідно до оригінального питання, але переміщення поля OBJECTID на початок перегляду виправило проблему!


Я також використовував синтаксис "row_number () over ()" для багатьох переглядів. Зазвичай я використовую "gid" для свого основного ключового поля. Чи всі ваші інші погляди використовують "об’єктид" як основний ключ?
RyanDalton

Зазвичай об'єктивіст - який працював у наведеному вище прикладі - але спробує gid ... чи щось QGIS розпізнає перед будь-яким іншим полем "id"?
DPSSpatial

GID не впливає на це ...
DPSSpatial

Просто мріяти про можливості. спасибі за перевірку
RyanDalton

(Пізно до цього, але ...) у здогадуванні, я думаю, що якщо завантажена таблиця має PRIMARY KEYвизначений QGIS зазвичай збирає її: вона ніколи не може "вибрати" ПК на будь-якій з моїх таблиць, у яких є ПК, хоча майже всі мої ПК є VARCHAR. Це не може статися з a, VIEWоскільки PostgreSQL VIEWs не може мати CONSTRAINTs. Досить впевнений, що тому потрібно вибрати ПК VIEWвручну при імпорті до QGIS за допомогою кнопки «Додати шари PostGIS», тому я імпортую їх за допомогою сценарію Python.
GT.

4

Чи відображається ваш погляд у geometry_columnsтаблиці? Відповідно до посібника, перегляд повинен автоматично з’являтися в 2.0, але я його не пробував.

Спробуйте виконати наступне, щоб перевірити:

SELECT f_geometry_column As col_name, type, srid, coord_dimension As ndims 
FROM geometry_columns
WHERE f_table_name = 'my_spatial_table' AND f_table_schema = 'my_schema';

Так, запустивши цю перевірку проти мого погляду, повертається: the_geom, Point, 4269,2
RyanDalton,

3

Чи використовується ваш погляд за допомогою унікального цілого поля, такого як "gid" або PK-еквівалента, з однієї з таблиць у вашому перегляді?

Я знаю, що в попередніх версіях QGIS у мене були проблеми з додаванням подань на карту, коли не було унікального цілого поля. Однак я отримав інше повідомлення про помилку, яке вказує на цю проблему, але, можливо, варто перевірити, щоб покрити всі підстави.


Так, у таблиці геоімен є "geonameid", що є унікальним ідентифікатором та встановлено обмеження PRIMARY KEY для цього поля.
РайанДалтон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.