|
4 / 4 / 1
Регистрация: 01.08.2014
Сообщений: 10
|
|
Аппроксимация\Интерполяция массива координат01.08.2014, 17:22. Показов 10543. Ответов 11
Метки нет (Все метки)
Есть массив координат X,Y. Вида int[][]. Строю по данным точкам ломаную линию, но получается очень огромное количество лишних точек (массив мне передают, моя задача как раз его уменьшить). Т.е. например на одном прямом отрезке еще 100-200 лишних точек. Строю по порядку от 0 ... до N, точки просто соединяю. Как мне упростить максимально этот массив, чтобы осталось несколько точек просто. Т.е. погрешность меня не сильно волнует, общее черты надо сохранить. Читал про аппроксимацию и интерполяцию, но не очень пойму как применить. Дайте ссыль или направление куда копать хоть. Спасибо заранее.
2
|
|
| 01.08.2014, 17:22 | |
|
Ответы с готовыми решениями:
11
Интерполяция и аппроксимация Аппроксимация и интерполяция Интерполяция и аппроксимация функций |
|
Заблокирован
|
||
| 01.08.2014, 18:13 | ||
|
Вы хотите отбросить максимальное количесвто значений, при которых аппроксимирующая функция будет иметь приемлемый вид? Если да, то интерполяция тут не нужна. Почему не взять определенную небольшую окрестость, и отбрасывать все, что в неё входит Может лучше поясните на конкретном примере?
1
|
||
|
26 / 26 / 29
Регистрация: 11.02.2012
Сообщений: 101
|
|
| 01.08.2014, 18:25 | |
|
Dimka_Zar, Вот простое решение, скользящее среднее. Надо отсортировать массив, а потом построить ломанную из новых точек. По оси X решите что будет 100 точек например(i=0 до 99). А значение по Yi будет равняться сумме по Y всех входящих точек расположенных между Yi и Yi-1 деленное на число точек между Yi и Yi-1
0
|
|
| 01.08.2014, 19:16 | |
|
Snaf,
Скользящее среднее сглаживает резкие колебания. Dimka_Zar, Достаточно подобрать некую погрешность и если допусти в ней находится 10 точек, то просто напросто все кроме первой и последней на отрезке удалить
0
|
|
|
4 / 4 / 1
Регистрация: 01.08.2014
Сообщений: 10
|
|
| 04.08.2014, 10:40 [ТС] | |
|
Всем спасибо за ответы, уезжал на выходные не смог ответить. Поясню все таки задачу более подробней. У меня есть массив географических координат даже не int, а double[Latitude][Longitude]. По данным точкам я строю маршрут на карте. Точек очень много в силу не зависящих от меня обстоятельств. Так вот если по всем строить, то выходят одни точки, ниже пример. Далее я могу выбрать точки, через каждые 10м например. Получается более красиво. Но их все таки очень много. Хотелось бы получить очень упрощенную траекторию как я нарисовал красным на последнем рисунке. Могу перевести в декартовы координаты это все, потому изначально вопрос про X и Y ставил.
0
|
|
|
4 / 4 / 1
Регистрация: 01.08.2014
Сообщений: 10
|
|
| 04.08.2014, 10:45 [ТС] | |
|
Копал в сторону измерения азимута, но разница настолько мала..что получается криво. XRoy, как именно погрешность такую реализовать? Или дайте статьи примеры почитать, я не ленивый, просто не пойму пока что в какую сторону двигаться.
0
|
|
|
Заблокирован
|
|
| 04.08.2014, 12:16 | |
|
Dimka_Zar, Так намного понятнее. Вы не могли бы прикрепить исходный массив координат (X,Y)? На первый взгляд, можно взять обычную окружность, но хотелось бы проверить.
0
|
|
|
4 / 4 / 1
Регистрация: 01.08.2014
Сообщений: 10
|
|
| 04.08.2014, 13:03 [ТС] | |
|
Ev_Hyper, на данный момент я не переводил еще в декартовы. Я только вот нашел пример с применением алгоритма Рамера—Дугласа—Пекера. Вот на JS написали решение именно для моей задачи. Самый нижний пример по ссылке.
А вот в таком виде (txt файл) я получаю выгрузку из другой части программы эти координаты. Прикрепил его.
0
|
|
|
4 / 4 / 1
Регистрация: 01.08.2014
Сообщений: 10
|
|
| 04.08.2014, 13:04 [ТС] | |
|
Сейчас попробую переделать с JS на C# и отпишу тут о результате. Спасибо за помощь!
0
|
|
|
298 / 260 / 108
Регистрация: 26.10.2012
Сообщений: 810
|
||||||
| 04.08.2014, 14:15 | ||||||
1
|
||||||
|
4 / 4 / 1
Регистрация: 01.08.2014
Сообщений: 10
|
||||||||||||||||
| 04.08.2014, 15:18 [ТС] | ||||||||||||||||
Сообщение было отмечено Ev_Hyper как решение
Решение
jetyb, а в GetError() что будет?
Добавлено через 48 минут Всем спасибо! Решил я задачу, взял отсюда нижний пример, написанный на JS. Переписал для своей задачи и C#. Кому интересно - решение ниже. Вот класс, в который я закидываю координаты одной точки:
Вызываю все это List<Point> End_Points = GDouglasPeucker(GetListPoints(), 30); И вот он End_Points, мои урезанный точки.
1
|
||||||||||||||||
|
4 / 4 / 1
Регистрация: 01.08.2014
Сообщений: 10
|
|
| 04.08.2014, 15:28 [ТС] | |
|
Вот результирующий файл) Такой же, как я утром думал получить
1
|
|
| 04.08.2014, 15:28 | |
|
Помогаю со студенческими работами здесь
12
Delphi - Аппроксимация. Интерполяция? Аппроксимация. Квадратичная интерполяция Интерполяция и аппроксимация функции Интерполяция и аппроксимация данных Аппроксимация.Линейная интерполяция Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
|
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений.
9TO2GP2bpX4
a42b81fb172ffc12ca589c7898261ccb/
https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/
Слева синяя линия -. . .
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|