Страница 1 из 3

Определение типа кэша

СообщениеДобавлено: 15 фев 2017, 21:05
AlexWhiter
Приветствую!

В процессе реализации экспорта в растровый IMG столкнулся с необходимостью проверить, хранятся ли тайлы в кэше в виде отдельных файлов, или же свалены в базу данных.
В качестве временного решения вытаскиваю путь до тайла и сравниваю размер этого файла с размером TileData для этого тайла. Если размеры не совпадают, считаю, что тайлы хранятся в базе.
Однако, такой вариант мне не очень нравится, так как похож на велосипед с костылями.

Есть ли простой и, главное, быстрый способ узнать, что кэш для некоторого карто-источника хранит отдельные файлы для тайлов?

Re: Определение типа кэша

СообщениеДобавлено: 15 фев 2017, 23:27
garl
А если смотреть тип кэша для конкретно выбранной карты? в zmp например

Re: Определение типа кэша

СообщениеДобавлено: 15 фев 2017, 23:31
vdemidov
Увы никакого. Только по совокупности zmp и maps.ini можно определить тип кэша, формат файлов и проекцию. А без этой информации гарантировано правильно интерпретировать папку с кэшем невозможно. Я давно думаю добавить запись в папку с кэшем ини файл с этой информацией, но пока не сделал, потому что не определился с форматом.
ЗЫЖ Но вообще, вся эта информация есть в самой САС.Планете. Так что проще всего просто сделать еще один экспорт.

Re: Определение типа кэша

СообщениеДобавлено: 16 фев 2017, 08:16
AlexWhiter
Понятно, значит, пока оставлю так как есть.

Re: Определение типа кэша

СообщениеДобавлено: 16 фев 2017, 12:22
vdemidov
AlexWhiter писал(а):Понятно, значит, пока оставлю так как есть.

На всякий случай на помню, что кроме того файловое это тайлохранилище или какое-то другое, есть еще разные типы файловых тайлохранилищ. В них могут лежать тайлы в разных форматах. И самое главное, чего определить по самим файлам нельзя вообще никак это используемая в тайлохранилище проекция. Так что советую просто дать пользователю все это выбрать, а не пытаться угадать самому, если уж не хочется интегрироваться в саму Планету.

Re: Определение типа кэша

СообщениеДобавлено: 16 фев 2017, 13:40
Gma
vdemidov писал(а):... это используемая в тайлохранилище проекция. Так что советую просто дать пользователю все это выбрать, а не пытаться угадать самому, если уж не хочется интегрироваться в саму Планету.
Возможно, в выборе проекции следует исходить не из желаний пользователя, а из возможностей гарминовских приборов, для которых, сопсно, это всё и делается. Помнится, там не такой большой выбор был ))

Re: Определение типа кэша

СообщениеДобавлено: 16 фев 2017, 13:49
vdemidov
Gma писал(а):
vdemidov писал(а):... это используемая в тайлохранилище проекция. Так что советую просто дать пользователю все это выбрать, а не пытаться угадать самому, если уж не хочется интегрироваться в саму Планету.
Возможно, в выборе проекции следует исходить не из желаний пользователя, а из возможностей гарминовских приборов, для которых, сопсно, это всё и делается. Помнится, там не такой большой выбор был ))

В таком случае пользователя нужно или предупредить, что поддерживаются не все исходные проекции, или заниматься перепроецированием растров в процессе экспорта.

Re: Определение типа кэша

СообщениеДобавлено: 16 фев 2017, 15:23
Gma
vdemidov писал(а):... или заниматься перепроецированием растров в процессе экспорта.
Этот вариант мне кажется более разумным. При экспорте в jnx тоже самое происходит? Вот аналогично и надо делать.

Re: Определение типа кэша

СообщениеДобавлено: 21 фев 2017, 13:18
AlexWhiter
Речь не о координатах тайлов, а всего лишь о том, где физически находится JPEG-файл.
Похоже, нужно объяснить, для чего это потребовалось.

В том случае, если одновременно выполняются условия:
* не используется цветокоррекция;
* TileInfo.ContentType.GetContentType вернул 'image/jpg';
* файл с тайлом в кэше имеет расширение '.jpg';
* кэш источника карт находится на том же диске, что и временный каталог %temp%;
* до папки кэша можно построить относительный путь, не длиннее 200 символов (ограничение компилятора)
при построении скрипта для компилятора вместо того, чтобы сохранять копии файлов с тайлами, используются относительные пути до файлов в кэше.

Re: Определение типа кэша

СообщениеДобавлено: 21 фев 2017, 13:38
AlexWhiter
А вот и тестовая сборка SAS.Планеты с экспортом в IMG: https://yadi.sk/d/LuPK5haN3EL8Sk.
Распаковать в папку с уже установленной SAS.