Установка и настройка генератора тайлов на основе OSM данных в Ubuntu или Debian. Создание расширения для базы данных. Включение расширения PostGIS

Недавно столкнулся с интересной технической задачей при работе с геоаналитикой GeoQlik . На моем проекте было необходимо интегрировать огромное количество картографических данных, которые при этом постоянно обновлялись.

Решать задачу с помощью постоянной перезаливки данных на сервер GeoQlik, естественно, нерационально. А если серверов несколько, то сложность задачи растет экспоненциально. Сегодня расскажу, как можно быстро справиться с такой задачей. А именно – как поднять небольшой картографический сервер на базе PostgreSQL и PostGIS для его последующего использования сервером GeoQlik.

PostgreSQL: установка

PostGIS: установка

Установку PostGIS можно осуществить полуавтоматически через Stack Builder и непосредственно скачав пакет PostGIS. Способы установки отличаются лишь методом получения установщика PostGIS. В первом случае Stack Builder запустится сам: «Пуск/PostgreSQL 8.4/Приложение Stack Builder». Рассмотрим подробнее именно этот вариант:


Если вы решили скачать установщик PostGIS самостоятельно, то последнюю версию PostGIS можно скачать на сайте.

Ход установки:


«Create spatial database» позволяет создать пространственную базу данных автоматически. Далее мы будем рассматривать процесс создания такой базы данных вручную, не прибегая к услугам установщика PostGIS, поэтому здесь мы отметку с этого пункта снимем.


Жмем «Next» для завершения установки. На этом установка PostGIS завершена!

PostGIS: настройка базы данных


Процесс создания пространственной базы данных без использования шаблона окончен. Таким образом, на данный момент времени мы имеем пространственную базу данных «postgis», готовую к наполнению данными.

PostGIS: наполнение базы данных

Чтобы наполнить базу данных нужно использовать утилиту PostGIS 2.0 Shapefile and DBF Loader Exporter (она установилась вместе с расширением Postgis, которое мы ставили через Stack Builder)

В нашем случае необходимо было экспортировать данные с сервера gis-lab.info, и залить их на наш сервер.

Экспорт

  1. Запускаем утилиту PostGIS 0 Shapefile and DBF Loader Exporter (ее можно найти в пуске) и выбираем вкладку Export
  2. Нажимаем кнопку ‘View connection details…’ и вводим реквизиты сервера
    gis-lab.info
  3. Нажимаем “ОК”, и видим, что подключение было успешным.
  4. Далее нажимаем кнопку “Add table” и выбираем в всплывающем окне перечень таблиц для экспорта (в нашем случае это ru_adm3_federal и ru_adm4_region).
  5. Нажимаем “ОК”, теперь они отображаются в основном окне утилиты, далее нажимаем на кнопку “Export”.
  6. Выбираем путь, следим, чтобы выгрузка производилась в формате “.shp” (шейп-файлы):
  7. Появляется статус-бар, ждем окончания.
  8. Все выгрузилось успешно!

Теперь нужно проверить результат.


Вот и все! Задача выполнена, можно приступать к настройке отчетов в GeoQlik.

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

Успехов Вам в геоаналитике!

Материал из WiKi - UserSide

Локаль

Убедитесь, что в Вашей системе установлена локаль, которая будет использоваться в базе данных. Например, ru_RU.utf8

Выполните команду locale , чтобы посмотреть, какая локаль установлена в системе по умолчанию. Если Вы планируете в базе данных использовать локаль отличную от системной, то убедитесь, что она добавлена в систему, выполнив команду locale -a . В конечном итоге важно, чтобы в списке локалей, выводимом последней командой, была та локаль, которую необходимо использовать в базе данных.

Если выполнив locale вы убедились в том, что установлена корректная локаль, которую планируется использовать в базе данных, то переходите к разделу установки.

Если Вы планируете использовать локаль базы данных такую же как установлена в системе по умолчанию, и Вам необходимо изменить для этого системную локаль. Для этого выполните команду sudo dpkg-reconfigure locales и выберите необходимую локаль, после чего убедитесь, что она установилась в системе по умолчанию locale .

Если Вы планируете использовать локаль базы данных отличную от системной и ее нет в списке установленных локалей, то добавьте название локали в файл sudo nano /etc/locale.gen (либо просто расскоменитруйте нужную строку). После чего сохраните файл и выполните команду sudo locale-gen . Убедитесь, что необходимая локаль была добавлена, выполнив команду locale -a .

