Дуглас-Peucker-алгоритм - PullRequest
7 голосов
/ 06 июля 2011

У меня есть набор GPS-позиции в моей базе данных. Поскольку я хочу нарисовать их на карте, я наткнулся на «алгоритм Дугласа-Пекера», который удалит точки на линии, которые не являются «необходимыми» ...

Но везде, где я ищу, я обнаруживаю только алгоритм для пикселя X / Y - координаты, а не для широты и долготы ...

Поэтому я хочу преобразовать широту / долготу в двухмерный вид "X / Y"? Это возможно, или я думаю, что "слишком сложно"? :)

http://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm

Ответы [ 4 ]

2 голосов
/ 06 июля 2011

Если вы можете с уверенностью предположить, что GPS не двигался тысячи километров, и вы не слишком близко к северному / южному полюсу, вы можете приблизить координаты X / Y в километрах, умножив широту и долготу на постоянную , Широта всегда равна количеству километров на градус (около 10000 км - это 90 градусов от экватора к одному из полюсов). Для долготы умножьте на то же количество раз cos(latitude).

Однако вычислить трехмерные позиции по долготе / широте не намного сложнее: см. эту статью в Википедии о сферических координатах, как это сделать. азимут / высота - долгота / широта.

Это все еще приблизительное значение, так как вы берете расстояние по прямой линии, а не следуете за земной поверхностью, но для вашего приложения я не могу представить, что это проблема.

О, и спасибо за ссылку на алгоритм Дугласа Пекера ... Я собираюсь попробовать это в другой проблемной области.

1 голос
/ 06 июля 2011

Это зависит от того, какой должна быть «прямая линия».Если вам нужна прямая линия на карте, вы должны преобразовать координаты широты / долготы, используя правильную проекцию (вероятно, проекцию Меркатора , но в Википедии есть полный список ).Однако, если вы ищете самую прямую линию на поверхности (то есть ту, которая совпадает с большим кругом ), вам не нужно применять какие-либо преобразования к вашему lat /длинные значения.

0 голосов
/ 28 января 2014

Вот отличное прохождение в PHP: http://www.phpriot.com/articles/reducing-map-path-douglas-peucker-algorithm

0 голосов
/ 20 августа 2011

Я задал этот вопрос некоторое время назад, и полученный ответ позволил мне написать реализацию в java для этого проекта .Это в EarthGeometry.java

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...