View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0002213SAS.Планета[All Projects] Хотелкаpublic16-10-2013 12:0706-03-2016 06:37
Reporterzed 
Assigned Tozed 
PrioritynormalSeverityfeatureReproducibilityalways
StatusresolvedResolutionfixed 
PlatformOSOS Version
Product Version131111 
Target Version140303Fixed in Version140303 
Summary0002213: При экспорте в RMaps (SQLite) нельзя изменить проекцию карты
DescriptionСейчас при экспорте идёт простое копирование тайлов из хранилища в SQLite, и соответственно невозможно сделать экспорт в проекцию отличающуюся от проекции карты, а некоторые программы понимают только гугловскую проекцию меркатора на сферу и не понимают других проекций.
TagsRMaps, SQLite, экспорт
Attached Files

- Relationships
related to 0002159resolvedvasketsov SACS.Планета При экспорте в RMaps (SQLite) не учитывается проекция карты 
has duplicate 0002208closed SAS.Планета 131011.7548 Экспорт карты Яндекс в Rmaps (Sqlite) дает карту со смещением около 20 км. 
related to 0001823resolvedzed SAS.Планета Наложение слоёв при экспорте в RMaps (SQLite) 
related to 0001409resolvedvasketsov SAS.Планета Хотелось бы экспорта в программу RMAPS для Android 
related to 0002980closedzed SAS.Планета Добавлять опцию "ellipsoid=1" при экспорте в RMaps и не перепроецировать тайлы Яндекса и подобных 

-  Notes
(0013074)
vdemidov (manager)
16-10-2013 12:39

И какое решение предлагается? Перепроецировать карту при экспорте?
(0013075)
vdemidov (manager)
16-10-2013 12:40

Или для начала исключить из выбора все карты с негугловской проекцией?
(0013076)
zed (manager)
16-10-2013 12:41

Перепроецировать, как это сделано в других экспортах.
(0013077)
vdemidov (manager)
16-10-2013 12:47

Ну добавь. Вроде бы дело не особо сложное.
(0013078)
zed (manager)
16-10-2013 12:49

Сложное ввиду того, что используется один родительский класс (TThreadExportEnumerator) для нескольких экспортов.
(0013079)
vdemidov (manager)
16-10-2013 12:54

Ну так выкинь его. Он только в этом экспорте и используется. Там все равно нужно по-другому экспорты переделывать.
(0013080)
zed (manager)
16-10-2013 13:00

