PostGIS 템플릿을 만드는 방법은 무엇입니까?


19

pgrouting을 설치하는 자습서를 따르고 있습니다. 그러나 나는 말할 때 부분을 얻지 못했습니다.

pgAdmin을 시작하고 PostGIS 템플릿을 기반으로 새 데이터베이스를 만듭니다

이 postgis 템플릿은 어디서 구할 수 있습니까? homebrew를 사용하여 PostGIS를 설치 한 것을 알고 있습니다. 그러나 템플릿을 찾을 수 없습니다. 나는 지금 macos를 실행 중이다.


1
어떤 PostGIS 버전을 사용하고 있습니까?
RK

답변:


16

PostgreSQL 9.1의 새로운 방법

아래 RK의 조언 덕분 에이 튜토리얼을 살펴본 결과 PostgreSQL 9.1의 경우 pgAdmin 컨텍스트 메뉴를 사용하여 확장 기능 postgispostgis_topology기존 데이터베이스를 추가하기 만하면됩니다. postgis 템플릿을 만들기 위해라는 새 데이터베이스를 만든 template-postgis다음 이러한 확장을 추가했습니다. 그런 다음이 템플릿을 사용하여 다른 데이터베이스를 만들었습니다. 사용할 때 pg_dump내보내기의 크기가 훨씬 작다는 것을 알았습니다.이 행만 포함하고 확장 기능을 덤프하지 않는 것 같습니다.

CREATE EXTENSION IF NOT EXISTS postgis WITH SCHEMA public;
CREATE EXTENSION IF NOT EXISTS postgis_topology WITH SCHEMA topology;

오래된 중복 방법 :

여기에 .sql 파일을 사용했습니다.

/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/postgis.sql
/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/spatial_ref_sys.sql
/Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/topology.sql

또한 기존 PostGIS 데이터베이스를이 템플릿으로 만든 새 데이터베이스로 가져올 때이 오류가 발생했습니다.

ERROR:  type "spheroid" already exists

"template_postgis"라는 빈 데이터베이스를 생성 한 후 여기에 있는 지침에 ON_ERROR_ROLLBACK=on따라 템플릿을 설정하는 데 사용 했습니다.

psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/postgis.sql -v ON_ERROR_ROLLBACK=on
psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/spatial_ref_sys.sql -v ON_ERROR_ROLLBACK=on
psql -U postgres -d template_postgis -1 -f /Applications/Postgres.app/Contents/MacOS/share/contrib/postgis-2.0/topology.sql -v ON_ERROR_ROLLBACK=on

그런 다음 백업 데이터베이스를 가져 왔습니다. 예 :

psql -U someuser -d somedb -1 -f somefile.sql -v ON_ERROR_ROLLBACK=on

더 오래된 방법 :

저는 이것을 했어요:

createdb -E UTF8 -T template0 template_postgis
createlang -d template_postgis plpgsql
psql --quiet -d template_postgis -f /Applications/Postgres.app/Contents/MacOS/share/extension/postgis--2.0.1.sql

경로 postgis--2.0.1.sql는 설정에 따라 다릅니다.


답변을 완성하려면 (내 Mac에서 작동) Mac에서 Kyngchaos 포트에서 postgis를 설치 한 경우 postgis 설치 파일은 다음과 같습니다. /usr/local/pgsql/share/extension/postgis--2.0.1.sql
Bruno von Paris

최신 방법의 경우 'SCHEMA'가 필요합니까? 그게 뭐야? (내가 지금까지 본 유일한 예입니다.)
matt wilkie 22.41 at

14

PostgreSQL 9.1 이상을 실행하는 경우 템플릿 데이터베이스를 신경 쓰지 않아도됩니다 . 데이터베이스를 만든 다음 pgAdmin의 SQL 뷰에서 입력하고 실행하십시오.

CREATE EXTENSION postgis;

그것은 공간적으로 당신의 데이터베이스를 가능하게 할 것입니다.


템플릿 방법을 계속 사용할 수 있습니까? 또는이 정보를 pgAdminIII의 "새 데이터베이스"대화 상자에 추가하는 방법이 있습니까?
monkut

당신은 아마도 추가 할CREATE EXTENSION postgis_topology;
매트 윌키

1
pgAdmin4의 @monkut은 탐색 트리에서 '확장 프로그램'을 마우스 오른쪽 버튼으로 클릭하여 사용할 수 있습니다
matt

CREATE EXTENSION수퍼 유저 권한이 필요하므로 실제로 템플릿을 작성 / 사용하는 것이 좋습니다.
Cromax

3

실제로 이것은 postgis 설치의 기초입니다.

postgis 템플릿이 있다면 다음과 같이 새 데이터베이스를 만들 수 있습니다.

 createdb -T postgistemplate -O gis gisdb

당신이 그것을 가지고 있지 않다면, 당신은 이런 식으로 이것을 할 수 있습니다 :

sudo su postgres
createdb postgistemplate
createlang plpgsql postgistemplate
psql -d postgistemplate -f /usr/share/postgresql-8.2-postgis/lwpostgis.sql
psql -d postgistemplate -f /usr/share/postgresql-8.2-postgis/spatial_ref_sys.sql

bash 스크립트 Debian / Ubuntu-create_template_postgis-debian.sh를 사용할 수 있습니다.

도움이 되길 바랍니다.


사용자 postgres에게 터미널을 사용할 수있는 권한이없는 경우 sudo su postgres명령이 자동으로 실패합니다. 이를 극복하기 위해 sudo -u postgrespostgres 사용자로 전환하지 않고 postgres 사용자로 명령을 실행하기 위해이 모든 명령에 선행 할 수 있습니다 .
Ring


2
#!/bin/sh
instance_name=$1
psql << EOF
create database $instance_name;
\connect $instance_name
-- Enable PostGIS (includes raster)
CREATE EXTENSION postgis;
-- Enable Topology
CREATE EXTENSION postgis_topology;
-- fuzzy matching needed for Tiger
CREATE EXTENSION fuzzystrmatch;
-- Enable US Tiger Geocoder
CREATE EXTENSION postgis_tiger_geocoder;
EOF

이 bash 스크립트를 사용하여 postgis가 활성화되고 stdin에 이름이 지정된 새 데이터베이스 작성을 실행합니다.

포스트그레스 9.3

PostGIS 2.1.3

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.