PostGIS에서 새 'gis'데이터베이스를 만드는 방법은 무엇입니까?


24

PostGIS에서 새 데이터베이스를 만들고 싶습니다. 따라서 현재 데이터베이스가 사용되는 동안 데이터베이스에 물건을로드 할 수 있습니다. 문서 에 따르면

PostGIS의 일부 패키지 배포판 (특히 PostGIS> = 1.1.5의 Win32 설치 프로그램)은 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"를 작성해야합니다. 모든 오류가 콘솔에 표시됩니다.

"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에서 작동했습니다. 그것은 중요한가?
Steve Bennett

postgis 1.5가 가장 좋은 방법이라고 생각합니다. 링크 -공식 문서
초보자
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.