SASGIS - SAS.Планета
View Issue Details
0003339SAS.Планета[All Projects] Хотелкаpublic30-05-2018 17:0315-06-2018 17:22
cycler 
zed 
normalfeatureN/A
resolvedfixed 
.Nightly 
181221181221 
0003339: Определённым образом форматировать KML-файл при экспорте меток
Определённым образом форматировать экспортируемый KML-файл, а именно:
- оставлять только 6 знаков после десятичной точки для координат (сейчас 12 знаков, например 56.137743160286. Это даст точность +/- 10см)
- отсортировать xml-ноды по алфавиту по значению тега <name>

При выгрузке меток в KML отрезать от значения координат каждой метки лишние знаки, чтобы оставалось только 6 знаков после десятичной точки.

Прогонять все ноды <Placemark> через функцию сортировки по значению ноды <Placemark> -> <name>
Зачем - работаем группой над большими треками, выгружаем на гитхаб. Если формат файла будет структурированным, то легче сможем отслеживать правки отдельных участников. Сокращение десятичных знаков нужно для уменьшения и так большого размера файла.
В случае если сообщество посчитает внедрение озвученной хотелки излишеством, были бы благодарны за указание на способ самостоятельно внести коррективы в код SAS.
Спасибо!
kml, VIP, XML, трек, форматирование, экспорт
related to 0003237resolved zed Неверный размер некоторых иконок при экспорте в KML файл 
related to 0003343resolved zed При экспорте в KML масштаб шрифта метки считается относительно НЕ дефолтного шрифта 
Issue History
30-05-2018 17:03cyclerNew Issue
30-05-2018 17:05cyclerTag Attached: kml
30-05-2018 17:05cyclerTag Attached: XML
30-05-2018 17:05cyclerTag Attached: трек
30-05-2018 17:05cyclerTag Attached: экспорт
30-05-2018 17:05cyclerTag Attached: форматирование
30-05-2018 18:25zedNote Added: 0018304
01-06-2018 05:30cyclerNote Added: 0018308
01-06-2018 05:57vdemidovNote Added: 0018309
02-06-2018 14:43cyclerNote Added: 0018310
02-06-2018 14:46cyclerNote Edited: 0018310bug_revision_view_page.php?bugnote_id=18310#r7295
02-06-2018 15:49zedNote Added: 0018311
07-06-2018 19:50zedAssigned To => zed
07-06-2018 19:50zedStatusnew => assigned
07-06-2018 19:50zedTarget Version => 181221
07-06-2018 19:51zedTag Attached: VIP
07-06-2018 19:58zedNote Added: 0018315
09-06-2018 21:01zedNote Added: 0018316
13-06-2018 11:44zedNote Added: 0018321
13-06-2018 11:44zedStatusassigned => feedback
15-06-2018 17:18cyclerNote Added: 0018333
15-06-2018 17:18cyclerStatusfeedback => assigned
15-06-2018 17:21zedRelationship addedrelated to 0003237
15-06-2018 17:21zedRelationship addedrelated to 0003343
15-06-2018 17:22zedStatusassigned => resolved
15-06-2018 17:22zedFixed in Version => 181221
15-06-2018 17:22zedResolutionopen => fixed

Notes
(0018304)
zed   
30-05-2018 18:25   
Я бы не сказал, что это излишество, но очевидно, что делать это надо через конфиг. Чтобы тот кому нужно особое поведение, мог поднастроить экспорт под себя.

Способ сделать это самостоятельно:
- установить Delphi 2007 - Tokyo (какая больше нравится)
- клонировать репо с сорцами SAS и установить зависимости
- внести правки и сделать pull-реквест

Или можете написать отдельную утилиту которая будет проходиться по готовому kml и обрезать знаки после запятой, делать сортировку, и всё ,что вы там ещё можете придумать для оптимизации своих внутренних процессов. Не обязательно же весь функционал интегрировать именно в SAS.
(0018308)
cycler   
01-06-2018 05:30   
Могли бы ткнуть пожалуйста в сорцах, где именно происходит выгрузка метки в Kml?
(0018309)
vdemidov   
01-06-2018 05:57   
Ну, экспорт в kml живет в u_ExportMarks2KML.pas, как ни странно.
Форматирование координат в текст - функция PointToKml
Сортировку папок и меток добавлять нужно в AddTree и AddMarks соответственно.
(0018310)
cycler   
02-06-2018 14:43   
(edited on: 02-06-2018 14:46)
Мне хватит мозгов вот тут добавить round и 6 знаков после запятой

(\sas_team-sas.planet.src-be7c71bcf893\Src\Vector\u_ExportMarks2KML.pas)
function PointToKml(const APoint: TDoublePoint): AnsiString; inline;
begin
  Result := R2AnsiStrPoint(APoint.X) + ',' + R2AnsiStrPoint(APoint.Y) + ',0 ';
end;

Но не хватит мозгов добавить round с Х знаками после запятой, которое будет браться из конфига с подстановкой дефолтного значения если в конфиге об этом ничего нет, и с проверкой, чтобы это было именно число в разумных пределах (5-12)
Мог бы пожалуйста кто-то это вместо меня сделать?

(0018311)
zed   
02-06-2018 15:49   
Если готовы заплатить за свою хотелку, то я могу ей заняться. Пишите мне на [email protected].
(0018315)
zed   
07-06-2018 19:58   
От cycler получено 2000 руб, так что берусь за реализацию.

Помимо форматирования координат и сортировки, буду делать опцию для возможности задать абсолютный путь (или url) к иконке. Всеми этими настройками можно будет управлять из гуя.
(0018316)
zed   
09-06-2018 21:01   
Уже можно тестировать через редактирование SASPlanet.ini:

[ExportMarks2KML]
; 0 - выкл; 1 - вкл
UseCoordFormatting=1
; число знаков после запятой (допустимые значения: [4..12])
CoordPrecision=6
; 0 - не сортировать; 1 - asc; 2 - desc
SortingType=1
; 0 - выкл; 1 - вкл
UseAbsPathToIcon=1
AbsPathToIcon=https://example.com/path-to-icons/

По-умолчанию, думаю можно включить прямую сортировку и лимит числа знаков после запятой - 6.
(0018321)
zed   
13-06-2018 11:44   
Сделал гуи. Вызывается из "Управления метками" (иконка с синей шестерёнкой на панели).
(0018333)
cycler   
15-06-2018 17:18   
Работает отлично! Спасибо Большое!!!

По мотивам этого тикета всплыла проблема с некорректным подсчетом масштаба текста иконки, оформил её в тикет http://www.sasgis.org/mantis/view.php?id=3343

Дополнительная связь с тикетом http://www.sasgis.org/mantis/view.php?id=3237 (определение масштабов иконок)