Установка PostgreSQL

Официальная инструкция по добавлению репозитория и установке под разные системы доступна по адресу https://www.postgresql.org/download/

Здесь же описана инструкция установки для Debian-подобных Linux-дистрибутивов.

В стандартном репозитории Debian находится старая версия PostgreSQL. Чтобы иметь возможность установить новую версию, необходимо добавить официальный репозиторий PostgreSQL. Выполните:

Wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo add-apt-repository "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -sc)-pgdg main" sudo apt-get update sudo apt-get install postgresql-10

На этом установка завершена.

Настройка PostgreSQL

Для настройки используются несколько конфигурационных файлов, расположенных в каталоге /etc/postgresql/10/main

Указанная ниже настройка двух файлов postgresql.conf и pg_hba.conf необходима только в том случае, если USERSIDE и СУБД PostgreSQL находятся на разных узлах!

Если СУБД и USERSIDE находятся на одном и том же узле, перейдите сразу к следующему разделу создания пользователя и базы данных.

postgresql.conf

Файл содержит настройки сервера PostgreSQL.

  1. Откройте файл sudo nano /etc/postgresql/10/main/postgresql.conf
  2. Найдите блок настроек CONNECTIONS AND AUTHENTICATION
  3. Раскомментируйте параметр listen_addresses и установите в качестве значения один или несколько IP адресов, разделенных запятыми, на которых сервер принимает подключения от клиентов. Допускается использование символа звездочки.

Подробней можно прочитать в официальной документации: https://postgrespro.ru/docs/postgresql/10/runtime-config-connection.html

После чего перезапустите сервер sudo service postgresql restart

pg_hba.conf

Файл содержит настройки аутентификации пользователей по именам узлов. Формат файла представляет набор записей, по одной в строке, состоящих из нескольких полей, разделенных между собой пробелами. Подробно о настройке данного файла можно прочитать по ссылке: https://postgrespro.ru/docs/postgrespro/10/auth-pg-hba-conf.html

  1. Откройте файл sudo nano /etc/postgresql/10/main/pg_hba.conf
  2. Добавьте в самый низ строку, разрешающую доступ (укажите IP-адрес узла, на котором установлен USERSIDE)

host userside all IP-адрес-userside md5

После чего перечитайте конфигурацию командой sudo service postgresql reload

Тонкая настройка

Мы рекомендуем произвести тонкую настройку СУБД PostgreSQL, которая зависит от ресурсов вашего сервера. Так как параметры должны быть подобраны индивидуально в каждом случае, мы намеренно не публикуем их рекомендуемые значения здесь.

Ознакомиться с методикой настройки СУБД можно по следующим ссылкам:

Инструменты для настройки:

Правильная настройка может существенно увеличить производительность СУБД, однако будьте крайне внимательны.

Создание пользователя и базы данных

В терминологии PostgreSQL "пользователь" - это роль СУБД, имеющая разрешение LOGIN (подключения к БД). В данной инструкции вместо использования SQL запросов будет предложено воспользоваться консольными командами.

Для того, чтобы создать пользователя, выполните следующую команду (здесь userside - имя пользователя БД):

Sudo -u postgres createuser userside -P

Система запросит пароль создаваемого пользователя, который необходимо ввести дважды.

Теперь создайте базу данных. Создается база данных userside, владельцем которой становится пользователь userside

Sudo -u postgres createdb -e -E "UTF-8" -l "ru_RU.UTF-8" -O userside -T template0 userside

Включение расширения PostGIS

Расширение необходимо для обработки геометрических типов данных, которыми являются объекты на карте.

Сначала необходимо установить расширение PostGIS http://postgis.net/install/

Установка в Debian

В Debian-подобных дистрибутивах для этого выполните команду

Sudo apt-get install postgis

Установка в FreeBSD

В FreeBSD есть порт /usr/ports/databases/postgis

После установки нужно перейти в папку

Cd /usr/local/share/postgresql/contrib/postgis-*

и выполнить там:

Sudo -u postgres psql -f "postgis.sql" sudo -u postgres psql -f "spatial_ref_sys.sql"

Создание расширения для базы данных

После того, как PostGIS установлен, необходимо включить его для базы данных userside следующим образом:

Sudo -u postgres psql -d userside -c "CREATE EXTENSION postgis"

