วิธีสร้างฐานข้อมูล 'gis' ใหม่ใน PostGIS


24

ฉันต้องการสร้างฐานข้อมูลใหม่ใน PostGIS ดังนั้นฉันสามารถโหลดสิ่งต่างๆลงไปได้ในขณะที่กำลังใช้ฐานข้อมูลปัจจุบัน ตามเอกสาร

การกระจายแพคเกจบางส่วนของ PostGIS (โดยเฉพาะตัวติดตั้ง Win32 สำหรับ PostGIS> = 1.1.5) โหลดฟังก์ชัน PostGIS ลงในฐานข้อมูลแม่แบบที่เรียกว่า template_postgis หากฐานข้อมูล template_postgis มีอยู่ในการติดตั้ง PostgreSQL ของคุณผู้ใช้และ / หรือแอปพลิเคชันสามารถสร้างฐานข้อมูลที่เปิดใช้งานเชิงพื้นที่โดยใช้คำสั่งเดียว

ในกรณีของฉันสิ่งนี้ดูเหมือนจะไม่เป็นเช่นนั้น:

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

ในอดีตที่ผ่านมาฉันมีปัญหากับการคัดลอกgisฐานข้อมูลหลักแล้วลบเนื้อหาของตารางทั้งหมด จะต้องมีวิธีที่ดีกว่า คุณจะทำอย่างไรถ้าคุณตั้งใจปล่อยมัน?


คำตอบ:


42

ฉันไม่ทราบว่าPostGISคุณใช้เวอร์ชันใดอยู่ แต่เปิด> 2.0ฉันเข้าสู่ระบบครั้งแรกโดยใช้psql:

psql -U postgres

จากนั้นฉันจะสร้างฐานข้อมูล:

CREATE DATABASE example_gis;

จากนั้นฉันย้ายเข้าสู่ฐานข้อมูลนี้:

\connect example_gis;

และจากนั้นฉันก็เริ่มที่จะยกย่อง:

CREATE EXTENSION postgis;

สิ่งนี้จะสร้างฟังก์ชันเชิงพื้นที่ทั้งหมดและประเภทวัตถุในฐานข้อมูลนี้  


ที่ระบบของฉันฉันต้องเขียนกรณีบนทั้งหมดมากกว่าCREATE EXTENSION POSTGIS CREATE EXTENSION postgis
SIslam

5

ต่อไปนี้ลิงก์ของ @ novicegis สิ่งนี้ใช้ได้กับฉันด้วย 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

(คำแนะนำที่เชื่อมโยงไม่รวมส่วนขยาย 'hstore')


2

คุณควรสร้าง "template_postgis" ในคอนโซล ข้อผิดพลาดทั้งหมดจะแสดงในคอนโซล

คุณสามารถใช้คำแนะนำนี้: http://linfiniti.com/2012/05/installing-postgis-2-0-on-ubuntu/หากคุณต้องการสร้าง "template_postgis"

ตัวอย่างเช่นฉัน:

//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

ฉันได้รับข้อความนี้เมื่อฉันติดตั้ง postgis พร้อมข้อผิดพลาด


ทุกอย่างทำงานกับ postgis 1.5 ยกเว้นไม่มีไฟล์ "rtpostgis.sql" มันสำคัญหรือ?
Steve Bennett

ฉันคิดว่า postgis 1.5 เป็นวิธีที่ดีที่สุด link - เอกสารอย่างเป็นทางการ
novicegis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.