Сделал новый релиз конвертера.
Теперь он поддерживает кеши tsqr, ES, SAS.Планета, OziExplorer в обе стороны.
Если кто найдёт косяки -- пишите здесь.
UPD
Релиз в этой записи был немного неисправен, так что смотрите новую версию ниже.
Конвертация кеша в/из разных форматов.
Модератор: Tolik
Re: Конвертация кеша в/из разных форматов.
Чёйта не получается
Результат выполнения батника
шота от жары понять не могу, шо ему надо
ПС буду конвертер пробовать.
Спасибо
Результат выполнения батника
Код: Выделить всё
E:\tmp\visicom_world_ru>copy "E:\tmp\visicom_world_ru\z19\149\x153046\86\y88267.png" "1\2\19\153046\88267.png"
Системе не удается найти указанный путь.
Скопировано файлов: 0.
и т.д.шота от жары понять не могу, шо ему надо
ПС буду конвертер пробовать.
Спасибо
- svp
- Советчик
- Сообщения: 447
- Зарегистрирован: 26 авг 2008, 11:14
- Откуда: Белгород
- Благодарил (а): 2 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Конвертация кеша в/из разных форматов.
Sintorres писал(а):Чёйта не получается
Результат выполнения батникаКод: Выделить всё
E:\tmp\visicom_world_ru>copy "E:\tmp\visicom_world_ru\z19\149\x153046\86\y88267.png" "1\2\19\153046\88267.png"
Системе не удается найти указанный путь.
Скопировано файлов: 0.
и т.д.
шота от жары понять не могу, шо ему надо
ПС буду конвертер пробовать.
Спасибо
Можно вместо copy попробовать xcopy /i
Re: Конвертация кеша в/из разных форматов.
svp Спасибо за конвертер. Работает
Только одно неудобство
После обработки примерно 23177 файлов выскакивает ошибка (ко-во разное но где то около того)
Т.е 50 каталогов + в каждом по одному подкаталогу = больше 101 = кердык процесса.
Это в общем то не проблема. Килать обработанные каталоги и запускать батник по новой, но....
Можно ли добавить ключ типа -m но для исходного, обработанного каталога?
Только одно неудобство
После обработки примерно 23177 файлов выскакивает ошибка (ко-во разное но где то около того)
E:\tmp>convert.bat
E:\tmp>TileConvertor --from sas --to ozi -r -m -p3 E:\tmp\visicom_world_ru\z19 E:\tmp\1
TileConvertor v.0.3.1.17 (C) 2008-2010 SVP 15.06.2010
Перемещение кеша
из E:\tmp\visicom_world_ru\z19
в E:\tmp\1
c рекурсивным обходом каталогов.
Ошибок: 0
Скопировано: 0
Перемещено: 23177
Заменено: 0
Пропущено: 0
Обработано: 23177
Текущий файл: \149\x153334\86\y88703.png
ОШИБКА: Обнаружена слишком большая глубина вложенности каталогов (>101)!
Возможно в структуре каталогов есть зацикленность.
Работа программы будет прервана.
Текущий каталог: E:\tmp\visicom_world_ru\z19\149\x153335
Т.е 50 каталогов + в каждом по одному подкаталогу = больше 101 = кердык процесса.
Это в общем то не проблема. Килать обработанные каталоги и запускать батник по новой, но....
Можно ли добавить ключ типа -m но для исходного, обработанного каталога?
- svp
- Советчик
- Сообщения: 447
- Зарегистрирован: 26 авг 2008, 11:14
- Откуда: Белгород
- Благодарил (а): 2 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Конвертация кеша в/из разных форматов.
Sintorres писал(а):Только одно неудобство
После обработки примерно 23177 файлов выскакивает ошибка (ко-во разное но где то около того)
Т.е 50 каталогов + в каждом по одному подкаталогу = больше 101 = кердык процесса.
Это в общем то не проблема. Килать обработанные каталоги и запускать батник по новой, но....
Можно ли добавить ключ типа -m но для исходного, обработанного каталога?
Ясно. Вот релиз, где этой ошибки быть не должно. Забывал декрементировать глубину рекурсии по выходу из рекурсивной функции. Пардон за косяки. Прогу писал в слепую и не тестировал ни разу. =)
Вот релиз, где ошибки быть не должно:
- svp
- Советчик
- Сообщения: 447
- Зарегистрирован: 26 авг 2008, 11:14
- Откуда: Белгород
- Благодарил (а): 2 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Конвертация кеша в/из разных форматов.
На случай, если кому-то понадобятся исходники конвертера:
Re: Конвертация кеша в/из разных форматов.
svp, Спасибо огромное за конвертер.
Версия TileConvertor_rel_201006162331 работает без нареканий.
Версия TileConvertor_rel_201006162331 работает без нареканий.
- DJ VK
- Гуру
- Сообщения: 1468
- Зарегистрирован: 16 апр 2009, 13:57
- Откуда: 8 км. от МКАД
- Благодарил (а): 80 раз
- Поблагодарили: 314 раз
Re: Конвертация кеша в/из разных форматов.
svp писал(а):Sintorres писал(а):Забывал декрементировать глубину рекурсии по выходу из рекурсивной функции.
Я обычно использую для этого готовые компоненты (LMDSerachFileGrep). Составляю список, а потом по списку обработка циклом.
Ну да не об этом щас.
Насколько возможно составить функцию конвертирования систем координат? Хочется яндекс карты привести в соответствие с другими.
Строится вертикальная полоса 2000 тайлов. (512000 * 256) *3байта =400 мб памяти. Загружаются тайлы.
Далее из полосы выделяются новые тайлы с учетом разницы координат.
1) Нет ли последней версии функций LonLat2Pos Pos2LonLat, у меня есть из старинных исходников только.
2) Как получить границы генерируемых тайлов? На входе мы имеет номера тайлов - и полосу графических данный. надо получить набор точек и весовые коэффициенты для интерполяции по каждому пикселу нового тайла.
3)Насколько я понимаю преобразование не линейное, можно принебречь нелинейностью в пределах тайла ?
- vdemidov
- Гуру
- Сообщения: 1687
- Зарегистрирован: 12 дек 2008, 13:10
- Откуда: Киев
- Благодарил (а): 191 раз
- Поблагодарили: 157 раз
Re: Конвертация кеша в/из разных форматов.
DJ VK писал(а):Строится вертикальная полоса 2000 тайлов. (512000 * 256) *3байта =400 мб памяти. Загружаются тайлы.
ИМХО гораздо проще по одному тайлу конвертировать. Затраты процессора будут чуть больше, зато можно распралелить и очень малые по сравнению с вашими затраты памяти.
Собственно опишу процес используемый самой SAS.Планетой.
Тобишь требуется нам тайл в одной проекции, а есть тайлы в другой. Нелинейные искажения в пределах тайла я игнорирую.
1. Мы берем, находим географические координаты угловых пикселов искомого тайла.
2. Преобразуем эти координаты в координаты пикселов карты но уже в той проекции в которой существующие тайлы (вызов LonLat2PixelPos)
3. Вычисляем какие исходные тайлы нам нужны что бы полностью покрыть этот прямоугольник.
4. Делаем битмапку по размерам этого прямоугольника (Это будет именно прямоугольник, а не квадрат).
5. Из исходных тайлов копируем в битмапку нужные куски изображения. (Для преобразований меркатора на элипсоиде в меркатор на сфероиде и обратно это будут обычно 2 куска или 1)
6. Ресайзим полученную битмапку до квадратных размеров.
7. Сокраняем результат.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
- svp
- Советчик
- Сообщения: 447
- Зарегистрирован: 26 авг 2008, 11:14
- Откуда: Белгород
- Благодарил (а): 2 раза
- Поблагодарили: 7 раз
- Контактная информация:
Re: Конвертация кеша в/из разных форматов.
По-хорошему так и надо и рекурсия -- зло. Но писалось на скорую руку и компоненты искать было некогда. К тому же вложенность каталогов в файловой системе не так уж и велика, чтобы стек не справился. Подсчет глубины рекурсии был сделан воизбежание циклов в дереве каталогов. К примеру симлинк на один из родительских каталогов делает цикл, наличие которого нетривиально отличить от простого повторения последовательности вложенных папок.DJ VK писал(а):svp писал(а):Sintorres писал(а):Забывал декрементировать глубину рекурсии по выходу из рекурсивной функции.
Я обычно использую для этого готовые компоненты (LMDSerachFileGrep). Составляю список, а потом по списку обработка циклом.
DJ VK писал(а):Насколько возможно составить функцию конвертирования систем координат? Хочется яндекс карты привести в соответствие с другими.
Строится вертикальная полоса 2000 тайлов. (512000 * 256) *3байта =400 мб памяти. Загружаются тайлы.
Далее из полосы выделяются новые тайлы с учетом разницы координат.
Я считаю, что конвертировать растр тайлов -- занятие неблагодарное. Это противоречит старику Оккаму. Лучше уж подстраивать методы отображения под новую проекцию или сдвиг, чем чего-то там переклеивать/перенарезать. Так что делать это я не буду.
DJ VK писал(а):1) Нет ли последней версии функций LonLat2Pos Pos2LonLat, у меня есть из старинных исходников только.
Там выше я выкладывал исходники. Всё, что я юзал, в них есть. Насколько там старая функция по отношению к Вашей я ХЗ.
Где-то тут по форуму ходила ссылка на сайтик, где рассказывается как устроен GoogleMaps. Вот там есть описание того, как посчитать все эти координаты.DJ VK писал(а):2) Как получить границы генерируемых тайлов? На входе мы имеет номера тайлов - и полосу графических данный. надо получить набор точек и весовые коэффициенты для интерполяции по каждому пикселу нового тайла.
Насколько я понимаю, и по моему скромному мнению заниматься этим вовсе не стоит. Зачем?DJ VK писал(а):3)Насколько я понимаю преобразование не линейное, можно принебречь нелинейностью в пределах тайла ?
upd.
Беру свои слова обратно. Может и стоит, но это совсем отдельная задача нежели простое переименование тайлов.