Расширение установлено и подключено к базе данных userside.

Обновление расширения postgis

Обратите пожалуйста внимание на то, что если Вы обновите системный компонент Postgis, Вам также нужно будет обновить и само расширение внутри базы данных следующим образом:

Sudo -u postgres psql -d userside -c "ALTER EXTENSION postgis UPDATE"

FAQ

Возникает ошибка: Sudo: add-apt-repository: command not found.

Решение: sudo apt-get install software-properties-common

Возникает ошибка: не удалось открыть управляющий файл расширения "/usr/share/postgresql/10/extension/postgis.control"

Решение: Установите следующие компоненты:

Sudo apt install postgresql-10-postgis-2.4 postgresql-10-postgis-2.4-scripts

Делали в универе командный курсовик и нужно было использовать PostGIS. Дело в том, что курсовик был взят не из списка стандартных заданий, а являлся частью одного разрабатываемого мной проекта. Так как курсовик командный, то не удивительно, что у членов команды ОС отличались. Я, конечно, не говорю, что в случае командной работы у всех должны быть разные ОС, но в нашем случае вышло именно так. В конечный список ОС попали следующие: Windows XP, Windows 7, Ubuntu и LinuxMint. Принципиальных различий в процессе установки нет. Что XP - винда, что семерка - винда. Что Ubuntu - GNU/Linux, что LinuxMint - GNU/Linux, еще и основанная на Ubuntu. И там, и там можно ставить как с бинарников, так и с исходников. К тому же в unix-подобных системах есть репозитории. В процессе работы я еще мучил с десяток дистрибутивов GNU/Linux в ознакомительных целях и как-то решил поставить PostGIS на Mandriva. Не помню почему, но почему-то пришлось повозиться несколько дольше, чем при работе с другими дистрибутивами. Исходя из этого писать про Mandriva не буду. Хотел еще поставить на Gentoo и написать об этом, но пока что совсем нет времени колупаться с ней.
Итак, заканчивая лирическое вступление, скажу, в каких ОС будет рассмотрена установка PostGIS:


Windows XP

С виндой дела обстоят достаточно просто. Скачиваем 2 бинарника и запускаем их по очереди. Первый бинарник - это сам сервер постгрес. Его можно скачать на официальном сайте . Второй бинарник - это, как подсказывает Капитан Очевидность, сама примочка PostGIS. Её можно взять . В случае с виндой разработчики PostgreSQL всё сделали на удивление хорошо. Устанавливая сам сервер, Вам еще прикрутят PgAdmin, дадут каких-то пряников и сверху положат StackBuilder. Эта штука позволяет не рыться в недрах интернета и не искать всякие другие штуки, типа PostGIS и Slony-I. Так что, возможно, Вы захотите скачать только инсталлятор сервера, а дальше заставить StackBuilder делать своё грязное дело. Вам так же никто не запрещал устанавливать всё из исходников:).
О том, как всё это дело установить, разработчики уже написали и, как в детской книжке, все проиллюстрировали. Посмотреть на это можно прямо . Единственное, что хочу заметить, так это то, что в процессе установки PostGIS галочку "Create spatial database" лучше не снимать, если Вам нравится, когда кто-то за Вас делает какую-то работу. Лично мне нравится, когда инсталлятор устанавливает за меня необходимые функции и прочее, а потом еще и делает шаблон, на основании которого можно в будущем создавать базы данных двумя-тремя щелчками мыши.
Следует заметить, что установщик содержит версию 1.5 PostGIS (или свежее). Если после его установки необходимо обеспечить поддержку баз данных с более ранними версиями PostGIS, то скачать отсюда бинарники (архив) и добавить содежимое каталогов "lib" и "share" в одноимённые каталоги Postgres (например, C:\Program Files\PostgreSQL\8.4\)


Ubuntu 11.04
В убунте далеко ходить не надо. Открыли терминал, ввели указанные ниже команды и получили то, что нам нужно, а именно: сервер, клиент, библиотеки, документацию, постгис, графическое приложение для администрирования.
sudo apt-get install postgresql-8.4 postgresql-client-8.4 postgresql-contrib-8.4 postgresql-doc-8.4 postgresql-8.4-postgis sudo apt-get install pgadmin3 Как видно из команд, версия сервера у нас выйдет 8.4. Если быть точнее, то выполнив sql-запрос
SELECT version(); в моём случае версия определилась как 8.4.8.
Дальше необходимо настроить сам сервер БД. Не желая заниматься копипастом, просто приведу ниже пару ссылок, где об этом написано вполне доходчиво.
  1. Англоязычная статья на hocuspokus.net .
  2. Её русскоязычный перевод с примечаниями на welinux.ru .

