SASGIS - SAS.Планета
View Issue Details
0003237SAS.Планета[All Projects] Багpublic09-06-2017 07:0009-05-2019 19:57
Alezy80 
zed 
normalminoralways
resolvedfixed 
Windows7Ultimate
160707 
181221181221 
0003237: Неверный размер некоторых иконок при экспорте в KML файл
При экспорте иконок задается неверное масштабирование. Если при создании точки выбран размер иконок 32х32, а исходный файл иконки имеет размер 64х64, то при экспорте иконке задается масштаб <scale>0.5</scale>. Если размер исходного файла 32х32, то масштаб ставится равным 1.
При последующем импорте в Google Earth иконки с масштабом 0,5 выглядят очень мелкими, т.к. GE и другие программы (проверял еще на Android в программе Locus) применяют этот коэффициент масштабирования не к исходному файлу иконки, а к базовому квадратику, в который надо вписать иконку.
Поэтому при экспорте надо игнорировать разрешение файла иконки, а коэффициент масштабирования вычислять как отношение заданного размера иконки к базовому, который можно принять как константу 32х32, или вынести в настройки
1. Создал несколько точек, установил разные иконки (1.png и ancienttemple.png)
2. Экспортировал в KMZ файл
3. Открыл KMZ в Google Earth (или Android Locus)
Точка с иконкой 1.png стала малюсенькой, а точка с иконкой ancienttemple.png осталась нормальной, скриншот GE прилагаю
No tags attached.
has duplicate 0003290closed zed Экспорт в kml: проблемы с отображением иконок и текста в Google Earth 
related to 0003343resolved zed При экспорте в KML масштаб шрифта метки считается относительно НЕ дефолтного шрифта 
related to 0003339resolved zed Определённым образом форматировать KML-файл при экспорте меток 
png 01ExportToGE.png (33,953) 09-06-2017 07:00
https://bugtracker.sasgis.org/file_download.php?file_id=2160&type=bug
png

? Test.kmz (8,619) 20-06-2017 06:29
https://bugtracker.sasgis.org/file_download.php?file_id=2161&type=bug
png GECustomIcons.png (116,528) 20-06-2017 06:30
https://bugtracker.sasgis.org/file_download.php?file_id=2162&type=bug
png
Issue History
09-06-2017 07:00Alezy80New Issue
09-06-2017 07:00Alezy80File Added: 01ExportToGE.png
09-06-2017 08:03vdemidovStatusnew => confirmed
09-06-2017 08:03vdemidovProduct Version.Nightly => 160707
09-06-2017 08:03vdemidovTarget Version => 181221
09-06-2017 08:05vdemidovNote Added: 0017984
09-06-2017 09:06Alezy80Note Added: 0017985
19-06-2017 19:47zedNote Added: 0017989
20-06-2017 06:29Alezy80Note Added: 0017990
20-06-2017 06:29Alezy80File Added: Test.kmz
20-06-2017 06:30Alezy80File Added: GECustomIcons.png
22-06-2017 14:48zedNote Added: 0017991
20-10-2017 20:36zedRelationship addedhas duplicate 0003290
01-12-2017 07:25vdemidovTarget Version181221 => 190707
14-06-2018 13:10zedNote Added: 0018322
14-06-2018 14:59zedNote Added: 0018323
14-06-2018 14:59zedAssigned To => zed
14-06-2018 14:59zedStatusconfirmed => feedback
15-06-2018 15:03cyclerNote Added: 0018328
15-06-2018 15:10zedNote Added: 0018329
15-06-2018 15:54cyclerNote Added: 0018330
15-06-2018 16:06zedNote Added: 0018331
15-06-2018 17:09cyclerNote Added: 0018332
15-06-2018 17:20zedRelationship addedrelated to 0003343
15-06-2018 17:21zedRelationship addedrelated to 0003339
09-05-2019 19:56zedStatusfeedback => resolved
09-05-2019 19:56zedFixed in Version => 181221
09-05-2019 19:56zedResolutionopen => fixed
09-05-2019 19:57zedTarget Version190707 => 181221

Notes
(0017984)
vdemidov   
09-06-2017 08:05   
Если это действительно так, то исправить очень просто. Достаточно в u_ExportMarks2KML.pas в методе AddPointAppearence заменить получение ширины
 width := VAppearanceIcon.Pic.GetMarker.Size.X;
просто на константу 32
(0017985)
Alezy80   
09-06-2017 09:06   
Как быстрофикс - хорошее решение.
А потом можно развить идею иконок, чтобы в настройках программы задавался базовый размер, а размер самих иконок задавался масштабирующим коэффициентом. Так сделано в Google Earth, там три размера иконок (маленькие, средние, большие) и такой подход поможет пользователям с HiDPI экранами
(0017989)
zed   
19-06-2017 19:47   
Что-то я не совсем понимаю, как надо сделать, чтобы получилось правильно для иконок любых размеров? Чему равен этот "базовый квадратик" который использует GE? Всегда 32x32 pix?

