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.

master
Go to file
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
R
 
 
 
 
man
 
 
src
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

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:

  • Decoding gives reliable results up to a precision of 7 digits. The tests are also limited to this range.
  • 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

You can install the released version of flexpolyline from CRAN with:

install.packages("flexpolyline")

Install the development version from GitHub with:

remotes::install_github("munterfinger/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")

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

Packages

No packages published
You can’t perform that action at this time.