Flexible Polyline Encoding

Binding to the C++ implementation of the flexible polyline encoding by HERE < https://github.com/heremaps/flexible-polyline>. 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.


Flexible Polyline Encoding for R

CRAN status CRAN checks CRAN downloads R build status Codecov test coverage CodeFactor

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

License

  • The flexpolyline R package is licensed under GNU GPL v3.0.
  • The C++ implementation by HERE Europe B.V. is licensed under MIT.

Reference manual

It appears you don't have a PDF plugin for this browser. You can click here to download the reference manual.

install.packages("flexpolyline")

0.3.0 by Merlin Unterfinger, 4 years ago


https://munterfi.github.io/flexpolyline/, https://github.com/munterfi/flexpolyline/


Report a bug at https://github.com/munterfi/flexpolyline/issues/


Browse source code at https://github.com/cran/flexpolyline


Authors: Merlin Unterfinger [aut, cre] , HERE Europe B.V. [aut, cph] (Flexible polyline encoding C++ implementation)


Documentation:   PDF Manual  


GPL-3 license


Imports Rcpp, sf

Suggests testthat, stringr, knitr, rmarkdown, covr

Linking to Rcpp


Imported by hereR.


See at CRAN