设置PostGIS数据库并在Windows的QGIS中打开它?


15

我试图遵循手册来设置PostGIS数据库,以供QGIS用户访问,但是目前我还不了解需要什么进展?

我的情况; 我是一名实习生,负责创建PostGIS数据库以对绿色对象(例如树木)进行数字化并运行查询-例如将街道列表与图像文件链接到属性表。

我有“ shapefile骨架”(当前为空,没有对象,只有属性框),其中将粘贴/创建当前和将来的地理参考对象(每种类型使用不同的shapefile)。我相信我可以将这些骨架shapefile导入数据库?

情况;

我们在单独的大楼中工作,我们拥有自己的LAN和Internet连接,并且每个文件都有一个备份服务器。因此,我们可以访问本地文件,并可以通过Internet连接共享文件

管理员已通过远程访问使用PostGIS和PostgreSQL的最新.exe执行文件(postgresql-9.6.2-3-windows-x64和postgis-bundle-pg96x64-setup-2.3.2)来完成数据库的设置。 -1)用于我的64位计算机。管理员为我提供了一个包含登录信息的文本文件。这里的培训手册非常令人困惑,因为它们涉及Ubuntu。

我被卡住了,因为我不知道在哪里使用我写下的登录信息?我假设我需要使用pgAdmin?


这就是我在Windows上安装PostGIS的方式-通过简单的安装get.enterprisedb.com/docs/…,然后QGIS将使用您设置的用户名和密码轻松连接。
Mapperz

1
我绝对建议安装pgAdmin 3以与您的数据库一起使用。现在有一个pgAdmin4,您也可以同时安装它,看看您喜欢哪一个。
MartinHügi'17

等一下,然后在QGIS中去哪里,应该在stackbuilder中安装哪些文件?编辑nvm:现在找到它,我需要找到我必须输入的本地主机和服务条目。
ThunderSpark

Postgis将在本地安装所需的“服务器”,这是数据库的工作方式-然后,您使用QGIS通过服务器(本地主机)连接“实时”。
Mapperz

Answers:


24

听起来好像您的管理员已成功安装数据库并为您提供了所需的详细信息。他们也可能在安装过​​程中也配置了PostGIS,但如果没有配置,则可以按照以下步骤进行检查。

首先,请管理员安装pgAdmin,这将允许您使用图形界面访问PostgreSQL数据库。

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

打开pgAdmin

如果您的PostgreSQL已经安装;

  • 在您的计算机上,它将显示为localhost,您应该能够双击“ PostgreSQL(版本号)(localhost:5432)”以连接到它。

在此处输入图片说明

  • 如果已经在网络上安装了该主机,则需要管理员告知主机地址(如果尚未知道),则需要转到“文件”>“添加服务器”并填写字段;

在此处输入图片说明

连接后,转到 Edit > New Object > New Database

给它起个名字。它会出现在您的服务器列表中。

双击以连接到它。检查中Extensions是否列出了postgis

如果不;

通过单击SQL图标打开SQL窗口

在此处输入图片说明

并输入

CREATE EXTENSION PostGIS

按“执行查询”-此图标 在此处输入图片说明

用鼠标右键单击列表中的数据库并断开连接,然后重新连接。扩展名现在应该已经postgis列出。

此时,您可以设置一个新的组角色和登录角色,这听起来好像您应该满足安全需求以及整个网络中的用户一样。

或者,如果您只想测试它,则可以继续使用默认角色postgres

可以将不同的组设置为具有不同的权限,例如admin和user。然后可以设置用户登录名,并将其分配给适合您要授予用户权限级别的任何组,或者您可以将所有表的访问权限授予admin,仅向用户授予一些权限,等等。您可能不需要admin组。

打开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图层”图标。

在此处输入图片说明

点击“新建”连接,然后按上述输入连接详细信息(如果您的数据库是本地的,则host就是localhost)。

您可以在此时测试连接。如果您在用户名和密码字段中选中“保存”框,则会将您的凭据存储在您的个人资料中,因此您无需每次都输入。由您决定,具体取决于您的安全需求。

按确定,然后关闭“添加PostGIS表窗口”

然后转到Database > DB Manager > DB Manager (最近的QGIS版本已标准安装了DB Manager,您需要安装DB Manager插件的早期版本)

选择PostGIS。将显示默认的公共架构。听起来好像您应该创建一个新的架构而不是使用公共架构。

模式>创建模式-为其命名(no_spaces_or_use_underscores

创建完成后,您可以返回pgAdmin进行检查,断开连接,重新连接。现在,新架构应该在那里。

返回QGIS DB Manager,将shapefile上传到数据库中的表中。

单击向下箭头“导入图层/文件”,浏览到要导入的shapefile。单击`...``图标以打开浏览。

为表格命名(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层”。这次选择连接。打开架构并突出显示表,然后单击“添加”,它将在您的项目空间中打开。


看来他们确实安装了PQadmin 4,在程序要求时提供密码,但我收到“无法将主机名“ postgres // * communityname123”转换为地址:未知服务器错误”。因此,在这里我必须做什么,请记住我正在使用PQadmin4,并且只有一台服务器PostGre SQL 9.6。因此,我将在这里假定这是他们安装的PostGre QSL服务器,但它们可能在地址配置方面做错了。所以我需要在这里通知他们还是做错了什么?* =传感器。
ThunderSpark

1
尝试使用“ localhost”作为主机名,仅用于输入或输出。然后,如果没有,请向您的管理员询问postgres在网络上的位置,他们应该可以为您提供此路径。这可能只是语法,或者地址中缺少某些内容。
MartinHügi'17

谢谢您的辛勤工作,原来他们也通过将用户名更改为超级用户,Postgres等来犯错。我将按照其余说明进行操作,看看它是否有效。谢谢马丁。
ThunderSpark

好的,马丁,您能补充一下如何为在此工作的小组建立数据库的其余部分吗?
ThunderSpark

迅速添加了一些脚本,我不得不等待午休时间,所以有点着急。他们应该工作。
MartinHügi'17

2

看来您的项目在postgres / postgis的可移植安装上可以正常工作。不久前,我为学生们做了这件事,以便他们可以将usb上的postgresl文件夹复制并在每台Windows pc上使用:

  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并添加/覆盖“托管所有127.0.0.1/32信任关系”-这允许从您的PC访问数据库而无需检查密码,在这种情况下可以,但是在生产环境中不可行
  7. 使用pgadmin3连接到数据库
  8. 创建一个新数据库并执行“ CREATE EXTENSION postgis”;

现在,您应该可以使用postgesql / postgis并访问您PC上的数据库了。请注意,这是一个快速而肮脏的解决方案,仅用于教育目的,但不适用于生产/网络环境。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.