지난번 포스팅에서는 R의 sf 패키지를 사용해서 지리공간 벡터 데이터의 기하 유형(geometry types of vector data)로서 단순 지리특성 기하(Simple feature geometry)인 점(Point), 선(LineString), 면(다각형) (Polygon), 다중점(MultiPoint), 다중선(MultiLineString), 다중면(MultiPolygon), 기하집합(GeometryCollection)에 대해서 소개하였습니다 .


이번 포스팅에서는 앞서 소개했던 벡터 데이터의 '단순 지리특성 기하 (Simple feature geometry, sfg)' 들을 sf 패키지의 st_sfc() 함수를 사용하여 '단순 지리특성 칼럼 (Simple feature column, sfc)' 으로 합치는 방법을 소개하겠습니다.


여기서 단순 지리특성 칼럼(Simple feature column, sfc)은 단순 지리특성 기하들의 리스트(a list of sfg) 로서, 두 개의 지리특성(features)를 하나의 칼럼 객체로 합쳐놓은 것입니다. (한국말로 feature, sfc, sfg 용어를 번역하기가 쉽지 않네요.)


-- 동일한 단순 지리특성 기하 유형 합치기

(1) 두개의 단순 지리특성 기하 점(2 sfg points)를 한개의 단순 지리특성 칼럼(1 sfc) 객체로 합치기

(2) 두개의 단순 지리특성 기하 면(2 sfg polygons)를 한개의 단순 지리특성 칼럼(1 sfc) 객체로 합치기


-- 서로 다른 단순 지리특성 기하 유형 합치기

(3) 단순 지리특성 기하 점과 면을 합쳐서 한개의 단순 지리특성 칼럼(1 sfc) 객체로 만들기





  (1) 두개의 단순 지리특성 기하 점(2 sfg points)를 st_sfc() 함수로
      한개의 단순 지리특성 칼럼(1 sfc) 객체로 합치기


R의 sf 패키지를 사용할 것이므로, 먼저 library(sf) 로 패키지를 불러옵니다.


다음으로, 예제로 사용할 점(Point) 두개를 st_point() 함수를 사용해서 만들었습니다.


그리고, st_sfc() 함수를 사용하여, 단순 지리특성 기하(Simple feature geometry, sfg)인 두개의 점을

--> 단순 지리특성 칼럼(Simple feature columns, sfc) 의 하나의 객체로 합쳤습니다.



library(sf)

## Simple feature geometry (sfg)
## Point
point_sfg_1 = st_point(c(1, 2))
point_sfg_1
# POINT (1 2)

point_sfg_2 = st_point(c(3, 4))
point_sfg_2
# POINT (3 4)


## Simple feature columns (sfc)
## st_sfc() function combine two simple features into one object with two features.
## sfc represents the geometry column in sf data frames.
points_sfc = st_sfc(point_sfg_1, point_sfg_2)

points_sfc
# Geometry set for 2 features
# geometry type:  POINT

# dimension:      XY
# bbox:           xmin: 1 ymin: 2 xmax: 3 ymax: 4
# CRS:            NA
# POINT (1 2)
# POINT (3 4)

 



st_geometry_type() 함수를 사용하면 기하 유형을 확인해 볼 수 있습니다. 동일한 기하 유형인 두 개 점을 합쳤으므로 하나의 객체 집합에 두 개의 점(Points)가 들어있습니다.



## check the geometry type of sfc

st_geometry_type(points_sfc)
# [1] POINT POINT
# 18 Levels: GEOMETRY POINT LINESTRING POLYGON MULTIPOINT MULTILINESTRING MULTIPOLYGON ... TRIANGLE

 




  (2) 두개의 단순 지리특성 기하 면(2 sfg polygons)를 st_sfc() 함수로

      한개의 단순 지리특성 칼럼(1 sfc) 객체로 합치기


이번에는 동일한 기하 형태인 두개의 단순 지리특성 기하 면 (2 Simple feature geometry polygons) 을 st_polygon() 함수로 만들어보겠습니다.


그리고 이를 st_sfc() 함수를 사용해서 하나의 단순 지리특성 칼럼(Simple feature column) 객체로 합쳐보겠습니다.



## Polygon using list of matrices of points
polygon_list_1 = list(rbind(c(1, 1), c(1, 3), c(3, 5), c(3, 1), c(1, 1)))
polygon_sfg_1 = st_polygon(polygon_list_1)
polygon_sfg_1
# POLYGON ((1 1, 1 3, 3 5, 3 1, 1 1))

polygon_list_2 = list(rbind(c(4, 1), c(4, 5), c(5, 5), c(5, 1), c(4, 1)))
polygon_sfg_2 = st_polygon(polygon_list_2)
polygon_sfg_2
# POLYGON ((4 1, 4 5, 5 5, 5 1, 4 1))

## sfc (Simple feature columns)
polygon_sfc = st_sfc(polygon_sfg_1, polygon_sfg_2)

polygon_sfc
# Geometry set for 2 features
# geometry type:  POLYGON
# dimension:      XY
# bbox:           xmin: 1 ymin: 1 xmax: 5 ymax: 5
# CRS:            NA
# POLYGON ((1 1, 1 3, 3 5, 3 1, 1 1))
# POLYGON ((4 1, 4 5, 5 5, 5 1, 4 1))




st_geometry_type()함수로 기하 유형을 확인해보면 2개 면의 집합인 하나의 객체임을 확인할 수 있습니다.



st_geometry_type(polygon_sfc)
# [1] POLYGON POLYGON
# 18 Levels: GEOMETRY POINT LINESTRING POLYGON MULTIPOINT MULTILINESTRING MULTIPOLYGON ... TRIANGLE

 




  (3) 단순 지리특성 기하 점과 면을 st_sfc() 함수로 합쳐서

      한개의 단순 지리특성 칼럼(1 sfc) 객체로 만들기


이번에는 (1)번에서 만들었던 점(Point)과 (2)번에서 만들었던 면(Polygon)을 st_sfc() 함수를 사용해서 하나의 단순 지리특성 칼럼 객체로 합쳐보겠습니다. 


이처럼 서로 다른 기하 형태도 st_sfc() 함수로 하나의 단순 지리특성 칼럼 객체로 합칠 수 있습니다.



## combining different geometry types
point_polygon_sfc = st_sfc(point_sfg_1, polygon_sfg_1)


point_polygon_sfc
# Geometry set for 2 features
# geometry type:  GEOMETRY
# dimension:      XY
# bbox:           xmin: 1 ymin: 1 xmax: 3 ymax: 5
# CRS:            NA
# POINT (1 2)
# POLYGON ((1 1, 1 3, 3 5, 3 1, 1 1))




st_geometry_type(point_polygon_sfc)
# [1] POINT   POLYGON
# 18 Levels: GEOMETRY POINT LINESTRING POLYGON MULTIPOINT MULTILINESTRING MULTIPOLYGON ... TRIANGLE

 



이번 포스팅이 많은 도움이 되었기를 바랍니다.

행복한 데이터 과학자 되세요!  :-)



728x90
반응형
Posted by Rfriend
,