Skip to content

The flexpolyline R package provides a binding to the C++ implementation of the flexible polyline encoding by HERE. The encoding is a lossy compressed representation of a list of coordinate pairs or coordinate triples.

License

Notifications You must be signed in to change notification settings

munterfi/flexpolyline

Repository files navigation

Flexible Polyline Encoding for R

CRAN status CRAN checks CRAN downloads R-CMD-check 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")

To install 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::flexpolyline::polyline_encode and hf::flexpolyline::polyline_decode):

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

The flexpolyline package integrates with the popular sf package for working with spatial data in R, which is built on the concept of simple features. The package provides additional functions for encoding and decoding sf objects directly:

sfg <- sf::st_linestring(line, dim = "XYZ")

encode_sf(sfg)

decode_sf("BlBoz5xJ67i1BU1B7PUzIhaUxL7YU")

Contributing

  • Contributions to this package are 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.

About

The flexpolyline R package provides a binding to the C++ implementation of the flexible polyline encoding by HERE. The encoding is a lossy compressed representation of a list of coordinate pairs or coordinate triples.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published