Ну, т.е. это надо полностью переделать экспорт в RMaps :(
Мне это пока не интересно. Для себя я там однажды по-быстрому набыдлокодил и нормально экспортнул, когда надо было. А приводить это к нормальному виду мне как-то лень. Тем более, что ковырял я тогда SACS...
(0013081)
vdemidov (manager)
16-10-2013 13:15

Значит на ближайшее время поставлю ограничение на выбор карт, а там может доброволец найдется.
(0013082)
zed (manager)
16-10-2013 13:19

Как вариант - могу залить свой код. Пускай живёт в качестве временного костыля.
(0013083)
vdemidov (manager)
16-10-2013 13:21

Если там уж совсем костыли, то не нужно.
(0013084)
zed (manager)
16-10-2013 13:26
edited on: 16-10-2013 13:32

Там такие сомнительные моменты:

VJpegSaver := TLibJpegTileSaver.Create(95, TInternalPerformanceCounterFake.Create);

VFactory := TCoordConverterFactorySimple.Create;

Костыльность в том, что эти интерфейсы нужно пробрасывать снаружи. Плюс, появляется безусловная рекомпрессия тайлов, даже для тех карт, у которых не нужно изменять проекцию. И всё сохраняется в jpeg.

(0013085)
vdemidov (manager)
16-10-2013 13:34

Тогда не нужно.
(0013117)
usver (reporter)
24-10-2013 05:59

Это не баг, это хотелка. Существуют программы для Android (например, Locus и Rmaps), которые прекрасно работают с картами RMaps (SQLite) с эллиптической проекцией. Поэтому не нужно вводить ограничение на выбор карт.
(0013371)
zed (manager)
02-12-2013 17:07

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

Автоматическое перепроецирование сделал прошаренным - если экспортируем только карту (или только слой) и проекция карты/слоя совпадает с гугловской, то происходит прямое копирование тайлов, даже если галочка Direct tiles copy не установлена.

Всех заинтересованных прошу активно протестировать фичу. Если что - пишите сюда, тикет ещё пока не закрываю.
(0013372)
usver (reporter)
03-12-2013 06:20

Большое спасибо, это очень нужная функция, давно ждал ее появления.

К сожалению, первый блин получился комом. Сейчас функция экспорта получает неправильные границы выделенной области. Причем получение границ зависит от того, как выбираются зумы на вкладке экспорта - если выбрать диапазон зумов двойным щелчком, то границы выделенной области правильные, а если выбирать индивидуальные зумы одиночными щелчками, то экспортируются тайлы из верхнего левого угла карты.
(0013373)
usver (reporter)
03-12-2013 06:25

Дополнительная хотелка.

Не могли бы Вы заодно добавить экспорт в формат MBTiles (https://github.com/mapbox/mbtiles-spec)?
Этот формат очень похож на RMaps - такая же база sqlite3, только с другими названиями столбцов. Отличий от RMaps всего три: другое расширение файла (mbtiles вместо sqlitedb); зумы указываются как «z», а не как «17-z» (т. е. Zmbtiles=17-Zrmaps); координаты «y» тайлов отсчитываются не от верхнего края карты, а от нижнего (т. е. Ymbtiles=2^z-1-Yrmaps).

Мне кажется, что из-за сходства форматов нет смысла создавать отдельный экспорт в MBTiles. Можно переименовать экспорт «RMaps (SQLite)» в «RMaps/MBTiles (SQLite)», а на саму вкладку экспорта добавить галочку «MBTiles».
(0013374)
zed (manager)
03-12-2013 07:52
edited on: 03-12-2013 07:54

> К сожалению, первый блин получился комом
Пофиксил.

> Дополнительная хотелка.
Уже есть: 0001379

(0013376)
usver (reporter)
03-12-2013 09:54

Протестировал смену проекции и наложение слоя - все замечательно работает.

Два пожелания:

Сейчас при наложении слоя и при смене проекции графический формат создаваемых тайлов соответствует графическому формату тайлов основной карты.
Если исходные тайлы в формате PNG, то получается очень большой выходной файл. Хотелось бы иметь возможность выбора графического формата создаваемых тайлов и задания степени сжатия.

Если выбрана опция «Recreate target database», и целевая база данных существует и открыта в другой программе, то SAS не может ее удалить и записывает новые тайлы в существующий файл. Мне кажется, было бы лучше, если бы в этом случае экспорт прерывался и выводилось сообщение «Невозможно удалить целевую базу данных».

По поводу мой хотелки:
То, что есть в SACS - это совсем не то, что я прошу реализовать.
Во-первых, в SACS своя уникальная реализация MBtiles, которая не соответствует официальной спецификации, поэтому созданные в SACS файлы можно использовать только в самой SACS, для других программ они не подходят.
Во-вторых, в SACS кэш, а не экспорт, т. е. недоступны функции смены проекции и наложения слоя.
(0013377)
zed (manager)
03-12-2013 10:02

> Хотелось бы иметь возможность выбора графического формата
Да, тоже про это думал. Может сделаю.

> Если выбрана опция «Recreate target database»
Угу, надо фиксить.

> По поводу мой хотелки
А я про SACS ничего не говорил. Про MBTiles есть отдельная хотелка, вот туда все свои мысли и пишите.
(0013378)
zed (manager)
03-12-2013 11:04

Исправил ошибки, добавил настройки выходного формата тайлов. В аттаче exe для тестов.
(0013381)
usver (reporter)
03-12-2013 16:28
edited on: 03-12-2013 16:30

Экспорт слоя наложения без основной карты.

Если выбрать карту «No», а потом поставить флажок «Direct tiles copy», то список выбора слоя становится недоступным. Мне кажется, было бы логичнее, если бы при выборе карты «No» и установке флажка «Direct tiles copy» список выбора слоя оставался активным, а список выбора карты становился недоступным.

При экспорте гибридного слоя яндекса (без основной карты) с преобразованием проекции прозрачные тайлы получаются только при настройках формата изображения Auto или PNG (32 бит)/сжатие 1. При выборе PNG с другой глубиной цвета или другим сжатием «прозрачная» часть тайлов становится черной. Это ограничение формата PNG или баг?

(0013382)
zed (manager)
03-12-2013 17:00

> Если выбрать карту «No»
Логично.

> При экспорте гибридного слоя яндекса
Сжатие как бы не должно было влиять на прозрачность, а вот битность - да, влияет.
(0013383)
zed (manager)
03-12-2013 17:44

> Сжатие как бы не должно было влиять на прозрачность
Даже больше скажу, сжатие в пределах 1..4 должно давать идентичную картинку:

     case APngCompress of
        1..4:
          FFlag := PNG_Z_BEST_SPEED;
        5..7:
          FFlag := PNG_Z_DEFAULT_COMPRESSION;
        8, 9:
          FFlag := PNG_Z_BEST_COMPRESSION;
      else // 0
        FFlag := PNG_Z_NO_COMPRESSION;
(0013384)
vdemidov (manager)
03-12-2013 17:48

>Даже больше скажу, сжатие в пределах 1..4 должно давать идентичную картинку:
Оно всегда должно давать идентичную картинку. В png нет сжатия с потерпями.
(0013385)
zed (manager)
03-12-2013 17:50

Да, я имел в виду, что должны получаться бинарно-идентичные файлы :)
(0013386)
vdemidov (manager)
03-12-2013 17:51

>> Если выбрать карту «No»
> Логично.
Вообще то не очень логично. Теряется возможность экспортировать слои без пересохранения. Дизаблить выбор слоя нужно только если стоит Direct tiles copy и выбрана карта. А если выбрано No, то нужно давать возможность выбрать слой.
(0013387)
zed (manager)
03-12-2013 17:52

Ну так именно это и предлагалось и именно с этим я и согласился.
(0013388)
usver (reporter)
03-12-2013 17:53

Я пробовал 32 bit и сжатие 1 и 9. При сжатии 1 тайлы прозрачные, при сжатии 9 - черные.
(0013389)
zed (manager)
03-12-2013 17:55

Попробуйте ещё 5 и 0?
(0013390)
usver (reporter)
03-12-2013 18:07
edited on: 03-12-2013 18:09

Полные результаты для 32-bit:
Сжатие Размер Прозрачность
0 1460Мб прозрачный
1 140Мб прозрачный
5 139Мб прозрачный
9 101Мб черный

А ни как нельзя 8-бит прозрачными сделать? В слое наложения богатых цветов нет, лишние биты только место зря занимают. Причем много места. У 8-бит с сжатием 1 раземер 41 Мб

(0013391)
zed (manager)
03-12-2013 20:00

> 9 101Мб черный
Весьма странно. Есть возможность проверить в другой программе? У меня на тестовом png не воспроизводится.

> А ни как нельзя 8-бит прозрачными сделать?
Вообще, задумывалось что там должна сохраняться прозрачность, но по факту похоже что это не всегда работает. И это связано с ограничением используемой библиотеки, которая не умеет из 32-х битных битмапок сразу делать 8-битные прозрачные.
(0013392)
usver (reporter)
04-12-2013 05:50

> У меня на тестовом png не воспроизводится.
Я перепутал файлы. Для 32-бит получаются прозрачные тайлы при любом сжатии (как Вы и писали).

Два пожелания:
Если в зуме есть пропущенные тайлы, то при наложении и смене проекции берутся тайлы из предыдущих зумов. Можно ли сделать эту опцию отключаемой?

Настройки формата изображения становятся недоступными, если выбрано прямое копирование - это правильно. Однако они остаются активными в тех случаях, когда срабатывает «автоматическое прямое копирование» (экспорт только карты или только слоя с гугловской проекцией). Наверное, нужно делать эти настройки недоступными и в этих случаях.
(0013399)
zed (manager)
04-12-2013 20:16

> Можно ли сделать эту опцию отключаемой?
Можно.

> Наверное, нужно делать эти настройки недоступными и в этих случаях.
Поизменял поведение контролов, плюс теперь дополнительно если по каким-то причинам будет разрешено прямое копирование, то текст соответствующего чекбокса будет выделен жирным. Вне зависимости от включённого состояния этого самого чекбокса.
(0013405)
usver (reporter)
05-12-2013 18:32

В последней ночнушке все стало просто идеально - и функционал и интерфейс. Ни замечаний, ни пожеланий у меня не осталось. Еще раз спасибо!
(0013408)
zed (manager)
08-12-2013 13:56

>> А ни как нельзя 8-бит прозрачными сделать?
> Вообще, задумывалось что там должна сохраняться прозрачность

Ввиду некоторой доработки сохранялки gif/png-8bit 0002289, чёрный фон теперь должен стать прозрачным.

- Users who viewed this issue
User List Anonymous (3863x), Erelen (1x), vdemidov (1x), zed (2x), pfg21 (2x), Garl (2x), Ivan_Zykov (1x)
Total Views 3872
Last View 21-02-2020 12:48

- Issue History
Date Modified Username Field Change
16-10-2013 12:07 zed New Issue
16-10-2013 12:07 zed Issue generated from: 0002159
16-10-2013 12:07 zed Relationship added related to 0002159
16-10-2013 12:07 zed Project SACS.Планета => SAS.Планета
16-10-2013 12:08 zed Relationship added has duplicate 0002208
16-10-2013 12:39 vdemidov Note Added: 0013074
16-10-2013 12:40 vdemidov Note Added: 0013075
16-10-2013 12:41 zed Note Added: 0013076
16-10-2013 12:47 vdemidov Note Added: 0013077
16-10-2013 12:49 zed Note Added: 0013078
16-10-2013 12:54 vdemidov Note Added: 0013079
16-10-2013 13:00 zed Note Added: 0013080
16-10-2013 13:15 vdemidov Note Added: 0013081
16-10-2013 13:15 vdemidov Status new => confirmed
16-10-2013 13:16 vdemidov Target Version => 131111
16-10-2013 13:19 zed Note Added: 0013082
16-10-2013 13:21 vdemidov Note Added: 0013083
16-10-2013 13:26 zed Note Added: 0013084
16-10-2013 13:32 zed Note Edited: 0013084 View Revisions
16-10-2013 13:34 vdemidov Note Added: 0013085
24-10-2013 05:59 usver Note Added: 0013117
24-10-2013 07:43 vdemidov Category Баг => Хотелка
24-10-2013 07:43 vdemidov Target Version 131111 => 29xxxx
24-10-2013 07:43 vdemidov Summary При экспорте в RMaps (SQLite) не учитывается проекция карты => При экспорте в RMaps (SQLite) нельзя изменить проекция карты
24-10-2013 07:43 vdemidov Description Updated View Revisions
24-10-2013 09:52 vdemidov Summary При экспорте в RMaps (SQLite) нельзя изменить проекция карты => При экспорте в RMaps (SQLite) нельзя изменить проекцию карты
24-10-2013 12:17 vdemidov Tag Attached: RMaps
24-10-2013 12:17 vdemidov Tag Attached: экспорт
06-11-2013 10:59 vdemidov Severity major => feature
22-11-2013 22:35 vdemidov Product Version .Nightly => 131111
02-12-2013 17:07 zed Note Added: 0013371
02-12-2013 17:07 zed Assigned To => zed
02-12-2013 17:07 zed Status confirmed => assigned
02-12-2013 17:08 zed Target Version 29xxxx => 140303
03-12-2013 06:20 usver Note Added: 0013372
03-12-2013 06:25 usver Note Added: 0013373
03-12-2013 07:52 zed Note Added: 0013374
03-12-2013 07:52 zed Note Edited: 0013374 View Revisions
03-12-2013 07:54 zed Note Edited: 0013374 View Revisions
03-12-2013 08:17 vdemidov Tag Attached: SQLite
03-12-2013 08:32 zed Relationship added related to 0001823
03-12-2013 08:36 zed Relationship added related to 0001409
03-12-2013 09:54 usver Note Added: 0013376
03-12-2013 10:02 zed Note Added: 0013377
03-12-2013 11:02 zed File Added: SASPlanet.RMaps.Debug.7z
03-12-2013 11:04 zed Note Added: 0013378
03-12-2013 16:28 usver Note Added: 0013381
03-12-2013 16:30 usver Note Edited: 0013381 View Revisions
03-12-2013 17:00 zed Note Added: 0013382
03-12-2013 17:44 zed Note Added: 0013383
03-12-2013 17:48 vdemidov Note Added: 0013384
03-12-2013 17:50 zed Note Added: 0013385
03-12-2013 17:51 vdemidov Note Added: 0013386
03-12-2013 17:52 zed Note Added: 0013387
03-12-2013 17:53 usver Note Added: 0013388
03-12-2013 17:55 zed Note Added: 0013389
03-12-2013 18:07 usver Note Added: 0013390
03-12-2013 18:09 usver Note Edited: 0013390 View Revisions
03-12-2013 20:00 zed Note Added: 0013391
04-12-2013 05:50 usver Note Added: 0013392
04-12-2013 20:16 zed Note Added: 0013399
04-12-2013 20:16 zed File Deleted: SASPlanet.RMaps.Debug.7z
05-12-2013 18:32 usver Note Added: 0013405
06-12-2013 04:47 zed Status assigned => resolved
06-12-2013 04:47 zed Fixed in Version => 140303
06-12-2013 04:47 zed Resolution open => fixed
08-12-2013 13:56 zed Note Added: 0013408
06-03-2016 06:37 zed Relationship added related to 0002980



Copyright © 2007 - 2020 SAS.Planet Team