Страница 1 из 1

Подключение к объектам БД информации из Интернета

Добавлено: 27 окт 2010, 13:13
Evgenia
Здравствуйте, коллеги
Подскажите, пожалуйста, существует ли возможность подключить к объектам базы данных (географической/объектно-реляционной, конечно) текстовую (атрибутивную) информацию, выкладываемую и периодически обновляемую в Интернете. Т.е. хочется получить такой динамический слой объектов, у которых при подключении к сети Интернет будут в режиме реального времени меняться атрибуты.
Это лишь часть от основного проекта, который предполагается собирать в QGIS. Подскажите, пожалуйста, в каком направлении стоит двигаться для решения моего вопроса? Возможно, тут нужен PostGIS, а QGIS самостоятельно с этим не "справится"? И вообще, возможно ли это?.. :wink:

Re: Подключение к объектам БД информации из Интернета

Добавлено: 27 окт 2010, 13:59
gamm
Evgenia писал(а):Здравствуйте, коллеги
Подскажите, пожалуйста, существует ли возможность подключить к объектам базы данных (географической/объектно-реляционной, конечно) текстовую (атрибутивную) информацию, выкладываемую и периодически обновляемую в Интернете. Т.е. хочется получить такой динамический слой объектов, у которых при подключении к сети Интернет будут в режиме реального времени меняться атрибуты.
Это лишь часть от основного проекта, который предполагается собирать в QGIS. Подскажите, пожалуйста, в каком направлении стоит двигаться для решения моего вопроса? Возможно, тут нужен PostGIS, а QGIS самостоятельно с этим не "справится"? И вообще, возможно ли это?.. :wink:
информацию об изменении Вы можете получить только опросив соотвествующий сайт. Тогда придется написать "демона", который 1 раз в минуту (или раз в час, или при старте QGIS) будет опрашивать сайт, и считывать информацию в локальную базу, а потом давать команду на перерисовку.

Сделать это можно, но скорее всего придется встраивать "демона" (или обработчик его сигналов) в код QGIS - я не знаю, есть ли в нем обработка внешних сигналов или запуск по таймеру (что-то типа "тикеров", под Уиндовс скорее всего нет, под UNIX это сделать проще). Если "тикер" есть , то просто сажаете на него код на питоне, который опрашивает сайт и перерисовывает.

Re: Подключение к объектам БД информации из Интернета

Добавлено: 27 окт 2010, 14:40
Mavka
Как вариант - мини-сервер WFS.

Re: Подключение к объектам БД информации из Интернета

Добавлено: 27 окт 2010, 14:49
Evgenia
Mavka писал(а):Прямо любую информацию?
Инфо представлена в .csv формате. Представляет из себя числа, которые являются атрибутами объектов.

Re: Подключение к объектам БД информации из Интернета

Добавлено: 27 окт 2010, 15:14
Mavka
А вот такое некоторые ГИСы умеют делать сами (про qgis не знаю).
Выглядит так:
1. Загружается слой с объектами (в нем есть геометрия)
2. Загружается слой с данными (он не имеет преставления на карте)
3. Делается запрос на объединение двух массивов данных по общему ключу (одинаковые номера и т.п.)
4. Результат выводится на карту.

Стоит подождать, может и подскажут в какой свободной ГИС такое есть в наличии.

Re: Подключение к объектам БД информации из Интернета

Добавлено: 27 окт 2010, 15:17
Voltron
Можно создать расширение, которое с определенным интервалом будет загружать данные с сайта и либо обновлять существующую таблицу атрибутов, либо создавать шейп и добавлять его на карту вместо существующего.

Re: Подключение к объектам БД информации из Интернета

Добавлено: 27 окт 2010, 15:21
Mavka
А как вам такой вариант.

