#include "geometries/geometries/dimensions.hpp"
cppFunction( depends = "geometries" , includes = '#include "geometries/shapes/shapes.hpp"' , code = ' SEXP polygon( SEXP df, SEXP geometry_cols, SEXP line_id ) { return geometries::shapes::to_listMat( df, geometry_cols, line_id ); } ' )
## Count Coordinates ## ## either counts the number of coordinates in a given geometry, cppFunction( depends = 'geometries' , includes = '#include "geometries/geometries/dimensions.hpp"' , code = ' R_xlen_t count_coordinates( SEXP x ) { R_xlen_t count = 0; geometries::coordinates::count_coordinates( x, count ); return count; } ' ) df <- data.frame( x = 1:10 , y = 10:1 , z = 21:30 , m = 30:21 , val = letters[1:10] , id = c( rep(1,5), rep(2,5) ) ) poly <- polygon( df, c("x","y"), c("id") ) count_coordinates( poly ) # [1] 10
## Coordinate indices ## ## gives the start and end indices of geometries cppFunction( depends = 'geometries' , includes = '#include "geometries/geometries/dimensions.hpp"' , code = ' Rcpp::IntegerMatrix coordinate_indices( SEXP x ) { return geometries::coordinates::coordinate_indices( x ); } ' ) x <- 1:2 coordinate_indices( x ) # [,1] [,2] # [1,] 0 0 m <- matrix(1:6, ncol = 2) coordinate_indices( m ) # [,1] [,2] # [1,] 0 2 l <- list( matrix(1:20, ncol = 2 ) , matrix(1:6, ncol = 2) , matrix(1:10, ncol = 2) ) coordinate_indices( l ) # [,1] [,2] # [1,] 0 9 # [2,] 10 12 # [3,] 13 17