SASGIS - SAS.Планета
View Issue Details
0002407SAS.Планета[All Projects] Багpublic10-04-2014 18:5512-07-2014 16:10
8orms 
zed 
normalmajorunable to reproduce
resolvedfixed 
Windows7Professional
131111 
141111141111 
0002407: Экспорт в формат kml/kmz меток состоящих из более чем 10000 отдельных линий выполняется медленно
Экспорт в kml метки состоящей из большого количества отдельных линий (в прикрепленном примере 389122 линии в одной метке) занимает очень большое время и требует много памяти.
No tags attached.
zip marks.zip (400,064) 11-04-2014 17:37
http://www.sasgis.org/mantis/file_download.php?file_id=1726&type=bug
? SASPlanet.elf (43,764) 11-04-2014 17:49
http://www.sasgis.org/mantis/file_download.php?file_id=1727&type=bug
7z 2407.7z (2,935,547) 12-07-2014 16:01
http://www.sasgis.org/mantis/file_download.php?file_id=1744&type=bug
Issue History
10-04-2014 18:558ormsNew Issue
11-04-2014 06:228ormsNote Added: 0014126
11-04-2014 08:49zedNote Added: 0014127
11-04-2014 09:41ParasiteProjectSACS.Планета => SAS.Планета
11-04-2014 09:41ParasiteNote Added: 0014128
11-04-2014 09:43zedNote Added: 0014129
11-04-2014 09:44zedStatusnew => feedback
11-04-2014 17:248ormsNote Added: 0014130
11-04-2014 17:248ormsStatusfeedback => new
11-04-2014 17:26zedNote Added: 0014131
11-04-2014 17:358ormsNote Added: 0014132
11-04-2014 17:37zedFile Added: marks.zip
11-04-2014 17:38zedNote Added: 0014133
11-04-2014 17:49zedFile Added: SASPlanet.elf
11-04-2014 17:51zedNote Added: 0014134
11-04-2014 20:268ormsNote Added: 0014135
18-04-2014 06:40vdemidovStatusnew => confirmed
18-04-2014 06:40vdemidovProduct Version => 131111
18-04-2014 06:40vdemidovTarget Version => 24xxxx
18-04-2014 06:40vdemidovSummaryНе выполняется экспорт категории меток в формате kml/kmz => Экспорт в формат kml/kmz меток состоящих из более чем 10000 отдельных линий выполняется медленно
18-04-2014 06:40vdemidovDescription Updatedbug_revision_view_page.php?rev_id=6022#r6022
18-04-2014 06:40vdemidovSteps to Reproduce Updatedbug_revision_view_page.php?rev_id=6024#r6024
18-04-2014 06:43vdemidovNote Added: 0014152
10-07-2014 19:52zedNote Added: 0014403
10-07-2014 19:56zedNote Edited: 0014403bug_revision_view_page.php?bugnote_id=14403#r6157
11-07-2014 04:58vdemidovNote Added: 0014406
11-07-2014 05:388ormsNote Added: 0014407
11-07-2014 06:11vdemidovNote Added: 0014408
12-07-2014 14:49zedNote Added: 0014415
12-07-2014 14:58vdemidovNote Added: 0014416
12-07-2014 16:01zedFile Added: 2407.7z
12-07-2014 16:08zedNote Added: 0014417
12-07-2014 16:08zedNote Edited: 0014417bug_revision_view_page.php?bugnote_id=14417#r6159
12-07-2014 16:10zedStatusconfirmed => resolved
12-07-2014 16:10zedFixed in Version => 141111
12-07-2014 16:10zedResolutionopen => fixed
12-07-2014 16:10zedAssigned To => zed
12-07-2014 16:10zedTarget Version24xxxx => 141111

