gm_geometries: geometries

Description Usage Arguments Value Examples

View source: R/geometries.R

Description

Converts a data.frame into a collection of geometries.

Usage

1
2
3
4
5
6
7
8
gm_geometries(
  obj,
  id_cols,
  geometry_cols,
  class_attributes = list(),
  close = FALSE,
  closed_attribute = FALSE
)

Arguments

obj

data.frame

id_cols

vector of id columns (either integer or string)

geometry_cols

vector of geometry columns (either integer or string)

class_attributes

class attributes to assign to each geometry

close

logical stating if the last row must equal the first row of each geometry

closed_attribute

logical, if true a 'has_been_closed' attribute is added to each matrix that has been closed.

Value

A list of matrices representing the input object, split by the id column(s).

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
df <- data.frame(
  id = c(1,1,1,1,1,2,2,2,2,2)
  , x = 1:10
  , y = 10:1
)

gm_geometries(
  df
  , id_cols = c(1L)
  , geometry_cols = c(2L,3L)
)

## Adding a class attribute
gm_geometries(
  df
  , id_cols = c(1)
  , geometry_cols = c(2,3)
  , list( class = "my_line_object" )
 )

## Adding a second ID column
df$id1 <- c(1,1,1,2,2,1,1,2,2,3)

gm_geometries(
  df
  , id_cols = c(1,4)
  , geometry_cols = c(2,3)
  , list( class = "my_multiline_object" )
)

## Using character column names
gm_geometries(
  df
  , id_cols = c("id","id1")
  , geometry_cols = c("x","y")
  )

## matrix input
m <- as.matrix( df )
gm_geometries(
  m
  , id_cols = c("id","id1")
  , geometry_cols = c("x","y")
  )

gm_geometries(
  m
  , id_cols = c(1,4)
  , geometry_cols = c(2,3)
 )

## use close to make the last row the same as the first row
df <- data.frame(
  id = c(1,1,1,1)
  , x = c(1,1,2,2)
  , y = c(1,2,2,1)
)

gm_geometries(
  df
  , id_cols = "id"
  , geometry_cols = c("x","y")
  , close = TRUE
)

geometries documentation built on Jan. 13, 2021, 8:12 p.m.