Кое-что хочу добавить от себя. Во-первых, прописывая пути каталогов, будьте внимательны к версии сервера (у Вас же необязательно версия 8.3, как в примере)
Во-вторых, в файле "pg_hba.conf" строка
# Database administrative login by UNIX sockets local all postgres ident sameuser не понравилась серверу и пришлось заменить её на эту:
local all postgres md5 Это то, что касалось установки и настройки самого сервера.

Теперь нужно настроить PostGIS (вернее даже не настроить, а прикрутить к серверу).
Создадим новый шаблон и зарегистрируем диалект на сервере:
sudo su postgres createdb postgistemplate createlang plpgsql postgistemplate При этом нас попросят ввести пароль пользователя.
Далее необходимо наполнить шаблон функциями и информацией о типах данных.
psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-1.5/postgis.sql psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-1.5/spatial_ref_sys.sql psql -d postgistemplate -f /usr/share/postgresql/8.4/contrib/postgis-comments.sql Хочу заметить, что расположение скриптов может несколько отличаться, но обычно не больее, чем на 1-2 ветки. Теперь осталось перезапустить сервер и можно приступать к работе. Для наглядности создадим через pgAdmin новый сервер. Пример того, что получилось, представлен на рисунке ниже. Как видно, присутствуют два шаблона: postgres и созданный нами postgistemplate.

Сейчас мы с Вами рассмотрим процесс установки новой версии СУБД PostgreSQL 9.5 на операционную систему Windows 7 , а также узнаем, что нового появилось в этой версии и где ее можно скачать.

07.01.2016 года вышла новая версия СУБД PostgreSQL, а именно PostgreSQL 9.5 , но прежде чем приступать к рассмотрению новых возможностей предлагаю вспомнить, что вообще такое PostgreSQL, а потом уже перейти к установке и обзору новой версии.

Что такое PostgreSQL?

PostgreSQL - это бесплатная и популярная во всем мире объектно-реляционная система управления базами данных (СУБД). PostgreSQL реализована для многих операционных систем, например, таких как: Linux, Solaris, Windows. В ней используется процедурное расширение языка SQL PL/pgSQL.

Что нового в PostgreSQL 9.5?

В данной версии появилось достаточно много новых возможностей, которые будут очень полезны для разработчиков, вот некоторые из них:

  • INSERT, ON CONFLICT UPDATE (UPSERT) – данная возможность позволяет обработать ситуацию, когда осуществить добавления данных через INSERT нельзя, например, из-за нарушения уникальности или недопустимости значения в одном из полей. Другими словами, вместо того чтобы выдавать ошибку можно просто пропустить выполнение оператора, т.е. ничего не делать или изменить связанные с ключевым полем данные, т.е. в случае, когда запись уже существует, вместо INSERT выполнить UPDATE;
  • ROLLUP, CUBE и GROUPING SETS – эти операторы расширяют возможности GROUP BY, а именно позволяют формировать отчеты, т.е. писать запросы, в которых можно добавлять строки с промежуточным и общим итогом, а также объединять результаты нескольких группировок в один набор данных. В Microsoft SQL Server аналогичные операторы существуют уже достаточно давно, и мы с Вами их подробно рассматривали вот в этом материале ;
  • Row-Level Security (RLS) – это так называемая «Политика безопасности на уровне строк » т.е. теперь можно ограничивать доступ к данным в таблице;
  • BRIN-индексы – это новый тип индексов, который предназначен для обработки очень больших таблиц, в которых определенные столбцы естественным образом отсортированы;
  • Ускоренная сортировка – в PostgreSQL 9.5 при сортировке теперь используется так называемый алгоритм «сокращенных ключей », который позволяет в несколько раз быстрей сортировать текстовые данные и данные типа NUMERIC.

Более подробно обо всех нововведениях в PostgreSQL 9.5 можете посмотреть на странице в «PostgreSQL Wiki » вот она What"s new in PostgreSQL 9.5 .

Где скачать PostgreSQL 9.5 для Windows 7?

После того как Вы перешли на страницу необходимо нажать «Download »

