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


的一些PostGIS打包发行版(特别是PostGIS> = 1.1.5的Win32
安装程序)将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数据库,然后删除其中的内容所有的桌子。肯定有更好的办法。如果不小心掉了怎么办?

评论

参见gis.stackexchange.com/questions/19432/…

#1 楼

我不知道您使用的是哪个版本的PostGIS,但是在> 2.0上,我首先使用psql登录:

psql -U postgres

然后我创建数据库:

CREATE DATABASE example_gis;

然后我进入这个数据库:

\connect example_gis;

然后我运行命令:

CREATE EXTENSION postgis;

这将在此数据库中创建所有空间函数和对象类型。


评论


在我的系统上,我需要编写所有大写的CREATE EXTENSION POSTGIS,而不是CREATE EXTENSION postgis。

– SIslam
16/12/20在8:35



#2 楼

遵循@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”扩展名。)

#3 楼

您应该在控制台中创建“ 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时收到了此消息

评论


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

–史蒂夫·贝内特(Steve Bennett)
13年9月12日在22:59

我认为,postgis 1.5是最好的方法。链接-官方文档

–novicegis
2013年9月13日在6:52