Читання ODBC-зв’язку за допомогою QGIS? [зачинено]


16

У мене є співробітник, який управляє великою базою даних MS Access, яка містить поля X&Y для різних місць, які він відстежує. Ми раніше експортували дані в CSV і використовували плагін для розмежування тексту QGIS для побудови графіку розташування.

Тепер ми хотіли б розмістити ці дані безпосередньо в QGIS, підключившись до MS Access db через з'єднання ODBC (на відміну від експорту в CSV).

  1. Чи може QGIS споживати дані з ODBC-з'єднання для побудови місця XY?
  2. Чи можна його "зв’язати в реальному часі" з з'єднанням ODBC, щоб коли проект повторно відкривався, шар "динамічно" повторно ретловує всі старі та новододані місця (на відміну від експорту до формфайлу, який би створив знімок у часі)?
  3. Чи можете ви створити табличні ODBC-з'єднання, які можна приєднати до просторових таблиць у рамках QGIS?

Ви можете зробити все це в ArcGIS (інструмент "Додати дані XY"), тому було б чудово, якби ця можливість існувала в QGIS. Я просто не можу ніде знайти, що згадує про його існування.

Я не планую переходити на просторову базу даних. Як людина, яка займається ГІС, так, я знаю, що має сенс перейти до просторової бази даних, і так, я використовував PostGIS для управління подібними даними. Але це зараз не варіанти. Користувач не є особою ГІС і не хоче бути ним, і він управляє власною базою даних в MS Access, і це не зміниться. Я є, і я тягну його ногами і криком у світ ГІС і хочу зробити це максимально легким. Він може жити з експортом до CSV, я просто сподівався, що є краще рішення ВИКОРИСТАННЯ ODBC ДЛЯ ДОСТУП МС та відображення даних XY у QGIS.


Тоді, наскільки мені відомо, ви не можете робити так, як ви просите з QGIS. Я погоджуюсь, що в ODBC-еквіваленті імпорту CSV було б деяке використання, але для будь-якої продуктивності це повинно бути імпортом, а не динамічним з'єднанням - як і плагін CSV. Тому, швидше за все, не буде жодного захоплення, якщо ви самі не підтримуєте / розвиваєте його.
MerseyViking

@ MV - я загалом погоджуюся з вами і бачу ваші моменти. Однак для тих, хто не є учасниками GIS, які в першу чергу зацікавлені у простому зіставленні даних та не аналізі даних, ефективність QGIS не буде такою суттєвою проблемою. Я б міг уявити, що динамічне "завжди" живе з'єднання з їхніми даними майже напевно переважатиме за ефективність (знову ж таки, думка про це з точки зору користувачів, що не є ГІС).
RyanKDalton

Відмінна відповідь на аналогічне запитання на QGIS 2.4 доступ .mdb додати помилку
RyanKDalton

Відповіді:


7

Caveat: Я цього не пробував, тому я готовий вклонитися кожному, хто має прямий досвід.

Ви можете підключитися до джерела даних ODBC у діалоговому вікні "Додати векторний рівень", просто виберіть "базу даних" як тип джерела та ODBC як тип бази даних. QGIS використовує драйвер ODBC для OGR , тому застосовуватимуться ті самі застереження - тобто вам знадобиться таблиця під назвою GEOMETRY_COLUMNS тощо, тому ваш колега, ймовірно, повинен буде змінити базу даних.

Я не використовував Access з недавнього часу після випуску версії 1.0, але оскільки він просторово не включений, ви, ймовірно, знайдете ефективність проблеми. Імовірно, ви не збираєтеся просто відмовитися від доступу та почати використовувати базу даних, що підтримується простором, оскільки це навряд чи буде економічно вигідним, але якщо ваш колега коли-небудь відчує бажання змінити, я настійно рекомендую перейти до чогось більше потужний.


@ MV - Це хороша інформація. Я не розумів, що ви можете додати табличні дані за допомогою параметра "Додати векторний шар". Ти маєш рацію, однак, оскільки це не включено просторово, все одно доведеться якось експортувати у просторовий формат. І ви праві, користувач не збирається переходити на просторово ввімкнений db, оскільки він не є ні ГІС, ні базою даних. Їм достатньо навчань для доступу, щоб бути небезпечним ...
RyanKDalton

7

З новими інструментами "Обробка", доступними в QGIS 2, це стає дещо простіше. Хоча я досі не знайшов способу "живого зв'язку" даних (так що якщо змінити значення в таблиці MS Access, точка переміститься автоматично), схоже, цей метод працює досить добре.

Заслуга "Christina" та "Bernd" в розділі коментарів цієї сторінки (і, звичайно, @underdark для блогу), як створити з'єднання ODBC до вашої бази даних MS Access:

Створіть з'єднання ODBC:

Для Win7, 32 біт: перейдіть до панелі управління / інструментів адміністрування / джерел даних (ODBC)

64-розрядна версія Win7: Замість використання за замовчуванням «панель управління / адміністративні засоби / джерела даних (ODBC)» - так, для 64-бітових версій ви повинні використовувати C: \ Windows \ SysWOW64 \ odbcad32.exe!

  1. Перейдіть на вкладку DSN користувача та натисніть "Додати"
  2. Прокрутіть униз до драйвера доступу до Microsoft (* mdb) та натисніть «закінчити»
  3. Укажіть назву підключення, після чого виберіть "вибрати", щоб переглянути місце розташування бази даних, а потім натисніть "ОК", щоб вийти з діалогу та знову закрити вікно dsn.

Завантажте шар у QGIS:

  1. Перейдіть, щоб додати векторний шар і виберіть параметр бази даних.
  2. Переконайтеся, що в полі "тип" бази даних вказано "ODBC" та натисніть "new"
  3. У полі імені введіть назву для з'єднання
  4. Господар - місцевий господар
  5. Ім'я бази даних - це ім'я dsn, яке ви створили на кроці 4
  6. Усі інші поля повинні бути порожніми, але ви можете поставити галочку "зберегти пароль".
  7. Перевірте підключення та відзначте будь-які помилки. Після успішного натискання кнопки "ОК" повернутися до діалогу "Додати векторний шар"
  8. Клацніть "відкрити", щоб відкрити це з'єднання, і якщо вас запитають пароль, натисніть "ОК". Виберіть свій шар (таблиця з бази даних), маючи на увазі, що він може не мати геометрії.

Перетворіть дані XY в пункти:

  1. За допомогою таблиці в TOC перейдіть до розділу «Обробка» -> Панель інструментів -> Геоалгоритми -> Вектор -> Створення -> «Шар точок з таблиці».
  2. Заповніть форму, як показано нижче:

Шар точок з табл


Якщо у вас виникли проблеми з таким підходом, перевірте помилку
додання

Величезне спасибі за допомогу в підключенні доступу MS до QGIS. Я використовую три букви коду країни як шар приєднання, і він спрацював дуже добре

Якби у мене була таблиця з лінією чи багатокутником, як я можу тоді створити карту?
MichaelR

5

Хоча мені ще цікаво почути, чи є інші варіанти, але я наткнувся на повідомлення, в якому згадувалося, що це можливо за допомогою плагіну eVis .

Документація описує в розділі « Підключення до бази даних», як можна підключитися до з’єднання MS Access або ODBC, щоб створити точки бази даних XY з бази даних, не створюючи статичний знімок. Я просто набрав "select * from" і eVis вискочив діалогове вікно, яке запитує ім'я шару та поля XY.

Це, на жаль, не створює "живого" зв'язку з MS Access db, оскільки наступного разу, коли проект відкриється, QGIS плутається ("не вдається відкрити один або кілька шарів проекту"). Однак рішенням цього є створення заздалегідь заданого XML-запиту, який може обрати користувач.

Тож, хоча це не ідеальне рішення, це на один крок краще, ніж експорт до CSV. В майбутньому я думаю, що було б чудово бачити, що плагін Delimited Text розширений, щоб прийняти для цього з'єднання ODBC.


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

@ MV - З того, що я можу розповісти за допомогою експериментів, з'являється eVis, що створює кешований шар у QGIS. Наприклад, після завантаження шару eVis я видалив один із записів із БД доступу, оновлений екран QGIS і збережена точка "видалення". Але коли я створив новий кешований шар, видалена точка не відображалася (як очікувалося). Панорамування та масштабування не впливали на відображення кешованого шару.
RyanKDalton

4

Альтернативним підходом було б переміщення даних на постгігі. ви можете прочитати файл csv безпосередньо за допомогою команди postgresql copy-command. тоді ви можете створювати точки для полів xy.

то якщо ви хочете використовувати деякі звіти або інші функціональні можливості в доступі, ви можете підключитися до postgis із доступу.

користь полягає в тому, що ви розміщуєте просторові дані там, де вони належать, в просторову базу даних, а потім використовуєте odbc назад для доступу для обробки непросторових даних, якщо ви з якихось причин все ще хочете бачити свої дані в доступі.

Є чудові підручники для доступу postgis / postgresql для доступу до сайту postgresonline.com. підручники про введення до postgis / postgresql ви можете знайти тих самих авторів на bostongis.org

/ Ніклас


0

Є кілька продуктів перетворення, які можуть конвертувати дані MS-доступу в postgres або SQLite і назад. Перенесіть дані дуже швидко з однієї сторони на іншу. Використання однієї з цих програм може дати вам можливість запустити QGIS на моментальному знімку даних.


1
ви могли б запропонувати такий інструмент?
Єнс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.