Введение
В настоящее время мощным инструментом для всех направлений геологических исследований, проводимых как в научных, так и в производственных целях являются современные Геоинформационные Системы (ГИС).
В связи с внедрением вычислительной техники в обработку географических данных, а также с достижениями в области космических технологий, карты и снимки теперь не только висят на стенах или покоятся под обложками атласов, но и высвечиваются на мониторах в капитанских рубках, в кабинах космических кораблей, в офисах менеджеров и в салонах современных авто.
В настоящее время геоинформационные системы перестали быть инструментом подготовки карт, который используется ограниченным кругом специалистов. Сегодня ГИС становятся одним из фрагментов универсальных информационных систем, решающих задачи сбора, накопления и анализа информации о территориально-распределенных системах. ГИС вливаются в управление городом и регионом, крупным и средним предприятием, а где-то уже используются и небольшими компаниями. Фактически это означает изменение рынка потребителей ГИС-решений, характеризующийся в неуклонном его расширении. Необходимыми условиями этого расширения являются:
1 Технологический срез
Архитектура программного обеспечения ГИС представляет собой многоуровневую структуру и формирует программный стек — набор взаимосвязанных компонент, выстраивающих различные уровни (состоят из потенциально взаимозаменяемых продуктов). Для ПО ГИС в качестве базового (операционного) слоя могут выступать как открытые (например, ОС Linux), так и проприетарные операционные системы (например, Microsoft Windows и Mac OS) и соответствующие библиотеки времени исполнения. Разделение открытого ПО ГИС на уровни свойственно открытым системам и объясняется моделью разработки, интенсивно использующей готовые, чаще всего также открытые компоненты. Реализация многих уровней в одном комбинированном продукте более характерна для проприетарных решений, не имеющих возможности заимствования чужого кода.
Существующее ПО ГИС можно условно поделить на три класса: Web-ГИС, настольные ГИС и пространственные базы данных. Уровни системного ПО в обоих случаях содержат много общих инструментов. Такое тесное переплетение в перспективе дает возможность реализации различных ГИС-функций как для Web-, так и для настольных платформ. Можно предположить, что в будущем настольные приложения будут использовать Web-сервисы, которые, в свою очередь, будут содержать функции, традиционные для настольных ГИС
2 PostgreSQL
Система управления базами данных PostgreSQL - свободная объектно-реляционная система управления базами данных (СУБД). Она существует в реализациях для множества UNIX-like платформ, включая AIX, различные BSD-системы, HP-UX, IRIX, Linux, Mac OS X, Solaris/OpenSolaris, Tru64, QNX, а также для Microsoft Windows. PostgreSQL базируется на языке SQL и поддерживает многие из возможностей стандарта SQL:2003 (ISO/IEC 9075).
PostgreSQL ведет свою историю от некоммерческой СУБД Postgres, разработанной в Калифорнийском университете в Беркли. В разработке Postgres, начавшейся в 1986 году, принимал участие Майкл Стоунбрейкер, руководитель более раннего проекта Ingres, на тот момент уже приобретённого компанией Computer Associates. Само название "Postgres" расшифровывалось как "Post Ingres", соответственно, при создании Postgres были применены многие уже ранее сделанные наработки. Стоунбрейкер и его студенты разрабатывали новую СУБД в течение восьми лет с 1986 по 1994 год. За этот период в синтаксис были введены процедуры, правила, пользовательские типы и многие другие компоненты. В 1995 году разработка снова разделилась: Стоунбрейкер использовал полученный опыт в создании коммерческой СУБД Illustra, продвигаемой его собственной одноимённой компанией, а его студенты разработали новую версию Postgres - Postgres95, в которой язык запросов POSTQUEL - наследие Ingres - был заменен на SQL. В этот момент разработка Postgres95 была выведена за пределы университета и передана команде энтузиастов. С этого момента СУБД получила имя, под которым она известна и развивается в текущий момент - PostgreSQL.
3 Организация СУБД PostgreSQL
PostgreSQL работает в качестве сервера в системе клиент-сервер. Клиент отправляет серверу запрос и получает отклик.
Сервер PostgreSQL может находится на одном компьютере с клиентом. Клиент подключается к серверу по внутреннему IP-интерфейсу обратной связи, который не виден для других компьютеров.
Для работы могут быть использованы три клиента: клиент командной строки, Quantum GIS и графический клиент базы данных — pgAdmin.
Как и любая СУБД PostgreSQL должна обслуживать запросы sql и возвращать результаты клиентским приложениям. Для этого механизм СУБД оптимизатор запросов принимает решение об оптимальном использовании ресурсов и строит план запроса. При этом он может опереться на используемых механизмы ускорения работы (индексов, кэшей в памяти, ресурсам процессора, данные статистики и т.д.).
Результаты запросов возвращаются клиентским подключениям
В Windows управляет всем файл службы pg_ctl.exe (останавливает, запускает, перезапускает).
Сам движок базы – это postgres.exe.
Оптимизатор запросов мало подвержен управлению со стороны разработчиков, поэтому к нему вернемся лишь косвенно в разделе анализа быстродействия.Зато управление дисковым пространством имеет весомое значение. Как и в любой СУБД, для баз данных PostgreSQL лучше использовать RAID 10 для баз данных и отдельный дисковый массив под логии. Применение STORAGE систем может также положительно сказаться на всем быстродействии. Еще одна фича, ускоряющая работу за счет расположения данных на разных дисках, это табличные пространства (tablespaces).
4 PostGIS
PostGIS является расширением объектно-реляционной СУБД PostgreSQL, предназначенным для хранения в базе данных географической информации. PostGIS включает поддержку пространственных индексов R-Tree/GiST, а также функции обработки геоданных. PostGIS и PostgreSQL являются свободным ПО с открытым исходным кодом.
Использование связки PostgreSQL/PostGIS предоставляет довольно широкие возможности по работе с пространственными данными:
1) Таблицы метаданных OGC: При создании пространственной базы данных автоматически создаются две таблицы метаданных - SPATIAL_REF_SYS и GEOMETRY_COLUMNS. Они создаются в соответствии со спецификацией «Open Geospatial Consortium Simple Features for SQL specification», выпущенной OGC и описывающей стандартные типы объектов ГИС, функции для манипуляции ими и набор таблиц метаданных.
2) Таблица GEOMETRY_COLUMNS хранит информацию о таблицах базы данных, содержащих пространственную информацию. Её заполнение осуществляется вручную, либо как следствие выполнения специальной процедуры OGC AddGeometryColumn().
3) Таблица SPATIAL_REF_SYS содержит числовые идентификаторы и текстовые описания систем координат, используемых в пространственной базе данных. Одним из полей этой таблицы является поле SRID – уникальный идентификатор, однозначно определяющий систему координат. SRID представляет из себя числовой код, которому соответствует некоторая система координат. Например, распространенный код EPSG 4326 соответствует географической системе координат WGS84.
5 Пространственные индексы
Индексы имеют большое значение при работе с таблицами, хранящими пространственную информацию. Их использование позволяет значительно увеличить скорость выполнения запросов . Поэтому попытаемся разобраться с тем, что они из себя представляют и как с ними работать.
Индексы в PostGIS представлены в виде R-дерева (R-Tree), реализованного как частный случай обобщенного поискового дерева (GiST). Пример R-дерева представлен на следующем рисунке:
6 Установка PostgreSQL
Скачаем дистрибутив с сайта http://www.enterprisedb.com/products-services-training/pgdownload#windows, выберите операционную систему ОС Windows . После этого запустим процесс установки.
Последовательность установки:
1. Запускаем файл postgresql-8.4.0-1-windows.exe. Вначале устанавливается Microsoft Visual
C++ 2005 Redistributable – рабочие модули библиотек Visual C++, необходимые для запуска созданных при помощи этого языка программирования приложений.
2. Выбираем куда устанавливать программу и расположение данных:
7 Установка PostGIS
Установку PostGIS можно осуществить полуавтоматически через Stack Builder и непосредственно скачав пакет PostGIS. Способы установки отличаются лишь методом получения установщика PostGIS. В первом случае Stack Builder запустится сам: «Пуск/PostgreSQL 8.4/Приложение Stack Builder».
1. Выберем установленный сервер:
8 Создание пространственной базы данных
Существует два способа создания пространственной базы данных: с использованием шаблона и без. В данном разделе мы рассмотрим оба этих способа.
Создание базы данных с использованием шаблона:
1. В меню Пуск находим PostgreSQL 3 и запускаем pgAdmin III.
2. В браузере объектов дважды щелкаем на «PostgreSQL Database Server 8.3». Будет предложено ввести пароль суперпользователя для подключения к выбранному серверу, что мы и делаем.
9 Выполнение SQL-запроса из pgAdmin III
pgAdmin III имеет возможность выполнения запросов к реляционным базам данных. Чтобы выполнить запрос, нажмите кнопку SQL на главной панели инструментов (с жёлтой лупой).
Выполним запрос об уровене синдрома внезапной детской смерти (SIDS) в 1974 году для каждого города. Кроме того, мы будем сортировать результат, основываясь на вычисленной величине. Чтобы сделать это, нам нужно выполнить следующий запрос (вставьте его в текстовый редактор в окно SQL):
sel ect name, 1000*sid74/bir74 as rate fr om sids order by rate.
После этого нажмите на зелёную кнопку со стрелкой, указывающей вправо («выполнить запрос»).
10 Типы запросов данных
Есть четыре основных типа запросов данных в SQL, которые относятся к так называемому языку манипулирования данными (Data Manipulation Language или DML):
1) SELECT – выбрать строки из таблиц;
2) INS ERT – добавить строки в таблицу;
3) UPDATE – изменить строки в таблице;
4) DELETE – удалить строки в таблице;
Каждый из этих запросов имеет различные операторы и функции, которые используются для того, чтобы произвести какие-то действия с данными.
Чтобы получить информацию, хранящуюся в базе данных используется запрос SELE CT. Базовое действие этого запроса ограничено одной таблицей, хотя существуют конструкции, обеспечивающие выборку с нескольких таблиц одновременно. Для того, чтобы получить все строки данных для специфических столбцов, используется запрос такого вида:
Заключение
PostgreSQL на данный момент является одной из самых перспективных СУБД в мире благодаря хорошей архитектуре, бесплатности, отличному сообществу и огромнейшим возможностям.
Также благодаря своим возможностям по аналитике данных и манипулированию ими, зачастую может конкурировать с признанными лидерами рынка enterprise-СУБД: Oracle и MS SQL.
Если анализировать возможностям в области хранения нереляционных данных (JSON, text search types, HStore) PostgreSQL напрямую конкурирует с NoSQL-решениями (например, MongoDB).
Связка PostgreSQL и PostGIS предназначена для загрузки данных из разрозненных источников в единый банк данных, ее возможности применимы для повседневной работы с данными ГИС. Программа позволяет загружать данные самых различных форматов, преобразовывать их и сохранять результат обратно в файлы и базы данных. Помимо специфичных функций ГИС доступны и базовые операции - алгебраические функции, фильтры , обработка текстовых строк, пользовательские скрипты на языках JavaScript и SQL, и т.п.
Учитывая что это не разовые операции, а рутинные процессы, обычно составляется цепочка действий, сохраняется и вызывается в нужный момент. Многие специалисты ГИС имеют в своем запасе несколько командных файлов (скриптов), для преобразования форматов, проекций, объединения файлов.
PostGis обладает большими возможностями и высокой производительностью, но работа со сложными схемами с вложенными задачами сильно запутана и представляет сложности при отладке с появлением неявных и плохо задокументированных ошибок.