У меня есть сотрудник, который управляет большой базой данных MS Access, которая содержит поля X & Y для различных местоположений, которые он отслеживает. Ранее мы экспортировали данные в CSV и использовали текстовый плагин QGIS с разделителями для построения местоположений.
Теперь мы хотели бы отобразить эти данные непосредственно в QGIS, подключившись к базе данных MS Access через соединение ODBC (в отличие от экспорта в CSV).
- Может ли QGIS использовать данные из соединения ODBC для построения местоположений XY?
- Может ли он быть «живым» связан с соединением ODBC, чтобы при повторном открытии проекта слой «динамически» реплотировал все старые и вновь добавленные местоположения (в отличие от экспорта в шейп-файл, который создавал бы моментальный снимок)?
- Можете ли вы создать табличные ODBC-соединения, которые можно присоединить к пространственным таблицам в QGIS?
Вы можете делать все это в ArcGIS (инструмент «Добавить данные XY»), поэтому было бы здорово, если бы эта возможность существовала в QGIS. Я просто не могу найти нигде, где упоминается о его существовании.
Я не планирую переходить на пространственную базу данных. Как сам ГИС, да, я знаю, что имеет смысл перейти к пространственной базе данных, и да, я использовал PostGIS для управления такого рода данными. Но это не варианты прямо сейчас. Пользователь не ГИС и не хочет им быть, и он управляет своей собственной базой данных в MS Access, и это не изменится. Я втягиваю его и кричу в мир ГИС и хочу сделать его максимально легким. Он может жить с экспортом в CSV, я просто надеялся, что есть лучшее решение, использующее ODBC FOR MS ACCESS и отображающее данные XY в QGIS.
Ответы:
Предостережение: я не пробовал этого, поэтому я готов поклониться любому, кто имеет непосредственный опыт.
Вы можете подключиться к источнику данных ODBC в диалоговом окне «Добавить векторный слой», просто выберите «база данных» в качестве типа источника и ODBC в качестве типа базы данных. QGIS использует драйвер ODBC для OGR , поэтому будут применяться те же предостережения - то есть вам понадобится таблица с именем GEOMETRY_COLUMNS и т. Д., Поэтому вашему коллеге, вероятно, потребуется изменить базу данных.
Я не использовал Access с тех пор, как вскоре после выпуска версии 1.0, но, поскольку он не включен пространственно, вы, вероятно, столкнетесь с проблемой производительности. Предположительно, вы не просто отбросите Access и начнете использовать пространственно включенную базу данных, потому что это вряд ли будет экономически целесообразно, но если ваш коллега когда-либо почувствует потребность в изменениях, я настоятельно рекомендую перейти к чему-то еще. мощный.
источник
С новыми инструментами «Обработка», доступными в QGIS 2, это становится немного проще. Хотя я до сих пор не нашел способ «живого связывания» данных (чтобы при изменении значений в таблице MS Access точка перемещалась автоматически), этот метод, похоже, работает довольно хорошо.
В разделе «Комментарии» этой страницы (и, конечно, @underdark для блога) мы говорим «Кристине» и «Бернду» о том, как создать соединение ODBC с вашей базой данных MS Access:
Создайте соединение ODBC:
Для Win7, 32 бит: перейдите в панель управления / инструменты администрирования / источники данных (ODBC)
Для Win7, 64-битный: вместо использования по умолчанию «панели управления / административные инструменты / источники данных (ODBC)» - в 64-битных версиях вы должны использовать C: \ Windows \ SysWOW64 \ odbcad32.exe!
Загрузите слой в QGIS:
Преобразовать данные XY в баллы:
источник
Хотя мне все еще интересно узнать, есть ли другие доступные варианты, я наткнулся на сообщение, в котором упоминалось, что это возможно с помощью плагина eVis .
В разделе «Подключение к базе данных» описывается, как подключиться к подключению MS Access или ODBC для создания местоположений точек XY из базы данных без создания статического снимка. Я просто набрал «select * from», и eVis открыло диалоговое окно, которое запрашивает имя слоя и поля XY.
К сожалению, похоже, что это не создает «живое» соединение с базой данных MS Access, потому что при следующем открытии проекта QGIS сбит с толку («невозможно открыть один или несколько слоев проекта»). Однако решение этой проблемы заключается в создании предопределенного XML-запроса, который может выбрать пользователь.
Так что, хотя это и не идеальное решение, это на один шаг лучше, чем экспорт в CSV. Я думаю, что в будущем было бы здорово увидеть расширение плагина с разделителями для поддержки ODBC-соединений.
источник
альтернативный подход - перенести данные в postgis. Вы можете прочитать csv-файл напрямую с помощью команды копирования postgresql. тогда вы можете создавать точки из полей XY.
затем, если вы хотите использовать некоторые отчеты или другие функции в доступе, вы можете подключиться к postgis из доступа.
выгода будет состоять в том, что вы помещаете пространственные данные, где они принадлежат, в пространственную базу данных, а затем используете odbc обратно для доступа к обработке непространственных данных, если вы по какой-то причине все еще хотите видеть свои данные в доступе.
Для postgis / postgresql есть отличные учебные пособия для доступа к соединению на postgresonline.com. руководства по импорту в postgis / postgresql вы можете найти у тех же авторов на bostongis.org
/ Никлас
источник
Существует несколько продуктов преобразования, которые могут преобразовывать данные ms-access в postgres или SQLite и обратно. Перемещение данных очень быстро с одной стороны на другую. Использование одного из этих приложений может дать вам возможность запустить QGIS на снимке данных.
источник