Упрощение полилинии

avatar
Mandroid
8 апреля 2018 в 08:55
400
1
1

Я пытаюсь понять этот код.

Я понимаю, что код пытается уточнить геометрию на основе допуска. По сути, он проверяет, меньше ли расстояние между двумя точками допуска или нет, и соответственно сохраняет/удаляет точки.

У меня есть вопрос. Точки представлены в формате lat-long. Код просто вычисляет квадрат евклидова расстояния (простая квадратная формула, которую мы все знаем). Разве это не неправильный подход, поскольку расстояние на основе широты и долготы отличается от евклидова расстояния?

Во-вторых, какова единица допуска? В этом тесте используется значение допуска 5. Как это значение подходит сюда?

Источник

Ответы (1)

avatar
Thomas
8 апреля 2018 в 09:19
2

Насколько я понимаю, код пытается уточнить геометрию на основе допуска. По сути, он проверяет, меньше ли расстояние между двумя точками допуска или нет, и соответственно сохраняет/удаляет точки.

Да, это первый шаг, на втором шаге он пытается найти последовательные строки, которые (в основном) совпадают, и объединяет их.

У меня есть вопрос. Точки представлены в формате lat-long. Код просто вычисляет квадрат евклидова расстояния (простая квадратная формула, которую мы все знаем). Разве это не неправильный подход, поскольку расстояние на основе широты и долготы отличается от евклидова расстояния?

(c) 2017, Vladimir Agafonkin
Simplify.js, a high-performance JS polyline simplification library

Код не претендует на пригодность для координат широта-долгота. Хотя они выглядят как 2D-координаты, они представляют собой точки в 3D-пространстве; Я не вижу, чтобы код был создан для этого.

С другой стороны, не должно быть слишком сложно переписать его в 3D-пространство. И все, что вам нужно сделать, это преобразовать точки широты и долготы в 3D-координаты

.

Во-вторых, какова единица допуска? В тесте используется значение допуска 5. Как это значение подходит сюда?

пиксели, мили, не имеет значения. Та же единица, что и точки, которые вы проходите.