Затем Вас перенаправят на страницу выбора версии PostgreSQL, в нашем случае мы в разделе «Version 9.5.0 » выбираем «Win x86-32 » для 32 разрядной Windows или «Win x86-64 » для 64 разрядной. У меня 32 разрядная Windows 7, поэтому я и щелкаю по кнопке «Win x86-32».

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

Установка PostgreSQL 9.5 на Windows 7

Итак, давайте перейдем к установке PostgreSQL 9.5, мы, кстати, с Вами ранее уже рассматривали установку PostgreSQL, например, для начинающих я показывал, как можно установить PostgreSQL на Linux OpenSUSE 13.2 , а в материале «Установка PostgreSQL 9.4 на CentOS 7.1 » мы разбирали, как можно реализовать так называемый сервер СУБД с использованием PostgreSQL и операционной системы Linux на примере дистрибутива CentOS 7.1. Установку PostgreSQL на операционную систему Windows мы не рассматривали, поэтому сегодня мы и будем устанавливать PostgreSQL 9.5 на Windows 7.

Шаг 1

Запускаем скаченный файл (postgresql-9.5.0-1-windows.exe ). В итоге запустится программа установки и первое окно это окно «Приветствия », жмем «Next ».

Шаг 2

В следующем окне мы указываем каталог, в который необходимо установить PostgreSQL, я оставлю по умолчанию (т.е. на диск C ), жмем «Next ».

Шаг 3

Далее указываем каталог, в котором по умолчанию будут располагаться файлы баз данных. Другими словами здесь при установке Вы можете изменить директорию для хранения файлов баз данных, это может потребоваться в тех случаях, когда количество баз данных будет большое или их размер, т.е. объем будет значительным, как Вы понимаете в этих случаях лучше указать отдельный диск достаточного объема. В моем случае это тестовая установка, поэтому я оставлю по умолчанию, жмем «Next ».

Шаг 4

Затем придумываем, вводим и запоминаем пароль для пользователя postgres (необходимо вводить один и тот же пароль в два поля, для подтверждения ), именно этот пользователь является своего рода «Суперпользователем » т.е. главным администратором, жмем «Next ».

Шаг 5

Шаг 6

Потом указываем Locale (данный параметр определяет кодировку данных в базе ), если оставить по умолчанию, то кодировка данных в базах данных будет UTF-8, но если Вам необходимо чтобы кодировка была другая допустим Windows-1251, то необходимо выбрать «Russia, Russia », я оставлю по умолчанию, т.е. «Default locale », жмем «Next ».

Шаг 7

Все готово для установки, жмем «Next ».

Установка началась, процесс будет длиться буквально пару минут.

Шаг 8

Установка будет завершена и на последнем окне нам предложат запустить инструмент (Stack Builder ) для установки дополнительных компонентов PostgreSQL, если Вы не хотите ничего дополнительного устанавливать, необходимо снять соответствующую галочку, жмем «Finish ».

Запускаем pgAdmin и проверяем работу PostgreSQL 9.5

В состав инсталлятора PostgreSQL 9.5 включен pgAdmin 1.22.0, т.е. дополнительно, отдельно устанавливать pgAdmin на компьютер, на который Вы устанавливаете PostgreSQL 9.5, не нужно.

Если кто не знает pgAdmin это специальная графическая среда программирования и администрирования для СУБД PostgreSQL.

Для того чтобы запустить pgAdmin нажимаем «Пуск ->Все программы ->PostgreSQL 9.5 ->pgAdmin III »

У нас уже будет отображен локальный сервер мы к нему и должны подключиться, щелкаем двойным кликом по «PostgreSQL 9.5 (localhost:5432) ».

Затем необходимо ввести пароль, который мы придумали, когда устанавливали PostgreSQL 9.5 (чтобы не вводить пароль каждый раз можете поставить галочку «Сохранять пароль» ). Жмем «ОК ».

Если галочку «Сохранять пароль » Вы поставили, то далее появится окно с предупреждением того, что сохранение паролей небезопасно, так как пароль будет храниться в виде простого текста в файле pgpass.conf который расположен в директории профиля пользователя Windows. Жмем «ОК ».

Чтобы посмотреть на версию PostgreSQL, давайте напишем простой SQL запрос в базе данных, которая создается по умолчанию, т.е. в postgres.

На этом у меня все, удачи!



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: