The hardware and bandwidth for this mirror is donated by METANET, the Webhosting and Full Service-Cloud Provider.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]metanet.ch.
The package contains two Rcpp functions, which
bind directly to the C++ implementation of the flexible polyline
encoding. These functions target a tight interface from C++ to R and
reflect the arguments and return values of their counterparts
(hf::encode_polyline
and hf::decode_polyline
)
in the C++ implementation.
Encoding a line is straight forward by passing a matrix (column order
is longitude, latitude) with its coordinates to encode()
.
The default precision value is set to 5
. If a matrix with
two columns is provided, the third dimension is automatically set to
"ABSENT"
:
library(flexpolyline)
line2d <- matrix(
c(8.69821, 50.10228,
8.69567, 50.10201,
8.69150, 50.10063,
8.68752, 50.09878),
ncol = 2, byrow = TRUE
)
(encodes2d <- encode(line2d, precision = 5))
#> [1] "BFoz5xJ67i1B1B7PzIhaxL7Y"
If a matrix with three columns is passed, a line with a third
dimension is encoded. The type of the third dimension can be passed to
the encoding and supports the following selection, that are specified
via an integer value via the third_dim
argument:
By default the precision of the third dimension
third_dim_precision
is set to the same value as the
precision value for the longitude and latitude dimensions.
line3d <- matrix(
c(8.69821, 50.10228, 10.11111,
8.69567, 50.10201, 20.22222,
8.69150, 50.10063, 30.33333,
8.68752, 50.09878, 40.44444),
ncol = 3, byrow = TRUE
)
(encodes3d <- encode(line3d, precision = 5, third_dim = 3, third_dim_precision = 5))
#> [1] "B1Voz5xJ67i1Bu629B1B7Pu629BzIhau629BxL7Yu629B"
In order to decode the lines from above, the encoded line string is
passed to the decode()
function. The function detects from
the encoded string if it is a two-dimensional or three-dimensional
line:
decode(encodes2d)
#> LNG LAT
#> [1,] 8.69821 50.10228
#> [2,] 8.69567 50.10201
#> [3,] 8.69150 50.10063
#> [4,] 8.68752 50.09878
In the case of a three-dimensional line, the third column is named
after the name of the third dimension that was chosen during the
encoding (in this example "ELEVATION"
):
These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.