SASGIS - SAS.Планета
View Issue Details
0001624SAS.Планета[All Projects] Багpublic10-10-2012 23:2612-10-2012 09:11
AlexWhiter 
AlexWhiter 
normalminoralways
resolvedfixed 
121010 
131111131111 
0001624: Снижается качество изображения при экспорте в JNX
При экспорте в JNX тайлы из кэша подвергаются деформации, что особенно хорошо заметно на картах OSM.

Во вложении находится тайл из контейнера JNX, и ближайший тайл из кэша SAS.
Очень хорошо видно, что при экспорте в JNX произошло сжатие изображения по вертикали, а также в изображение попали части соседних тайлов.

Хотелось бы, что тайлы брались из кэша без изменений, чтобы максимально улучшить качество результата.
jnx, экспорт
png TileFromCache.png (26,190) 10-10-2012 23:26
http://www.sasgis.org/mantis/file_download.php?file_id=1091&type=bug
png

jpg TileFromJNX.jpg (50,751) 10-10-2012 23:27
http://www.sasgis.org/mantis/file_download.php?file_id=1092&type=bug
jpg

jpg Lanczos.jpg (48,915) 11-10-2012 05:37
http://www.sasgis.org/mantis/file_download.php?file_id=1094&type=bug
jpg
Issue History
10-10-2012 23:26AlexWhiterNew Issue
10-10-2012 23:26AlexWhiterTag Attached: jnx
10-10-2012 23:26AlexWhiterTag Attached: экспорт
10-10-2012 23:26AlexWhiterFile Added: TileFromCache.png
10-10-2012 23:27AlexWhiterFile Added: TileFromJNX.jpg
11-10-2012 04:24TolikDescription Updatedbug_revision_view_page.php?rev_id=4622#r4622
11-10-2012 04:31TolikNote Added: 0009498
11-10-2012 04:32TolikAssigned To => Tolik
11-10-2012 04:32TolikStatusnew => feedback
11-10-2012 05:30zedNote Added: 0009500
11-10-2012 05:30AlexWhiterNote Added: 0009501
11-10-2012 05:30AlexWhiterStatusfeedback => assigned
11-10-2012 05:37AlexWhiterFile Added: Lanczos.jpg
11-10-2012 05:38AlexWhiterNote Added: 0009502
11-10-2012 05:42zedNote Added: 0009503
11-10-2012 05:42AlexWhiterNote Added: 0009504
11-10-2012 05:50zedNote Added: 0009505
11-10-2012 05:54AlexWhiterNote Added: 0009506
11-10-2012 05:57TolikAssigned ToTolik =>
11-10-2012 05:57TolikStatusassigned => acknowledged
11-10-2012 06:10TolikNote Added: 0009507
11-10-2012 07:10GarlNote Added: 0009510
11-10-2012 09:47TolikNote Added: 0009511
11-10-2012 14:37AlexWhiterNote Added: 0009512
11-10-2012 16:50zedStatusacknowledged => resolved
11-10-2012 16:50zedFixed in Version => 131111
11-10-2012 16:50zedResolutionopen => fixed
11-10-2012 16:50zedAssigned To => AlexWhiter
11-10-2012 16:51zedProduct Version.Nightly => 121010
11-10-2012 16:51zedTarget Version => 131111
12-10-2012 06:55TolikNote Added: 0009517
12-10-2012 09:11GarlNote Added: 0009525

Notes
(0009498)
Tolik   
11-10-2012 04:31   
> Хотелось бы, что тайлы брались из кэша без изменений
Подождите, но на навигаторе эти тайлы оказываются привязанными правильно?
Значит, если просто взять и положить туда исходные тайлы, получится неправильная картинка, надо их точно так же масштабировать, только с лучшим качеством.

Скорее всего, при ресайзе используется алгоритм, выбранный в настройках программы (в закладке вид), и по умолчанию выбран самый плохой - Nearest. Попробуйте поменять на Lanczos (лучший из тех, что я знаю) и сделать такой же экспорт, покажите, что получится.
Если поможет, поэкспериментируйте с другими алгоритмами.


