✔️ ST_Astext
공간 데이터를 텍스트 형태로 표현해주는 것
예를들면, 011111000021354 이런 geometry 데이터를 우리가 보는 geom 정보(POLYGON)로 바꿔줌
ST_Astext(geom) * from table -- 011111000021354
-- return : MULTILINESTRING M ((209238.497 / 533566.9 / 43.007, 209259.89 / 533566.9 / 43.105))
SELECT ST_AsText('0103000000010000000500000000000400000'); -- POLYGON((0 0,0 1,1 1,1 0,0 0))
✔️ st_makePoint
x,y,z 좌표를 이용해 포인트 생성
ST_GeomFromText and ST_PointFromText 보다 빠르고 더 정확하다.
형태
geometry ST_MakePoint(float x, float y);
geometry ST_MakePoint(float x, float y, float z);
geometry ST_MakePoint(float x, float y, float z, float m);
사용예제
select st_makePoint(203668,525737) -- 010100000000000000A0DC084100000000520B2041
✔️ st_union
두 geometry가 결합된 지오메트리를 반환 (두 geom 정보를 합치는 함수)
// 기본형태
geometry ST_Union(geometry g1, geometry g2);
geometry ST_Union(geometry g1, geometry g2, float8 gridSize);
// 사용
select st_union(st_makePoint(203668,525737),st_makePoint(216991,549062))
-- 0123453... // MULTIPOINT(203668 525737,216991 549062) point 두개 생김
- x,y 좌표값으로 포인트를 만들어 결합한 후 범위를 구하는 예제
select st_extent(st_union(st_makePoint(x,y),st_makePoint(x,y)))
-- 결과: "BOX(205000 216000,216000 549000)"
✔️ st_extent
도형 집합을 묶는 box2d 경계 상자를 반환하는 집계 함수입니다.
select st_extent(0100000021000...);
-- BOX(203668 525737,216991 549062)
✔️ st_setSrid
좌표계를 해당 srid로 변환하는 함수
// 기본형태
ST_SetSRID(geom, srid)
st_setSrid(좌표계 정보가 포함되어 있는 geometry 데이터, 변환할 좌표숫자)
// 사용
select st_setSrid(BOX(203668 525737,216991 549062),5186); -- 010300002042140000010000
✔️ st_intersects
두 Geometry가 교차하는지 여부를 판별
true, false로 반환
// 기본형태
st_intersects(geometry1, geometry2)
// 사용
select st_intersects(
st_setSrid((select geom from gis_lines where link_id = 50720),5186),
st_setSrid(st_extent(st_union(st_makePoint(203668,525737),st_makePoint(216991,549062))),5186)
); -- true
✔️ ST_Dump
MultiPolygon, MultiLineString 처럼 복합적인 공간 데이터 객체를 각각 풀어서 단순 객체로 분할하는 기능
예를들면, MultiLineString 객체를 개별 LineString 로 변환한다.
ST_ASTEXT(geom) -- "MULTILINESTRING M ((206709.525 532442.908 74.578 , 206709.435 532443.179 74.588))"
-- 개별 객체로 변환
ST_Dump(geom).geom --"LINESTRING M (206709.525 532442.908 74.578,206709.435 532443.179 74.588)"
✔️ ST_EndPoint
LineString(선) 또는 MultiLineString(다중선) 객체의 끝점을 반환함.
해당 객체의 끝점을 나타내는 점(Point) 객체로 반환하여 객체의 끝점을 반환하는 것임
(LineString은 점들로 이루어진 선분이고, MultiLineString은 여러 개의 선분으로 이루어진 객체)
- 형식
ST_EndPoint(geometry) -- geometry : LineString, MultiLineString
- 예시
ST_EndPoint (LINESTRING(1 1, 2 2, 3 3)) -- 이 객체의 끝점을 나타내는 Point(3, 3)을 반환
✔️ ST_StartPoint
ST_EndPoint의 반대
✔️ ST_Azimuth
두 개의 점(Point) 사이의 방위각(Azimuth)(방향)을 계산하거나 선분의 방향을 파악하는 데 사용됨
방위각은 한 점에서 다른 점까지의 방향을 나타내는 각도로 표현됨
도(degree) 단위로 표
- 형식
ST_Azimuth(point1, point2) -- point1에서 point2로 향하는 방향의 각도를 계산하여 반환
https://docs.aws.amazon.com/ko_kr/redshift/latest/dg/ST_MakePoint-function.html
https://postgis.net/docs/reference.html#Geometry_Constructors
'GIS' 카테고리의 다른 글
[geoserver] DB연결부터 layer 만들기까지 (0) | 2023.05.20 |
---|---|
[geoserver] docker로 geoserver 설치하기 (0) | 2023.05.18 |