Настроить базу данных PostGIS и открыть ее в QGIS на Windows?

14

Я пытался следовать инструкциям по настройке базы данных PostGIS, к которой должны обращаться пользователи с QGIS, но в настоящий момент я не могу понять достаточно, чтобы прогрессировать?

Моя ситуация; Я стажер, отвечающий за создание базы данных PostGIS для оцифровки зеленых объектов (например, деревьев) и выполнения запросов - например, связывание списка улиц с файлами изображений в таблице атрибутов.

У меня есть «скелеты шейп-файлов» (в настоящее время пустые, без объектов, только фрейм атрибутов », куда будут вставлены / созданы текущие и будущие объекты с географической привязкой (разные шейп-файлы для каждого типа). Надеюсь, я могу просто импортировать эти шейп-файлы скелетов в база данных?

Ситуация;

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

Настройка базы данных была выполнена администратором через удаленный доступ с использованием последних исполняемых файлов .exe PostGIS и PostgreSQL (postgresql-9.6.2-3-windows-x64 и postgis-bundle-pg96x64-setup-2.3.2 -1) для моей 64-битной машины. Администратор предоставил мне текстовый файл с информацией для входа. Руководства по обучению здесь довольно запутанные, поскольку они имеют дело с Ubuntu.

Я застрял, потому что я не знаю, где использовать регистрационную информацию, которую я записал? Я предполагаю, что мне нужно использовать pgAdmin?

ThunderSpark
источник
Вот как я устанавливаю PostGIS в Windows - в простой установке get.enterprisedb.com/docs/… тогда QGIS легко соединится с заданным вами именем пользователя и паролем.
Mapperz
1
Я бы определенно посоветовал установить pgAdmin 3 для работы с вашей базой данных. Теперь есть pgAdmin4, вы также можете установить его и посмотреть, какой из них вы предпочитаете.
Мартин Хьюги
Подождите, тогда куда же пойти в QGIS, и какие файлы я должен установить в stackbuilder? Отредактируйте nvm: нашел его сейчас, мне нужно найти записи локального хоста и службы, которые я должен сделать.
ThunderSpark
Postgis установит требуемый «сервер» локально, так работает база данных - затем вы используете QGIS для подключения «вживую» через сервер (localhost).
Mapperz

Ответы:

23

Похоже, ваш администратор успешно установил базу данных и предоставил вам необходимую информацию. Они также могли настроить PostGIS во время установки, но если нет, вы можете проверить это, выполнив эти шаги.

Сначала попросите администратора установить pgAdmin, это позволит вам получить доступ к вашей базе данных PostgreSQL через графический интерфейс.

https://www.pgadmin.org/download/windows.php

Откройте pgAdmin

Если ваш PostgreSQL был установлен;

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

введите описание изображения здесь

  • Если он был установлен в сети, вам понадобится, чтобы ваш администратор сообщил вам адрес хоста (если у вас его еще нет), тогда вам нужно перейти в File> Add Server и заполнить поля;

введите описание изображения здесь

После подключения перейдите к Edit > New Object > New Database

Дайте ему имя. Он появится в вашем списке серверов.

Дважды щелкните, чтобы подключиться к нему. Проверьте, Extensionsчтобы увидеть, если он перечисляет postgis.

Если не;

Откройте окно SQL, нажав на значок SQL

введите описание изображения здесь

и введите

CREATE EXTENSION PostGIS

Нажмите «Выполнить запрос» - этот значок введите описание изображения здесь

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

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

Или, если вы просто хотите проверить это, вы можете продолжить с ролью по умолчанию postgres.

Различные группы могут быть настроены на разные разрешения, например, администратор и пользователь. Пользовательские логины могут быть затем настроены и назначены для любой группы, соответствующей уровню разрешений, который вы хотите предоставить пользователю, или вы можете предоставить доступ ко всем таблицам для администратора, и только некоторые для пользователей и т. Д. Возможно, вам не нужна группа администраторов.

Откройте окно SQL и выполните эти запросы;

CREATE ROLE user_group_name NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
CREATE ROLE admin_group_name NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;

GRANT user_group_name TO admin_group_name

GRANT ALL ON DATABASE database_name TO admin_group_name;

Настройте логин администратора (залогиненный как postgres / superuser)

CREATE ROLE admin_name LOGIN PASSWORD 'their_password' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
GRANT admin_group_name TO admin_name;

Настройте логин пользователя (залогиненный как postgres / superuser)

CREATE ROLE user_name LOGIN PASSWORD 'their_password' NOSUPERUSER INHERIT NOCREATEDB NOCREATEROLE NOREPLICATION;
GRANT users_group_name TO user_name;

Откройте QGIS. Начать новый проект.

Нажмите на значок «Добавить слой PostGIS» на левой панели инструментов.

введите описание изображения здесь

Нажмите «Новое» подключение и введите сведения о подключении, как указано выше (если ваша база данных локальная, то хост просто localhost).

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

Нажмите Ok и закройте «Окно добавления таблицы PostGIS».

Затем перейдите к Database > DB Manager > DB Manager (В последних версиях QGIS DB Manager установлен в стандартной комплектации, в более ранних версиях вам потребуется установить плагин DB Manager)

Выберите PostGIS. Будет показана общедоступная схема по умолчанию. Звучит так, как будто вы должны создать новую схему, а не использовать общедоступную.

Схема> Создать схему - дать ей имя ( no_spaces_or_use_underscores)

После создания вы можете проверить, вернувшись к pgAdmin, отключиться, повторно подключиться. Новая схема теперь должна быть там.

Вернитесь в QGIS DB Manager, чтобы загрузить шейп-файл в таблицу базы данных.

Нажмите стрелку вниз «Импортировать слой / файл», чтобы перейти к шейп-файлу, который вы хотите импортировать. Нажмите значок `...` `, чтобы открыть обзор.

Дайте столу имя ( again_no_spaces_or_use_underscores)

Выбрать Primary key

Выбрать Geometry Column

Выберите SRIDи введите код CRS

А пока оставь все остальное и OK.

Если это большой набор данных, это может занять некоторое время, особенно через сеть / интернет

Снова вы можете вернуться к pgAdmin, нажать обновить на этот раз, и новая таблица появится в Tables.

Если вы настроили групповые роли и пользователей, вам необходимо предоставить, например, доступ к схеме;

GRANT ALL ON SCHEMA schema_name TO admin_group_name;
GRANT USAGE ON SCHEMA schema_name TO user_group_name;

Вернуться к QGIS и «Добавить слой PostGIS». На этот раз выберите Connect. Откройте схему, выделите таблицу и нажмите «Добавить», и она откроется в вашем проекте.

Мартин Хьюги
источник
Кажется, они установили PQadmin 4, я предоставляю пароль, когда программа запрашивает его, но я получаю "не удалось перевести имя хоста" postgres // * communityname123 "по адресу: неизвестная ошибка сервера". Итак, что я должен сделать здесь, имейте в виду, что я работаю с PQadmin4 и есть только один сервер PostGre SQL 9.6. Итак, я предполагаю, что это сервер PostGre QSL, который они установили, но они могли что-то сделать не так с настройкой адреса. Так я должен сообщить им здесь или я делаю что-то не так? * = датчик.
ThunderSpark
1
Попробуйте 'localhost' в качестве имени хоста, просто чтобы включить или выключить его. Затем, если нет, спросите у администратора, куда находится postgres в сети, и он сможет дать вам это. Вероятно, это просто синтаксис или что-то пропущено в адресе.
Мартин Хюги,
Спасибо, что сработало, оказалось, что они ошиблись, также изменив имя пользователя на superuser, Postgres и так далее. Я буду следовать остальной инструкции и посмотрю, работает ли она. Спасибо, Мартин.
ThunderSpark
Хорошо, Мартин, не могли бы вы добавить остальное, как создать базу данных для группы, которая работает здесь?
ThunderSpark
Быстро добавив несколько сценариев, мне пришлось дождаться перерыва на обед, поэтому немного поспешили. Они должны работать.
Мартин Хьюги,
2

Похоже, ваш проект будет достаточно работать на переносной установке postgres / postgis. Я сделал это для своих учеников некоторое время назад, чтобы они могли скопировать папку postgresl на флешку и использовать ее на каждом компьютере с Windows:

  1. Загрузите postgresql в виде zip-файла
  2. Распакуйте его
  3. Загрузите postgis (postgis-bundle-pg96-2.3.1x32.zip или x64) в соответствии с вашей системой
  4. Разархивируйте его и скопируйте в папку postgresql
  5. Используйте это объяснение, чтобы «установить» Postgres как переносную версию: http://www.postgresonline.com/journal/archives/172-Starting-PostgreSQL-in-windows-without-install.html
  6. При желании измените pg_hba.conf и добавьте / переопределите «host all all 127.0.0.1/32 trust» - это разрешает доступ с вашего компьютера к базе данных без проверки пароля, что нормально в этом случае, но в производственных средах это не нужно
  7. Подключитесь к базе данных, используя pgadmin3
  8. Создайте новую базу данных и выполните «CREATE EXTENSION postgis;»

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

MughtyWinky
источник