Кстати, эту настройку по умолчанию надо изменить: Nearest никуда не годится.
(0009500)
zed   
11-10-2012 05:30   
>при экспорте в JNX произошло сжатие изображения по вертикали
Произошла смена проекции с исходной на Lat/Lon. Смена проекции подразумевает физическое, если так можно сказать, деформирование изображения. Поэтому понятно, что смена проекции спутниковых снимков происходит более-менее безболезненно (хотя тут уже был где-то тикет про качество перепроецирования снимков из кэша GE, правда там работает обратный алгоритм - из Lat/Lon преобразуется в Меркатора), а вот для всех типов карт ситуация становится много хуже, что вы собственно и наблюдаете.

Помницца, когда мы прикручивали к САСу экспорт в JNX, вы ставили условие, что на вход должны приходить тайлы в проекции Lat/Lon. Я так и сделал.

Можете сами поэкспериментировать с проекциями, она меняется одной константой в TThreadExportToJnx.ProcessRegion в строке 162:
>VGeoConvert := FCoordConverterFactory.GetCoordConverterByCode(CGELonLatProjectionEPSG, CTileSplitQuadrate256x256);
где, вместо CGELonLatProjectionEPSG можете подставить любое значение из c_CoordConverter.pas - будет работать принудительное изменение исходной проекции тайлов в ту, которую укажете.
(0009501)
AlexWhiter   
11-10-2012 05:30   
Если взять исходные тайлы (прямо из кэша) и указать их правильные координаты, то и в навигаторе такие тайлы будут правильно показаны.

Именно таким образом работает конвертер MOBAT2JNX. И сейчас для получения JNX-карты нормального качества приходится скачивать тайлы через SAS, а потом натравливать MOBAT2JNX на каталог с кэшем.

Проблема не в качестве сжатия, а в том, что сжатие вообще применяется. Хотя и без этого самого сжатия вполне можно обойтись.
(0009502)
AlexWhiter   
11-10-2012 05:38   
Попробовал поменять тип сжатия на Lanczos. Получившийся тайл добавил прикрепил.

Стало, естественно, лучше.
Но хочется всё же докопаться до истины :)
(0009503)
zed   
11-10-2012 05:42   
Измените свой класс, чтобы он принимал на вход тайл и географические координаты его углов, выбросите вообще всякое преобразование проекции и используйте FMapType.GeoConvert для получение этих самых координат и будет вам щасце.
(0009504)
AlexWhiter   
11-10-2012 05:42   
> Помницца, когда мы прикручивали к САСу экспорт в JNX, вы ставили условие, что на вход должны приходить тайлы в проекции Lat/Lon. Я так и сделал.

Именно так, координаты тайлов должны быть в Lat/Lon.
Но есть 2 пути получить такие тайлы:
1. брать исходный тайл из кэша и пересчитывать его координаты в Lat/Lon;
2. трансформировать тайлы из кэша.

Если я правильно понимаю, сейчас используется как раз второй способ.
При использовании первого сами изображения не будут деформироваться, соответственно, качество картинки будет таким же, как в кэше.

Поправьте меня, пожалуйста, если я чего-то путаю или недопонимаю.
(0009505)
zed   
11-10-2012 05:50   
http://sasgis.org/wikisasiya/doku.php/%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B_%D0%BA%D0%BE%D0%BE%D1%80%D0%B4%D0%B8%D0%BD%D0%B0%D1%82_%D0%B2_%D1%81%D0%B0%D1%81.%D0%BF%D0%BB%D0%B0%D0%BD%D0%B5%D1%82%D0%B5

Lat/Lon это проекция, а система координат это WGS84 и в САСе, все координаты именно в этой системе координат. Т.е. никаких дополнительных преобразований делать не нужно.
(0009506)
AlexWhiter   
11-10-2012 05:54   
Ясно. Попробую поменять класс экспорта.
(0009507)
Tolik   
11-10-2012 06:10   
А дефолтный алгоритм всё-таки поменяйте, сразу уменьшится число вопросов.
(0009510)
Garl   
11-10-2012 07:10   
по мне так BOX - самый красивый алгоритм
(0009511)
Tolik   
11-10-2012 09:47   
Если бы кто-нибудь не поленился, попробовал все алгоритмы и выложил результаты... :)
(0009512)
AlexWhiter   
11-10-2012 14:37   
Обошелся тайлами из кэша, так что resampler'ы не понадобились :)
(0009517)
Tolik   
12-10-2012 06:55   
То есть теперь при экспорте в JNX ресайз вообще не используется?
(0009525)
Garl   
12-10-2012 09:11   
ага, и результат в 100500 раз лучше с первого взгляда.