Thiết lập cơ sở dữ liệu PostGIS và mở nó trong QGIS trên Windows?


13

Tôi đã cố gắng làm theo hướng dẫn để thiết lập cơ sở dữ liệu PostGIS để người dùng có QGIS truy cập, nhưng hiện tại tôi không thể hiểu đủ để tiến bộ?

Hoàn cảnh của tôi; Tôi là một thực tập sinh chịu trách nhiệm tạo cơ sở dữ liệu PostGIS để số hóa các đối tượng màu xanh lá cây (như cây) và chạy các truy vấn - như liên kết danh sách đường phố, với các tệp hình ảnh, vào bảng thuộc tính.

Tôi có "bộ xương shapefile" (hiện không có đối tượng, chỉ có khung thuộc tính "trong đó các đối tượng tham chiếu địa lý hiện tại và tương lai (một shapefile khác nhau cho mỗi loại) sẽ được dán / tạo). kho dữ liệu?

Tình huống;

Chúng tôi làm việc trong một tòa nhà riêng biệt với kết nối internet và mạng LAN riêng với máy chủ dự phòng cho mọi tệp. Vì vậy, chúng tôi có quyền truy cập tệp cục bộ và các tệp mà chúng tôi chia sẻ qua kết nối internet

Việc thiết lập cơ sở dữ liệu đã được quản trị viên thực hiện thông qua truy cập từ xa, sử dụng các tệp thực thi .exe mới nhất của PostGIS và PostgreQuery (postgresql-9.6.2-3-windows-x64 & postgis-bundle-pg96x64-setup-2.3.2 -1) cho máy 64 bit của tôi. Quản trị viên cung cấp cho tôi một tệp văn bản với thông tin đăng nhập. Các hướng dẫn đào tạo ở đây khá khó hiểu vì chúng đối phó với Ubuntu.

Tôi bị mắc kẹt vì tôi không biết sử dụng thông tin đăng nhập mà tôi đã viết ở đâu? Tôi giả sử tôi cần sử dụng pgAdmin?


Đây là cách tôi cài đặt PostGIS trên Windows - trong một cài đặt đơn giản get.enterprisedb.com/docs/iêu thì QGIS sẽ kết nối dễ dàng với tên người dùng và mật khẩu bạn đặt.
Mapperz

1
Tôi chắc chắn sẽ khuyên bạn nên cài đặt pgAdmin 3 để làm việc với cơ sở dữ liệu của bạn. Hiện tại đã có pgAdmin4, bạn cũng có thể tìm cách cài đặt nó cùng một lúc, xem cái nào bạn thích.
Martin Hügi

Đợi đã, vậy thì nên đi đâu trong QGIS, và tôi nên cài đặt tập tin nào trong stackbuilder? Chỉnh sửa nvm: tìm thấy ngay bây giờ tôi cần tìm mục nhập dịch vụ và máy chủ lưu trữ cục bộ nào.
ThunderSpark

Postgis sẽ cài đặt 'máy chủ' được yêu cầu cục bộ, đây là cách cơ sở dữ liệu hoạt động - sau đó bạn sử dụng QGIS để kết nối 'trực tiếp' thông qua máy chủ (localhost).
Mapperz

Câu trả lời:


23

Có vẻ như quản trị viên của bạn đã cài đặt cơ sở dữ liệu thành công và cung cấp cho bạn các chi tiết bạn sẽ cần. Họ cũng có thể đã cấu hình PostGIS trong quá trình cài đặt, nhưng nếu không, bạn có thể kiểm tra xem khi bạn thực hiện các bước này.

Trước tiên, hãy yêu cầu quản trị viên của bạn cài đặt pgAdmin, điều này sẽ cho phép bạn truy cập cơ sở dữ liệu PostgreQuery của bạn với giao diện đồ họa.

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

Mở pgAdmin

Nếu PostgreSQL của bạn đã được cài đặt;

  • trên máy tính của bạn, nó sẽ hiển thị dưới dạng localhost, bạn sẽ có thể nhấp đúp vào 'PostgreQuery 9.6 (localhost: 5432)' để kết nối với nó.

nhập mô tả hình ảnh ở đây

  • Nếu nó đã được cài đặt trên mạng, bạn sẽ cần quản trị viên của mình cho bạn biết địa chỉ máy chủ (nếu bạn chưa có địa chỉ đó), thì bạn sẽ cần truy cập Tệp> Thêm máy chủ và điền vào các trường;

nhập mô tả hình ảnh ở đây

Sau khi kết nối, hãy đi đến Edit > New Object > New Database

Đặt tên cho nó. Nó sẽ xuất hiện trong danh sách máy chủ của bạn.

Nhấp đúp để kết nối với nó. Kiểm tra Extensionsđể xem nếu nó liệt kê postgis.

Nếu không;

Mở cửa sổ SQL bằng cách nhấp vào biểu tượng SQL

nhập mô tả hình ảnh ở đây

và gõ vào

CREATE EXTENSION PostGIS

Nhấn 'Thực hiện truy vấn' - biểu tượng này nhập mô tả hình ảnh ở đây

Nhấp chuột phải vào cơ sở dữ liệu trong danh sách và ngắt kết nối, sau đó kết nối lại. Phần mở rộng nên đã postgisđược liệt kê.

Bạn có thể thiết lập Vai trò nhóm mới và vai trò đăng nhập tại thời điểm này, có vẻ như bạn sẽ cung cấp các nhu cầu bảo mật và người dùng của bạn trên mạng.

Hoặc nếu bạn chỉ muốn kiểm tra nó, bạn có thể tiếp tục với vai trò mặc định postgres.

Các nhóm khác nhau có thể được thiết lập để có các quyền khác nhau, ví dụ như quản trị viên và người dùng. Đăng nhập người dùng sau đó có thể được thiết lập và gán cho bất kỳ nhóm nào phù hợp với mức cấp phép bạn muốn cung cấp cho người dùng hoặc bạn có thể cấp quyền truy cập vào tất cả các bảng cho quản trị viên và chỉ một số cho người dùng, v.v. Bạn có thể không cần nhóm quản trị viên.

Mở cửa sổ SQL và thực hiện các truy vấn này;

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;

Thiết lập thông tin đăng nhập quản trị viên (đăng nhập với tư cách là người đăng bài / siêu người dùng)

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

Thiết lập thông tin đăng nhập người dùng (đăng nhập với tư cách người đăng / siêu người dùng)

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

Mở QGIS. Bắt đầu một dự án mới.

Nhấp vào biểu tượng 'Thêm lớp PostGIS' trên thanh công cụ bên trái.

nhập mô tả hình ảnh ở đây

Nhấp vào kết nối 'Mới' và nhập chi tiết kết nối như trên (nếu cơ sở dữ liệu của bạn là cục bộ thì máy chủ chỉ là localhost).

Bạn có thể kiểm tra kết nối tại thời điểm này. Nếu bạn chọn hộp 'Lưu' theo trường tên người dùng và mật khẩu, nó sẽ lưu thông tin đăng nhập của bạn trong hồ sơ của bạn để bạn không cần phải nhập mỗi lần. Tùy thuộc vào nhu cầu bảo mật của bạn.

Nhấn Ok và đóng cửa sổ 'Thêm bảng PostGIS'

Sau đó chuyển đến Database > DB Manager > DB Manager (Các phiên bản QGIS gần đây đã cài đặt Trình quản lý DB làm tiêu chuẩn, các phiên bản trước đó bạn sẽ cần cài đặt trình quản lý DB)

Chọn PostGIS. Lược đồ công khai mặc định sẽ được hiển thị. Có vẻ như bạn nên tạo một lược đồ mới thay vì sử dụng lược đồ công khai.

Lược đồ> Tạo lược đồ - Đặt tên ( no_spaces_or_use_underscores)

Sau khi tạo, bạn có thể kiểm tra bằng cách quay lại pgAdmin, ngắt kết nối, kết nối lại. Các lược đồ mới bây giờ sẽ ở đó.

Quay lại Trình quản lý DB của QGIS để tải lên một shapefile vào một bảng trong cơ sở dữ liệu.

Nhấp vào mũi tên xuống 'Nhập lớp / tệp' duyệt đến shapefile mà bạn muốn nhập. Nhấp vào biểu tượng `...` `để mở trình duyệt.

Đặt tên cho bảng ( again_no_spaces_or_use_underscores)

Lựa chọn Primary key

Lựa chọn Geometry Column

Chọn SRIDvà nhập mã CRS

Để bây giờ để lại mọi thứ khác và OK.

Nếu đó là một tập dữ liệu lớn, có thể mất một lúc, đặc biệt là qua kết nối mạng / internet

Một lần nữa, bạn có thể quay lại pgAdmin, nhấn refresh lần này và bảng mới sẽ xuất hiện Tables.

Nếu bạn đã thiết lập vai trò nhóm và người dùng, bạn sẽ cần cấp quyền truy cập vào lược đồ, ví dụ;

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

Quay lại QGIS và 'Thêm lớp PostGIS'. Lần này chọn Kết nối. Mở lược đồ và tô sáng bảng và bấm vào 'Thêm' và nó sẽ mở ra trong không gian dự án của bạn.


Có vẻ như họ đã cài đặt PQadmin 4, tôi đang cung cấp mật khẩu khi chương trình yêu cầu nhưng tôi nhận được "không thể dịch tên máy chủ" postgres // * Communityname123 "sang địa chỉ: Lỗi máy chủ không xác định". Vậy tôi phải làm gì ở đây, hãy nhớ rằng tôi đang làm việc với PQadmin4 và chỉ có một máy chủ PostGre SQL 9.6. Vì vậy, tôi sẽ giả sử đây là máy chủ QSL PostGre mà họ đã cài đặt, nhưng họ có thể đã làm gì đó sai với cấu hình của địa chỉ. Vì vậy, tôi cần phải thông báo cho họ ở đây hoặc tôi đang làm gì sai? * = cảm biến.
ThunderSpark

1
Hãy thử 'localhost' làm tên máy chủ, chỉ để loại trừ trong hoặc ngoài. Sau đó, nếu không, hãy hỏi quản trị viên của bạn về đường dẫn đến vị trí postgres trên mạng, họ sẽ có thể cung cấp cho bạn cái này. Nó có thể chỉ là cú pháp, hoặc thiếu một cái gì đó trong địa chỉ.
Martin Hügi

Cảm ơn bạn đã làm việc, hóa ra họ đã mắc lỗi bằng cách thay đổi tên người dùng thành superuser, Postgres, v.v. Tôi sẽ làm theo phần còn lại của hướng dẫn và xem nếu nó hoạt động. Cảm ơn martin.
ThunderSpark

Oke nó hoạt động Martin, bạn có thể vui lòng thêm phần còn lại của cách tạo cơ sở dữ liệu cho một nhóm đang làm việc ở đây không?
ThunderSpark

Nhanh chóng thêm một số kịch bản, tôi phải chờ đến giờ nghỉ trưa, nên hơi vội vàng. Họ nên làm việc.
Martin Hügi

2

Có vẻ như dự án của bạn sẽ hoạt động đủ trên một bản cài đặt di động của postgres / postgis. Tôi đã làm điều này cho các sinh viên của mình cách đây một thời gian, để họ có thể sao chép thư mục postgresl trên thanh usb và sử dụng nó trên mọi máy tính windows:

  1. Tải xuống postgresql dưới dạng tệp zip
  2. Giải nén nó
  3. Tải về PostGIS (postgis-bundle-pg96-2.3.1x32.zip hoặc x64), theo hệ thống của bạn
  4. Giải nén nó và sao chép nó vào thư mục postgresql
  5. Sử dụng giải thích này để "cài đặt" Postgres dưới dạng phiên bản di động: http://www.postgresonline.com/journal/archives/172-Starting-PostgreQuery-in-windows-without-install.html
  6. Tùy chọn thay đổi pg_hba.conf và thêm / ghi đè "lưu trữ tất cả tin cậy 127.0.0.1 / 32" - điều này cho phép truy cập từ máy tính của bạn vào cơ sở dữ liệu mà không cần kiểm tra mật khẩu, trong trường hợp này không ổn trong môi trường sản xuất
  7. Kết nối với cơ sở dữ liệu bằng pgadmin3
  8. Tạo một cơ sở dữ liệu mới và thực hiện "TẠO EXTENSION postgis;"

Bây giờ bạn sẽ có thể làm việc với postgesql / postgis và truy cập db trên máy tính của bạn. Xin lưu ý rằng đây là một giải pháp nhanh chóng và bẩn thỉu, hoạt động cho mục đích giáo dục nhưng không phải trong môi trường sản xuất / mạng.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.