1 데이터프레임 → .shp

1.1 raster 팩키지 1

raster 팩키지를 활용하여 SpatialPointsDataFrame 혹은 SpatialPolygonsDataFrame 객체를 데이터프레임으로부터 다소 복잡할 수 있는 과정을 거쳐 생성시킬 수 있다.

library(sf)
library(tidyverse)

# 데이터프레임 생성 -----
site_f <- c("a","b","c","d")
prop_v <- c(0.88,0.48,0.15,0.47)
lat <- c(44.22,38.38,33.35,43.48)
lng <- c(-124.45, -123.70, -124.40, -124.05)
sample_df <- cbind.data.frame(lat, lng, site_f, prop_v)

# shapefile 생성
library(raster)
sample_coord <- sample_df
coordinates(sample_coord) = ~lng+lat
proj4string(sample_coord) <- CRS("+proj=longlat +datum=WGS84")

sample_shp <- spTransform(sample_coord, CRS("+proj=longlat"))

sample_shp
class       : SpatialPointsDataFrame 
features    : 4 
extent      : -124.45, -123.7, 33.35, 44.22  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +ellps=WGS84 
variables   : 2
names       : site_f, prop_v 
min values  :      a,   0.15 
max values  :      d,   0.88 
plot(sample_shp)

1.2 sf 팩키지 2

sf 팩키지를 사용할 경우 st_as_sf() 함수를 사용하게 되면 데이터프레임을 넣고 coord = 인자를 지정하고 crs = 좌표계를 설정하게 되면 앞서와 동일하게 하지만 간결하게 sf 데이터프레임 객체를 생성시킬 수 있다.

sample_sf <- st_as_sf(
  sample_df, 
  coords = c('lng', 'lat'),
  crs = "+init=epsg:4326")

sample_sf
Simple feature collection with 4 features and 2 fields
geometry type:  POINT
dimension:      XY
bbox:           xmin: -124.45 ymin: 33.35 xmax: -123.7 ymax: 44.22
epsg (SRID):    4326
proj4string:    +proj=longlat +datum=WGS84 +no_defs
  site_f prop_v              geometry
1      a   0.88 POINT (-124.45 44.22)
2      b   0.48  POINT (-123.7 38.38)
3      c   0.15  POINT (-124.4 33.35)
4      d   0.47 POINT (-124.05 43.48)
plot(sample_sf)