Notes
(0014126)
8orms   
11-04-2014 06:22   
Одну группу из 60 линий экспортирует в течении 3 секунд, а из соседней группы одну метку экспортирует в течении 7 секунд ( при экспорте всей группы наглухо виснет и начинает жрать оперативку 400 - 500 - 600 и более МБ.
(0014127)
zed   
11-04-2014 08:49   
Проект точно SACS?

И наверное, не помешал бы пример sml, на котором воспроизводится проблема.
(0014128)
Parasite   
11-04-2014 09:41   
Перенесено из SACS в SAS согласно мыла пользователя.
(0014129)
zed   
11-04-2014 09:43   
8orms
Укажите, какой конкретно версией вы пользуетесь и приложите sml.
(0014130)
8orms   
11-04-2014 17:24   
v.140303.7919
v.140407.8030
 SML? надо немножко погуглить.
(0014131)
zed   
11-04-2014 17:26   
Ваши метки программа хранит в sml файлах в корне с exe файлом.
(0014132)
8orms   
11-04-2014 17:35   
http://dropmefiles.com/R66PM
http://dropmefiles.com/sMuQ8
(0014133)
zed   
11-04-2014 17:38   
А в чём была сложность заархивировать и приаттачить их сразу сюда? Ну да ладно.
(0014134)
zed   
11-04-2014 17:51   
Да, висит и потихоньку отжирает кучу памяти. Эврика детектит заморозку гуя.
(0014135)
8orms   
11-04-2014 20:26   
Не хочу показаться ламером, но как заморозить графический интерфейс?
(0014152)
vdemidov   
18-04-2014 06:43   
Увы, это не ошибка САС.Планеты, а просто проблемы используемого для формирования kml компонента TXMLDocument. Он просто работает медленно, а у вас очень специфические метки. Требуется полностью переделывать экспорт меток в kml, что бы он заработал быстрее.
(0014403)
zed   
10-07-2014 19:52   
(edited on: 10-07-2014 19:56)
Заметил особенность. Если сделать экспорт, а затем импорт этих меток в sml формат, то у путей сильно увеличивается количество точек и частей (в 2-4 раза).

Особенно это заметно на пути:

Категория: ГКИ
Имя: 102. КЛ 110 кВ Имеретинская - Ледовый Дворец*
Количество частей: 389122
Количество точек: 778244
Длина: 9059,69 км

после импорта он превращается вот в такое чудо на 3 миллиона точек и 1,5 миллиона частей:

Категория: Новая категория\ГКИ
Имя: 102. КЛ 110 кВ Имеретинская - Ледовый Дворец*
Количество частей: 1556482
Количество точек: 3112964
Длина: 36244,70 км

У пути изменилась так же и длина - в 4 раза.

Это я к тому, что кроме как медленного компонента для экспорта в kml, возможно тут присутствует какой-то баг с обработкой путей, который превращает и так медленный экспорт в невозможный. В sml оно кстати импортирует/экспортирует более-менее нормально (делал в два этапа: вначале все метки, кроме этой особенно большой, а вторым этапом обрабатывал отдельно эту метку).

Upd: А если отрыть отдельно экспортированный путь (подменой sml), то по нему вот такая информация:

Категория: \ГКИ
Имя: 102. КЛ 110 кВ Имеретинская - Ледовый Дворец*
Количество частей: 778242
Количество точек: 1556484
Длина: 18121,36 км

Явно где-то баг, который накручивает число точек.

(0014406)
vdemidov   
11-07-2014 04:58   
Нужно смотреть, а еще лучше написать тест, который будет воспроизводить багу, а уже потом фиксить. Я все никак не соберусь это дело тестами покрыть.
(0014407)
8orms   
11-07-2014 05:38   
Для информации (вдруг чем поможет):
Пути(полигоны) получены путем экспорта полилиний из Autocad civil 3d в KML.
Линии в KML получаются как множество идущий друг за другом отрезков, а не как сплошная полилиния. Чтобы превратить в одну полилинию можно воспользоваться GlobalMapper, но для этого сначала надо выгрузить нужные полилинии (на этом этапе все виснет).
(0014408)
vdemidov   
11-07-2014 06:11   
Оно не виснет, оно очень медленно работает. Подождите пару суток и оно закончит :) И та бага о которой говорит Zed максимум удваивает время. Но оно в любом случае очень большое получается из-за использования XMLDocument
(0014415)
zed   
12-07-2014 14:49   
Пофиксил багу с удвоением.

А по поводу XML: может попробовать заменить на реализацию из Alcinoe? Интерфейс там один-в-один, если не ошибаюсь. Правда на объектах и ансишных строках, зато обещают прирост скорости в 10-100 раз :)
(0014416)
vdemidov   
12-07-2014 14:58   
Та не вопрос. Если есть желание и время, то всегда пожалуйста. Не думаю, что станет хуже. На самом деле, там практически любой XMLWriter прокатит даже тупой самописный. DOM Дерево было нужно до того, как на вход стало приходить готовое дерево категорий.
(0014417)
zed   
12-07-2014 16:08   
Ого! Профит от замены компонента получился огромный. Весь этот тестовый набор получилось без проблем экспортировать в kml за ~ 10 секунд! Я такого, честно говоря, не ожидал и был приятно удивлён :)

И да, ансишные строки alcinoe совсем не помешали. Я как-то упустил, что в kml utf8, а не юникод, так что с этим всё в порядке.

P.S. Приаттачил скомпиленные бинарники: 2704.7z - тестируйте.