PostGIS vs. ArcSDE: Настрока PostGIS

Прежде чем переходить к собственно тестированию опишу процесс настройки связки PostgreSQL + PostGIS + WKT Raster. Так как PostgreSQL компилировался из исходников, то все работу, которую обычно делает установщик (создание пользователя, инициализация кластера и т. д.), нужно проделать вручную. Процесс компиляции всех компонентов описан в предыдущем посте.

В дальнейшем я буду исходить из того, что используется ОС Windows XP Pro, PostgreSQL, GEOS, Proj, PostGIS и WKT Raster уже скомпилированы, и все это добро лежит в с:\postgres. Поехали!

Сразу же, чтобы упростить себе жизнь, добавляем к переменной окружения PATH каталог c:\postgres\bin.

Потом копируем все dll из папки c:\postgres\lib в папку c:\postgres\bin.

Далее создаем пользователя, от имени которого будет выполняться служба сервера БД. Идем в «Управление компьютером → Локальные пользователи и группы → Пользователи», создаем пользователя postgres и задаем ему пароль.

Почти все дальнейшие действия выполняются из командной строки Windows.

Создаем каталог для кластера БД, в моем случае это f:\pgdata. Здесь есть один момент, о котором нужно помнить: в процессе создания кластера, программа initdb попытается изменить права доступа к этому каталогу. Если каталог создавался не от имени пользователя postgres — получим сообщение о нехватке прав. Выходов два:

  • создавать каталог от имени пользователя postgres
    runas /user:postgres "mkdir f:\pgdata"
  • создать каталог под любой учетной записью, и потом вызвав по правому клику контектсное меню, на вкладке «Безопасность» («простой» общий доступ должен быть выключен) добавить пользователя postgres и дать ему полный доступ.

Собственно инициализация кластера БД (дефолтная кодировка cp1251)

runas /user:postgres "c:\postgres\bin\initdb.exe -E WIN1251 -D f:\pgdata"

Теперь запускаем сервер

runas /user:postgres "c:\postgres\bin\postmaster.exe -D f:\pgdata"

или

runas /user:postgres "c:\postgres\bin\pg_ctl.exe start -D f:\pgdata"

Если запуск прошел успешно, можно (нужно) заставить PostgreSQL стартовать в качестве службы. Сначала останавливаем запущенный сервер

runas /user:postgres "c:\postgres\bin\pg_ctl.exe stop -D f:\pgdata"

и регистрируем в системе нашу службу

pg_ctl.exe register -N "PostgreSQL 8.3.7" -U postgres -D f:\pgdata

Идем в «Управление компьютером → Службы и приложения → Службы», открываем свойства только что созданной службы и на вкладке «Вход в систему» вписываем пароль для юзера postgres. После нажатия на кнопку «Применить», мы должны получить сообщение о том, что пользователю postgres разрешен вход в качестве службы. Стартуем службу и идем дальше.

Кластер создан, создаем базу (ВНИМАНИЕ! Сервер должен быть запущен!).

createdb -U postgres postgis

Здесь postgis — название новой БД. Далее необходимо добавить в нашу базу поддержку пространственных данных, другими словами, именно сейчас мы подключим расширение PostGIS. Прежде всего, необходимо добавить поддержку языка PL/PgSQL:

createlang plpgsql -U postgres postgis

после этого загружаем расширения PostGIS:

psql -а c:\postgres\share\contrib\postgis.sql -U postgres -d postgis

и данные о системах координат и проекциях

psql -а c:\postgres\share\contrib\spatial_ref_sys.sql -U postgres -d postgis

Следующий шаг — подключение WKTRaster, ничуть не сложнее

psql -а c:\postgres\share\contrib\rtpostgis.sql -U postgres -d postgis

И, наконец, последний штрих — необходимо создать таблицу для хранения метаданных так называемых overview (уменьшенные копии исходного изображения, используются для более быстрого масштабирования и отрисовки). Эта таблица является частью спецификации WKT Raster, но автоматом не создается. Желающие могут ознакомиться с подробностями здесь и здесь.

Собственно табличка

CREATE TABLE raster_overviews (
  o_table_catalog character varying(256) NOT NULL,
  o_table_schema character varying(256) NOT NULL,
  o_table_name character varying(256) NOT NULL,
  o_column character varying(256) NOT NULL,
  r_table_catalog character varying(256) NOT NULL,
  r_table_schema character varying(256) NOT NULL,
  r_table_name character varying(256) NOT NULL,
  r_column character varying(256) NOT NULL,
  out_db boolean NOT NULL,
  overview_factor integer NOT NULL,
  CONSTRAINT raster_overviews_pk
  PRIMARY KEY (o_table_catalog, o_table_schema, o_table_name, o_column))

У меня этот код был записан в файл, поэтому загрузка выглядит так

psql -f d:\install\wktraster\overviews.sql -U postgres -d postgis

На этом настройка окончена, можно приступать к загрузке данных.

Осталось сказать, что при подготовке поста использовались справочные руководства по PostgreSQL, PostGIS и WKT Raster а также некоторые материалы из блога Матеуша.

Мітки: ,

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

*