상세 컨텐츠

본문 제목

[spatial database] Spatial Database with PostGIS

spatial database

by ~지우~ 2023. 2. 21. 12:03

본문

728x90

Geometry Types

• Point: 좌표 공간의 단일 위치를 나타내는 0차원 기하학
• LineString: 연속된 라인 세그먼트에 의해 형성된 1차원 라인
• LinearRing: 닫혀있는 단순한 LineString
• Polygon: 외부 경계와 0개 이상의 내부 경계로 구분되는 2차원 평면 영역
• MultiPoint: 포인트 모음
• MultiLineString: LineString 컬렉션
• MultiPolygon: 다각형

 

SRID

ST_SetSRID
지오메트리의 SRID를 특정 정수 값으로 설정
• geometry ST_SetSRID(geometry geom, integer srid);

ST_SRID
spatial_ref_sys table에 정의된 대로 ST_Geometry에 대한 공간 참조 식별자를 반환
• integer ST_SRID(geometry g1);

 

Point

ST_Point
• geometry ST_Point(float x, float y);
• geometry ST_Point(float x, float y, integer srid=unknown);

ST_MakePoint
• geometry ST_MakePoint(float x, float y);

ST_GeomFromText
• geometry ST_GeomFromText(text WKT);
• geometry ST_GeomFromText(text WKT, integer srid);
• x = Longitude y = Latitude

 

Line / LineString

점, 다중 점 또는 선문자열 지오메트리의 점을 포함하는 선문자열을 작성
• geometry ST_MakeLine(geometry geom1, geometry geom2);
• geometry ST_GeomFromText('LINESTRING(x1 y1, ..., xn yn)’,[SRID]);

 

Polygon

지정된 셸과 선택적인 홀 배열로 형성된 폴리곤을 작성
• geometry ST_MakePolygon(geometry linestring);
• geometry ST_MakePolygon(geometry outerlinestring, geometry[] interiorlinestrings);

 

MultiObjects

 지오메트리를 지오메트리 컬렉션으로 수집

• Variant 1: 두 개의 입력 지오메트리 사용가능
• Variant 2: 일련의 기하학적 구조를 수용
• Variant 3: 일련의 기하학 행 집합을 허용하는 집계 함수

• geometry ST_Collect(geometry g1, geometry g2);
• geometry ST_Collect(geometry[] g1_array);
• geometry ST_Collect(geometry set g1field);

 

 

Geometry vs Geography


Geometry
• 평면에서 데카르트 좌표 기준
• 더 먼 거리에서 덜 정확한 계산 제공
• 수많은 기하학적 함수
• 처리 비용 절감
• 지오메트리 데이터가 SRID 4326인 경우 지오메트리 유형에 자동 캐스트

example code

> create table cafes (cafe_id char(4) primary key, cafe_name varchar(50) not null, geom geometry);
> insert into cafes values ('C1','Gloria Jean''s Cafe’, ST_SetSRID(ST_Point(144.9663891,-37.8131234),4326));
> insert into cafes values ('C2','Starbuck Cafe',ST_Point(144.9663354,-37.8134991, 4326));



Geography
• 구형 모델 기준
거리에 관계없이 보다 정확한 계산 제공
• 제한된 기하 함수
• 더 많은 처리 비용 필요

 example code

> create table cafes_geog (cafe_id char(4) primary key, cafe_name varchar(50) not null, geog geography);
> insert into cafes_geog values ('C1','Gloria Jean''s Cafe', ST_SetSRID(ST_Point(144.9663891,-37.8131234),4326));

 

 

Distance Comparison

Distance in Planar unit
• float ST_Distance(geometry g1, geometry g2);
Distance in Metric
• float ST_Distance(geography geog1, geography geog2,[boolean use_spheroid=true]);

728x90

댓글 영역