An open API service indexing awesome lists of open source software.

https://github.com/odlp/simplify_rb

Polyline simplification library. Ruby port of Simplify.js.
https://github.com/odlp/simplify_rb

polygon polyline polyline-simplification

Last synced: 11 months ago
JSON representation

Polyline simplification library. Ruby port of Simplify.js.

Awesome Lists containing this project

README

          

# SimplifyRb - Polyline simplification

[![Build Status](https://circleci.com/gh/odlp/simplify_rb.svg?style=shield)](https://circleci.com/gh/odlp/simplify_rb) [![Gem Version](https://badge.fury.io/rb/simplify_rb.svg)](https://badge.fury.io/rb/simplify_rb)

SimplifyRb is a Ruby port of [simplify.js](https://github.com/mourner/simplify-js) by Vladimir Agafonkin.

You can use this gem to reduce the number of points in a complex polyline / polygon, making use of an optimized Douglas-Peucker algorithm.

## Usage

```ruby
require 'simplify_rb'

points = [
{ x: 51.5256, y: -0.0875 },
{ x: 51.7823, y: -0.0912 }
]
tolerance = 1
high_quality = true

SimplifyRb::Simplifier.new.process(points, tolerance, high_quality)
```

```points```: An array of hashes, containing x,y coordinates.

```tolerance```: (optional, 1 by default): Affects the amount of simplification that occurs (the smaller, the less simplification).

```high_quality```: (optional, False by default): Flag to exclude the distance pre-processing. Produces higher quality results when true is passed, but runs slower.

### Custom points

You can also use custom points, such as a struct or object which responds to `:x` and `:y`, rather than hashes:

```ruby
CustomPointStruct = Struct.new(:x, :y)

custom_points = [
CustomPointStruct.new(51.5256, -0.0875),
CustomPointStruct.new(51.7823, -0.0912)
]

tolerance = 1
high_quality = true

SimplifyRb::Simplifier.new.process(custom_points, tolerance, high_quality)
```

## Installation

Add this line to your application's Gemfile:

gem 'simplify_rb'

And then execute:

$ bundle

Or install it yourself as:

$ gem install simplify_rb