如何在PostGIS中创建新的“ gis”数据库?


24

我想在PostGIS中创建一个新数据库,以便可以在使用当前数据库时将内容加载到其中。根据文档

一些PostGIS的打包发行版(特别是WinGIS安装程序> = 1.1.5)将PostGIS函数加载到名为template_postgis的模板数据库中。如果您的PostgreSQL安装中存在template_postgis数据库,则用户和/或应用程序可以使用单个命令创建启用空间的数据库。

在我看来,情况并非如此:

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

过去,我一直在搞怪复制主gis数据库,然后删除所有表的内容。肯定有更好的办法。如果不小心掉了怎么办?


Answers:


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”。所有错误均显示在控制台中。

如果要创建“ template_postgis”,可以使用以下说明:http : //linfiniti.com/2012/05/installing-postgis-2-0-on-ubuntu/

例如,我这样做:

//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时收到此消息


除没有“ rtpostgis.sql”文件外,所有这些都可用于postgis 1.5。那很重要么?
史蒂夫·本内特

我认为,postgis 1.5是最好的方法。 链接 -官方文档
novicegis 2013年
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.