SASGIS - SAS.Планета
View Issue Details
0000670SAS.Планета[All Projects] Хотелкаpublic22-04-2011 12:2431-01-2013 06:22
gpsMax 
 
normalminorhave not tried
confirmedopen 
110418 
29xxxx 
0000670: Функция смены направления полигонов
Полигон можно обводить как по часовой стрелке, так и против.

Хотелось бы иметь возможность изменять направление полигонов при редактировании. Кнопку этой функции логичее всего добавить в мини-панельку редактирования.

Тупо меняются местами точки: вторая меняется с последней, третья с предпоследней, и т.д. Первая остаётся на месте, средняя, если есть, остаётся на месте.
полигон, полигоны, пути, треки
Issue History
22-04-2011 12:24gpsMaxNew Issue
22-04-2011 12:25gpsMaxDescription Updatedbug_revision_view_page.php?rev_id=979#r979
22-04-2011 12:26gpsMaxTag Attached: полигоны
22-04-2011 12:26gpsMaxTag Attached: пути
22-04-2011 12:27gpsMaxTag Attached: полигон
22-04-2011 12:27gpsMaxTag Attached: треки
22-04-2011 12:27gpsMaxStatusnew => acknowledged
31-05-2011 14:36vdemidovNote Added: 0002795
31-05-2011 14:36vdemidovStatusacknowledged => confirmed
31-05-2011 14:36vdemidovTarget Version => 29xxxx
31-05-2011 16:01gpsMaxNote Added: 0002796
31-05-2011 16:01gpsMaxNote Edited: 0002796bug_revision_view_page.php?bugnote_id=2796#r1367
31-05-2011 18:31vdemidovNote Added: 0002797
29-01-2013 12:28vasketsovNote Added: 0010465
29-01-2013 13:11vdemidovSummaryФункция смены направления полигонов и путей => Функция смены направления полигонов
29-01-2013 13:11vdemidovDescription Updatedbug_revision_view_page.php?rev_id=5117#r5117
29-01-2013 13:17vdemidovNote Added: 0010467
29-01-2013 14:54vasketsovNote Added: 0010468
31-01-2013 06:22vdemidovNote Added: 0010476

Notes
(0002795)
vdemidov   
31-05-2011 14:36   
Да. Нужно будет добавить всяких операций над метками. Плюс желательно этот список операций сделать расширяемым с помощью плагинов.
(0002796)
gpsMax   
31-05-2011 16:01   
Можно и операций. Чтобы не забыть, потом сделать хотелки и плагины:
- Прореживание (большая тема, много способов, куча настроек)
- Сглаживание (большая тема, коррелирует с прореживанием)
- Превращение полигона в окружность (глянуть в исходниках в JOSM)
- Удаление клубков в местах стоянок
- Удаление пешеходных кусков по скорости
- Удаление непешеходных кусков

Это всё плагинами, конечно. А вот менять направление можно и в самой программе, поскольку там несложно и без вариантов.

(0002797)
vdemidov   
31-05-2011 18:31   
Ну для примера реализации плагина как раз реверс линии и подойдет.
(0010465)
vasketsov   
29-01-2013 12:28   
>Тупо меняются местами точки
Или ещё более тупо - признак направления для массива координат. Меняется один байт. Ибо направление обхода (покуда на него не завязано ничего, типа направление дырок обратно направлению внешних кусков в шейпах) ничего общего с самими данными (координатами) не имеет.
(0010467)
vdemidov   
29-01-2013 13:17   
>Или ещё более тупо - признак направления для массива координат.
Плохая идея. Этот признак придется учитывать везде. В том числе при экспорте. Поменять порядок точек проще.
(0010468)
vasketsov   
29-01-2013 14:54   
>Плохая идея
Не хуже, чем ворочать лишний раз туда-сюда трек из кучи кусков недельной поездки с gps-логгера.
Впрочем я ещё для себя не решил как лучше сделать.

>Этот признак придется учитывать везде
Хм. Вообще-то как сейчас сделано - только при редактировании и надо учитывать, при экспорте - фигня. Если даже BoundRect по треку или полигону определяется заново - один фиг всё проходится, ничего не просядет ни на йоту. При показе на карте - пофигу (даже если показывать стрелочку - она замечательно инвертируется простым BOOL-ом, по логике всё то же самое, что просто при изменении настройки показа направления трека). При чтении и сохранении в БД отдельный признак забацать труда не представляет. На порядок проще, чем отломанный BoundRect.

А вот при экспорте покуда это не шейпы, на полигоны вообще пофигу. А треки экспортируются поточечно. И один фиг for или while там запускать, вот и весь учёт.

>Поменять порядок точек проще
Если имеется ввиду собственно процедура перемены порядка - то нет, байт инвертируется проще.
Если имеется ввиду вцелом реализация - то по сравнению с необходимостью переписывания внутренностей координат векторов (BoundRect отломаны, дырки не сделаны, автоопределялка полигон/полилиния очевидно не работает для многокусковых полигонов,...) это такая мелочь, что право слово заикаться об этом в контексте "проще" несерьёзно.
(0010476)
vdemidov   
31-01-2013 06:22   
Вот именно из-за того что ты хочешь съэкономить десяток милисекунд на очень редкую операцию редактирования, а взамен в куче мест учитывать дополнительный признак, я и забрал у тебя права на запись в репозиторий.