Ваши данные лежат в PostGIS (таблица #1).
Из интернета регулярно скрипт загружает CSV и импортирует его в PostGIS (таблица #2).
Делаем вид (view), в котором объединяем две таблицы.
Из qgis смотрим на этот вид.

Просто, надежно и достаточно оперативно.

Re: Подключение к объектам БД информации из Интернета

Добавлено: 27 окт 2010, 15:35
Evgenia
Mavka писал(а):А как вам такой вариант.
Про такой вариант я тоже думала, когда писала про PostGIS. Моя сложность в том, что я с PostGIS еще не работала, только читала кое-что и пока плохо представляю, как соорудить такое:
Mavka писал(а):интернета регулярно скрипт


Если это действительно самый простой, надежный и при том оперативный способ, то, очевидно, следует заняться его изучением =)) Но вдруг, все-таки существует другая хорошая альтернатива?..
Voltron писал(а):Можно создать расширение
Можно поподробнее про это расширение, пожалуйста? В какой БД/СУБД при этом должны храниться данные? Да, данные - точечные. Я как-то не конкретизировала это раньше. Но, теоретически, это не должно быть важно.

Re: Подключение к объектам БД информации из Интернета

Добавлено: 27 окт 2010, 15:59
Mavka
  1. с помощью cURL скачиваем файл csv по интернет-ссылке
  2. sql-командой COPY из файла CSV загружаем в таблицу данные (предварительно ее создав/очистив?) [пример]
  3. пишем bat-файл, который сам выполняет эти два шага, и прописываем его в стандартный "планировщик задач windows"

Re: Подключение к объектам БД информации из Интернета

Добавлено: 27 окт 2010, 16:04
Voltron
Данные можно хранить в SpatiaLite/PostGIS. Фактически это будет то же самое, что предлагает Mavka, только в виде расширения QGIS

Re: Подключение к объектам БД информации из Интернета

Добавлено: 28 окт 2010, 18:56
Evgenia
toVoltron: Поясните, пожалуйста, что значит расширение QGIS?

Re: Подключение к объектам БД информации из Интернета

Добавлено: 28 окт 2010, 19:01
Александр Мурый
Я думаю, Voltron имел в виду модули QGIS, они же расширения или дополнения. В данном случае, это PostGIS или SpatiaLite.

Re: Подключение к объектам БД информации из Интернета

Добавлено: 29 окт 2010, 10:25
Voltron
Расширение (модуль, плагин, дополнение) - небольшая программа на Python или С++, которая добавляет функционал в QGIS. Например, fTools (инструменты из меню Вектор), GdalTools (инструменты из меню Раст) это расширения. Statist, RasterCalc, Qgis2Google, georeferencer - тоже расширения.

PostGIS или SpatiaLite - тоже расширения, но у них другая специализация - поддержка определенных форматов данных. Такие расширения обычно называются провайдерами или поставщиками данных.

В контексте этой темы я под расширением подразумевал именно программу, которая будет с некоторым интервалом загружать данные и обновлять таблицу.

Re: Подключение к объектам БД информации из Интернета

Добавлено: 29 окт 2010, 10:37
Evgenia
Спасибо за ответы =).
Т.е. правильно ли я поняла предлагаемую схему: данные хранятся в PostGIS (или SpatialLite(?)) и существует программа (надо написать на Python или С++), которая загружает и изменяет в PostGIS /SpatialLite данные из сети через определенные промежутки времени. А со стороны пользователя это выглядит так, что он просто подгружает слой PostGIS и радуется регулярно обновляемым данным (т.е. сам при этом больше ничего не делает). И сразу вопрос, а нельзя ли запросами из PostGIS, например, реализовать то же, минуя Python и C++?

Re: Подключение к объектам БД информации из Интернета

Добавлено: 29 окт 2010, 12:28
Voltron
Evgenia писал(а):Т.е. правильно ли я поняла предлагаемую схему: данные хранятся в PostGIS (или SpatialLite(?)) и существует программа (надо написать на Python или С++), которая загружает и изменяет в PostGIS /SpatialLite данные из сети через определенные промежутки времени. А со стороны пользователя это выглядит так, что он просто подгружает слой PostGIS и радуется регулярно обновляемым данным (т.е. сам при этом больше ничего не делает).
Генеральная задумка именно такая. Но, насколько плавным и быстрым будет процесс загрузки и обновления зависит от нескольких факторов: объема данных, скорости соединения... Так что, пользователю, возможно, придется не только радоваться, но и беситься из-за фризов.
Evgenia писал(а):И сразу вопрос, а нельзя ли запросами из PostGIS, например, реализовать то же, минуя Python и C++?
Можно. Выше Mavka как раз предлагал такой вариант. Там не используется Python/C++, но нужен командный файл, который будет выполнять скачивание ваших данных на локальную машину и последующую их загрузку в базу PostGIS