Làm cách nào để tạo cơ sở dữ liệu 'gis' mới trong PostGIS?


24

Tôi muốn tạo một cơ sở dữ liệu mới trong PostGIS, vì vậy tôi có thể tải nội dung vào đó trong khi cơ sở dữ liệu hiện tại đang được sử dụng. Theo các tài liệu

Một số bản phân phối đóng gói của PostGIS (cụ thể là trình cài đặt Win32 cho PostGIS> = 1.1.5) tải các hàm PostGIS vào cơ sở dữ liệu mẫu có tên là template_postgis. Nếu cơ sở dữ liệu template_postgis tồn tại trong bản cài đặt PostgreSQL của bạn thì người dùng và / hoặc ứng dụng có thể tạo cơ sở dữ liệu kích hoạt không gian bằng một lệnh duy nhất.

Trong trường hợp của tôi, điều này dường như không phải là như vậy:

$ createdb -T template_postgis my_spatial_db
createdb: database creation failed: ERROR:  template database "template_postgis" does not exist

Trước đây tôi đã từng loay hoay với việc sao chép giscơ sở dữ liệu chính , sau đó xóa nội dung của tất cả các bảng. Phải có cách tốt hơn. Bạn làm gì nếu bạn vô tình làm rơi nó?


Câu trả lời:


42

Tôi không biết PostGISbạn đang sử dụng phiên bản nào nhưng vào> 2.0Tôi đăng nhập lần đầu bằng cách sử dụng psql:

psql -U postgres

Sau đó, tôi tạo một cơ sở dữ liệu:

CREATE DATABASE example_gis;

Sau đó, tôi chuyển vào cơ sở dữ liệu này:

\connect example_gis;

Và sau đó tôi chạy phần thưởng:

CREATE EXTENSION postgis;

Điều này tạo ra tất cả các hàm không gian và các loại đối tượng trong cơ sở dữ liệu này.  


tại hệ thống của tôi, tôi cần phải viết tất cả chữ hoa CREATE EXTENSION POSTGIShơn là CREATE EXTENSION postgis.
SIslam

5

Theo liên kết của @ novicegis, điều này hiệu quả với tôi với postgis 1.5:

db=gis
sudo -su postgres <<EOF
createdb --encoding=UTF8 --owner=ubuntu $db
psql -d $db -f /usr/share/postgresql/9.1/contrib/postgis-1.5/postgis.sql
psql -d $db -f /usr/share/postgresql/9.1/contrib/postgis-1.5/spatial_ref_sys.sql
psql -d $db -f /usr/share/postgresql/9.1/contrib/postgis_comments.sql
psql -d $db -c "GRANT SELECT ON spatial_ref_sys TO PUBLIC;"
psql -d $db -c "GRANT ALL ON geometry_columns TO ubuntu;"
psql -d $db -c 'create extension hstore;'
EOF

(Các hướng dẫn được liên kết không bao gồm tiện ích mở rộng 'hstore'.)


2

Bạn nên tạo "template_postgis" trong bảng điều khiển. Tất cả các lỗi được hiển thị trong giao diện điều khiển.

Bạn có thể sử dụng hướng dẫn này: http://linfiniti.com/2012/05/installing-postgis-2-0-on-ub Ubuntu / nếu bạn muốn tạo "template_postgis".

Ví dụ: tôi làm:

//install postgis
su oleg
sudo apt-add-repository ppa:sharpie/for-science  
sudo apt-add-repository ppa:sharpie/postgis-nightly
sudo apt-get update
sudo apt-get install postgresql-9.1-postgis

// create template
sudo su
su postgres
createdb -E UTF8 template_postgis2
createlang -d template_postgis2 plpgsql
psql -d postgres -c "UPDATE pg_database SET datistemplate='true' WHERE datname='template_postgis2'"

psql -d template_postgis2 -f /usr/share/postgresql/9.1/contrib/postgis-2.1/postgis.sql
psql -d template_postgis2 -f /usr/share/postgresql/9.1/contrib/postgis-2.1/rtpostgis.sql
psql -d template_postgis2 -c "GRANT ALL ON geometry_columns TO PUBLIC;"
psql -d template_postgis2 -c "GRANT ALL ON geography_columns TO PUBLIC;"
psql -d template_postgis2 -c "GRANT ALL ON spatial_ref_sys TO PUBLIC;"
createdb osm -T template_postgis2

Tôi nhận được thông báo này khi tôi cài đặt postgis có lỗi


Tất cả đều hoạt động với postgis 1.5 ngoại trừ không có tệp "rtpostgis.sql". Nó quan trọng?
Steve Bennett

Tôi nghĩ, postgis 1.5 là cách tốt nhất. liên kết - tài liệu chính thức
novicegis
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.