PostGIS는 PostgreSQL 관계형 데이터베이스 관리 시스템을 위한 오픈 소스 공간 확장입니다.
고급 지리 공간 기능에 대한 지원을 추가하여 데이터베이스 내에서 공간 데이터를 저장, 관리, 쿼리 및 분석할 수 있습니다.
PostGIS를 사용하면 포인트, 라인, 폴리곤 및 다중 기하학 컬렉션과 같은 다양한 공간 데이터 유형으로 작업할 수 있습니다.
기하학 조작, 공간 관계, 거리 계산, 공간 측정 및 공간 쿼리를 포함하여 공간 작업을 수행하기 위한 다양한 함수 및 연산자를 제공합니다.
PostGIS의 몇 가지 주요 기능 및 기능은 다음과 같습니다.
- 공간 데이터 저장: PostGIS를 사용하면 기하학 또는 지리 데이터 유형을 사용하여 데이터베이스 테이블에 공간 데이터를 저장할 수 있습니다. Geometry는 평면(유클리드) 공간 데이터에 사용되는 반면 지리는 측지(구형) 공간 데이터에 사용됩니다.
- 공간 인덱싱: PostGIS는 공간 데이터를 효율적으로 인덱싱하고 쿼리하기 위해 R-Tree 및 GiST(일반화 검색 트리)와 같은 다양한 인덱싱 기술을 지원합니다. 이를 통해 더 빠른 공간 쿼리와 향상된 성능을 얻을 수 있습니다.
- 공간 함수 및 연산자: PostGIS는 기하학 변환, 공간 분석, 측정, 오버레이, 버퍼링 등을 포함하여 공간 작업을 수행하기 위한 포괄적인 함수 및 연산자 세트를 제공합니다. 이러한 함수를 사용하면 SQL 쿼리 내에서 직접 공간 데이터를 조작하고 분석할 수 있습니다.
- 공간 쿼리: PostGIS는 SQL을 사용하는 공간 쿼리를 지원하므로 지정된 영역 내에서 개체 찾기, 도형 간의 공간 관계 결정, 테이블 간의 공간 조인 수행과 같은 다양한 유형의 공간 쿼리를 수행할 수 있습니다.
- 다른 도구 및 라이브러리와의 통합: PostGIS는 QGIS, GDAL 및 GeoServer와 같은 다른 지리 공간적 도구 및 라이브러리와 쉽게 통합될 수 있습니다. 표준 공간 데이터 형식을 지원하므로 광범위한 응용 프로그램 및 시스템과 상호 운용할 수 있습니다.
PostGIS는 지리 정보 시스템(GIS), 위치 기반 서비스, 환경 분석, 도시 계획, 교통 관리 등과 같은 공간 데이터와 관련된 다양한 도메인 및 애플리케이션에서 널리 사용됩니다.
PostgreSQL과 같은 강력한 관계형 데이터베이스 시스템 내에서 공간 데이터를 저장, 쿼리 및 분석하기 위한 강력하고 유연한 솔루션을 제공합니다.
[postgis 설치 및 확장팩]
CREATE EXTENSION postgis;
CREATE EXTENSION postgis_raster;
CREATE EXTENSION fuzzystrmatch;
CREATE EXTENSION postgis_tiger_geocoder;
CREATE EXTENSION postgis_topology;
CREATE EXTENSION address_standardizer_data_us;
CREATE EXTENSION address_standardizer;
-- 생성 확인 및 권한 확인
SELECT n.nspname AS "Name",
pg_catalog.pg_get_userbyid(n.nspowner) AS "Owner"
FROM pg_catalog.pg_namespace n
WHERE n.nspname !~ '^pg_' AND n.nspname <> 'information_schema'
ORDER BY 1;
--권한 부여
ALTER SCHEMA tiger OWNER TO ubroot;
ALTER SCHEMA tiger_data OWNER TO ubroot;
ALTER SCHEMA topology OWNER TO ubroot;
--PostGIS 객체의 소유권 이전
CREATE FUNCTION exec(text) returns text language plpgsql volatile AS $f$ BEGIN EXECUTE $1; RETURN $1; END; $f$;
-- exec명령문을 실행하고 권한을 변경하는 함수를 실행합니다.
SELECT
exec('ALTER TABLE ' || quote_ident(s.nspname) || '.' || quote_ident(s.relname) || ' OWNER TO ubroot;')
FROM (
SELECT nspname, relname
FROM pg_class c JOIN pg_namespace n ON (c.relnamespace = n.oid)
WHERE nspname in ('tiger','topology') AND
relkind IN ('r','S','v') ORDER BY relkind = 'S')
s;
-- 버전 확인
SELECT * FROM pg_available_extension_versions WHERE name='postgis';
'개발이야기 > DBMS' 카테고리의 다른 글
[PostgreSQL] PostGIS, PostgreSQL 15 수동 설치 및 오류 해결 (Homebrew) (0) | 2024.01.27 |
---|---|
postgresql partial index (0) | 2023.09.07 |
[PostgreSQL] ENUM Type (0) | 2023.08.03 |
PostgreSQL에도 oracle reorg와 같은 기능이 있는가? (0) | 2023.08.01 |
[PostgreSQL] Join 알고리즘에 대해... (0) | 2023.08.01 |