Flexible Polyline Encoding.
Flexible Polyline Encoding for R
The flexpolyline R package provides a binding to the C++ implementation of the flexible polyline encoding by HERE. The flexible polyline encoding is a lossy compressed representation of a list of coordinate pairs or coordinate triples. The encoding is achieved by: (1) Reducing the decimal digits of each value; (2) encoding only the offset from the previous point; (3) using variable length for each coordinate delta; and (4) using 64 URL-safe characters to display the result. The flexible polyline encoding is a variant of the Encoded Polyline Algorithm Format by Google.
Note:
- The order of the coordinates (lng, lat) does not correspond to the original C++ implementation (lat, lng). This enables direct conversion to
sf
objects, without reordering the columns. - The encoding is lossy, this means the encoding process could reduce the precision of your data.
Installation
Install the released version of flexpolyline from CRAN:
install.packages("flexpolyline")
Or get the development version from GitHub:
remotes::install_github("munterfi/flexpolyline")
C++ binding
Encoding and decoding in R is straight forward by using encode()
and decode()
. These functions are binding to the flexpolyline C++ implementation and reflect the arguments and return values of their counterparts (hf::encode_polyline
and hf::decode_polyline
):
line <- matrix(
c(8.69821, 50.10228, 10,
8.69567, 50.10201, 20,
8.69150, 50.10063, 30,
8.68752, 50.09878, 40),
ncol = 3, byrow = TRUE
)
encode(line)
decode("BlBoz5xJ67i1BU1B7PUzIhaUxL7YU")
Simple feature support
A common way to deal with spatial data in R is the sf package, which is built on the concept of simple features. The functions encode_sf()
and decode_sf()
provide an interface that support the encoding of sf objects:
sfg <- sf::st_linestring(line, dim = "XYZ")
encode_sf(sfg)
decode_sf("BlBoz5xJ67i1BU1B7PUzIhaUxL7YU")
Contributing
- Contributions to this package are very welcome, issues and pull requests are the preferred ways to share them. Please see the Contribution Guidelines.
- This project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
References
- Flexible Polyline Encoding by HERE
- Encoded Polyline Algorithm Format
- Simple Features for R
- Inspired by the googlePolylines package
License
- The flexpolyline R package is licensed under GNU GPL v3.0.
- The C++ implementation by HERE Europe B.V. is licensed under MIT.