Дефолтная булавка в GE имеет размер 64x64 pix и по дефолту она сохраняется с масштабом 1,1. И там нету выбора между маленькой/средней/большой иконкой. Она там одна.
(0017990)
Alezy80   
20-06-2017 06:29   
В настройках GE можно выбрать базовый размер иконки, например "нормальный" имеет размер квадрата 32х32. Иконки вписываются в этот базовый квадратик по *меньшей стороне* в независимости от разрешения исходного файла. А потом иконке можно еще ввести масштабирующий коэффициент, который будет увеличивать размер базового квадратика. Для примера я создал 4 иконки разного размера, прикладываю KMZ и скриншот, как он отображается в GE
(0017991)
zed   
22-06-2017 14:48   
Понятно. Но по-моему, заменять на константу нельзя, поскольку есть программы (GlobalMapper, к примеру), которые отображают иконки так же как и SAS - производят абсолютное масштабирование иконок, а не относительное. Поэтому, надо делать отдельную настройку, чтобы было всем хорошо.

Интересно, что в описании kml формата нет ни слова о том, что возможны различные типы масштабирования иконок.
(0018322)
zed   
14-06-2018 13:10   
А какие размеры базового квадрата должны быть для "маленького" и "большого" размера? По моим прикидкам где-то 28 и 38 pix.

У экспорта в kml появился конфиг, так что сейчас можно вынести в настройки способ, каким образом считать этот scale.
(0018323)
zed   
14-06-2018 14:59   
Сделал настройку (Управление метками - иконка с синей шестерёнкой), тестируйте. Возможно, для small надо задать базовый размер 16 (сейчас 28), а для Large - 64 (сейчас 38) и наверное надо как-то альтернативно считать масштаб у шрифта. Сейчас он считается относительно 14 ppt. В общем, жду отзывов и предложений.
(0018328)
cycler   
15-06-2018 15:03   
У меня почему-то при любых настройках Icon Scale (может стоит в русской версии "масштаб иконки" сделать?) выскакивает в kml магическое число <scale>0.785714285714286</scale>.
Очень бы хотелось, чтобы там было <scale>1</scale>, тогда одной ручной операцией перед публикацией в веб станет меньше. По идее, такое поведение должно быть при настройке icon style -> absolute, но почему-то не срабатывает..
(0018329)
zed   
15-06-2018 15:10   
Единица будет если в SAS указан размер иконок 32 pix и в настройках экспорта выбрано Medium.

> <scale>0.785714285714286</scale>
Это похоже на масштаб у шрифта, а не иконки. Как я писал выше, шрифт я пока не трогал.
(0018330)
cycler   
15-06-2018 15:54   
Не заметил что один scale относится к <IconStyle> и он везде 1, а вот scale внутри <LabelStyle> всегда почему-то 0.785714285714286. Похоже на какую-то багу.

Может LabelStyle/scale всегда при выгрузке в kml выставить равный единице? Потому что нет ситуаций в kml, требующих изменения масштаба текста. Или есть? Но если есть, то логичнее его делать более человечным, типа 0.5, 1.5, 2... А если и есть, то как он всё же такой посчитался?

Опытным путём нашёл что шрифт 14 в свойствах иконки даёт scale равный 1 (да, надо было внимательнее читать предыдущие заметки).
То есть размер 14 принят за базовый размер шрифта, и иные шрифты обсчитываются относительно него. Но ведь в иных прогах и вебе, где будет использоваться Kml-файл может быть какой угодно другой базовый размер шрифта.
Так что мне кажется логичным указать 1 для LabelStyle и не париться.

Наверное это уже к другому тикету?
(0018331)
zed   
15-06-2018 16:06   
> Потому что нет ситуаций в kml, требующих изменения масштаба текста.
Ситуации могут быть разные. Кому-то может захотеться сделать шрифт мельче или крупнее дефолтного. Если формат позволяет, то почему бы и нет?

Сейчас в SAS дефолтный размер шрифта 11-й, а при экспорте в kml масштаб считается относительно 14-го. Вот тут по-моему наблюдается несоответствие и считать надо так же относительно 11-го.

> Наверное это уже к другому тикету?
По-хорошему, да - надо открыть отдельный тикет и там этот вопрос обсуждать.
(0018332)
cycler   
15-06-2018 17:09   
На тему масштаба текста создал тикет http://www.sasgis.org/mantis/view.php?id=3343