## ----echo=FALSE, include=FALSE------------------------------------------------
knitr::opts_chunk$set(fig.height = 4.5)
knitr::opts_chunk$set(fig.width = 6)
knitr::opts_chunk$set(collapse = TRUE)
if (file.exists("nc1.shp"))
	file.remove("nc1.shp", "nc1.dbf", "nc1.shx")

## -----------------------------------------------------------------------------
library(sf)
fname <- system.file("shape/nc.shp", package="sf")
fname
nc <- st_read(fname)

## ----eval=FALSE---------------------------------------------------------------
# > st_read("PG:dbname=postgis")
# Multiple layers are present in data source PG:dbname=postgis, reading layer `meuse'.
# Use `st_layers' to list all layer names and their type in a data source.
# Set the `layer' argument in `st_read' to read a particular layer.
# Reading layer `meuse' from data source `PG:dbname=postgis' using driver `PostgreSQL'
# Simple feature collection with 155 features and 12 fields
# geometry type:  POINT
# dimension:      XY
# bbox:           xmin: 178605 ymin: 329714 xmax: 181390 ymax: 333611
# epsg (SRID):    28992
# proj4string:    +proj=sterea +lat_0=52.15616055555555 ...
# Warning message:
# In eval(substitute(expr), envir, enclos) :
#   automatically selected the first layer in a data source containing more than one.

## ----eval=FALSE---------------------------------------------------------------
# > st_layers("PG:dbname=postgis")
# Driver: PostgreSQL
# Available layers:
#   layer_name geometry_type features fields
# 1      meuse         Point      155     12
# 2   meuse_sf         Point      155     12
# 3       sids Multi Polygon      100     14
# 4  meuse_tbl         Point      155     13
# 5 meuse_tbl2         Point      155     13
# >

## ----eval=FALSE---------------------------------------------------------------
# st_read("PG:dbname=postgis", "sids")

## ----eval=FALSE---------------------------------------------------------------
# st_read(fname, stringsAsFactors = FALSE)

## -----------------------------------------------------------------------------
options(stringsAsFactors = FALSE)
st_read(fname)

## ----eval=FALSE---------------------------------------------------------------
# st_write(nc, "nc1.shp")

## -----------------------------------------------------------------------------
st_write(nc, dsn = "nc1.shp", layer = "nc.shp", driver = "ESRI Shapefile")

## ----eval=FALSE---------------------------------------------------------------
# st_write(st_as_sf(meuse), "PG:dbname=postgis", "meuse",
#     layer_options = "OVERWRITE=true")

## ----eval=FALSE---------------------------------------------------------------
# library(RPostgreSQL)
# conn = dbConnect(PostgreSQL(), dbname = "postgis")
# meuse = st_read(conn, "meuse")
# meuse_1_3 = st_read(conn, query = "select * from meuse limit 3;")
# dbDisconnect(conn)

## ----eval=FALSE---------------------------------------------------------------
# conn = dbConnect(PostgreSQL(), dbname = "postgis")
# st_write(conn, meuse, drop = TRUE)
# dbDisconnect(conn)

## -----------------------------------------------------------------------------
st_point(c(0,1))
st_linestring(matrix(0:9,ncol=2,byrow=TRUE))

## -----------------------------------------------------------------------------
x = st_linestring(matrix(0:9,ncol=2,byrow=TRUE))
str = st_as_text(x)
x

## -----------------------------------------------------------------------------
st_as_sfc(str)

## -----------------------------------------------------------------------------
x = st_linestring(matrix(0:9,ncol=2,byrow=TRUE))
(x = st_as_binary(x))
class(x)

## -----------------------------------------------------------------------------
rawToHex(x)

## -----------------------------------------------------------------------------
x = st_as_binary(st_sfc(st_point(0:1), st_point(5:6)))
st_as_sfc(x)

## -----------------------------------------------------------------------------
methods(st_as_sf)
methods(st_as_sfc)

## -----------------------------------------------------------------------------
library(sp)
data(meuse)
coordinates(meuse) = ~x+y
m.sf = st_as_sf(meuse)
opar = par(mar=rep(0,4))
plot(m.sf)

## -----------------------------------------------------------------------------
x = st_sfc(st_point(c(5,5)), st_point(c(6,9)), crs = 4326)
as(x, "Spatial")