High-Performance Open-Source Archive
Yep. In a few of my other libraries I’ve made use of sf
objects, but without importing the sf library itself. This
is by design because sf is quite a ‘heavy’ library.
Therefore I’ve written / copied these methods for constructing the
sf objects across a few different libraries.
So I thought it would be useful to have these in one place. And here they are.
sf objects?Yes and No.
These functions do not perform any validity checks on the geometries. Nor do they set Coordinate Reference Systems, EPSG, PROJ4 or precision attributes.
What they do is convert R and Rcpp objects (vectors, matrices and
data.frames) into the correct sf class structure, so you
can then assign these values yourself.
Yes. Your data has to be ordered before coverting to
sf.
They’re on the website. GO NOW!
(however, here’s a taster)
df <- data.frame(
id = c(1,1,1,1,1,2,2,2,2,2)
, x = c(1,2,2,1,1,3,4,4,3,3)
, y = c(1,1,2,2,1,3,3,4,4,3)
)
df$val <- letters[df$id]
sfheaders::sf_linestring( df, x = "x", y = "y", linestring_id = "id", keep = TRUE )
# Simple feature collection with 2 features and 2 fields
# geometry type: LINESTRING
# dimension: XY
# bbox: xmin: 1 ymin: 1 xmax: 4 ymax: 4
# epsg (SRID): NA
# proj4string: NA
# id val geometry
# 1 1 a LINESTRING (1 1, 2 1, 2 2, ...
# 2 2 b LINESTRING (3 3, 4 3, 4 4, ...
sfheaders::sf_polygon( df, x = "x", y = "y", polygon_id = "id" , keep = TRUE )
# Simple feature collection with 2 features and 2 fields
# geometry type: POLYGON
# dimension: XY
# bbox: xmin: 1 ymin: 1 xmax: 4 ymax: 4
# epsg (SRID): NA
# proj4string: NA
# id val geometry
# 1 1 a POLYGON ((1 1, 2 1, 2 2, 1 ...
# 2 2 b POLYGON ((3 3, 4 3, 4 4, 3 ...
Need mirroring services?
Contact our team at info@vpspulse.com.
Mirror powered by VPSpulse
Infrastructure sponsored by VPSPulse & Secure Payments by ArionPay.