SASGIS

Веб-картография и навигация

Конвертация кеша в/из разных форматов.

программа для загрузки и просмотра спутниковых снимков Земли, Луны, Марса предоставленных сервисами Google Maps и Космоснимки. Возможность работы с GPS приёмником.

Модератор: Tolik

Re: Конвертация кеша в/из разных форматов.

Сообщение svp » 15 июн 2010, 23:12

Сделал новый релиз конвертера.
Теперь он поддерживает кеши tsqr, ES, SAS.Планета, OziExplorer в обе стороны.
Если кто найдёт косяки -- пишите здесь.

UPD
Релиз в этой записи был немного неисправен, так что смотрите новую версию ниже.
Последний раз редактировалось svp 17 июн 2010, 12:58, всего редактировалось 1 раз.
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.

Re: Конвертация кеша в/из разных форматов.

Сообщение Sintorres » 16 июн 2010, 13:29

Чёйта не получается
Результат выполнения батника
Код: Выделить всё
E:\tmp\visicom_world_ru>copy "E:\tmp\visicom_world_ru\z19\149\x153046\86\y88267.png" "1\2\19\153046\88267.png"
Системе не удается найти указанный путь.
Скопировано файлов:         0.
и т.д.

шота от жары понять не могу, шо ему надо

ПС буду конвертер пробовать.
Спасибо
Sintorres
Новичок
 
Сообщения: 5
Зарегистрирован: 07 авг 2009, 18:11
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Re: Конвертация кеша в/из разных форматов.

Сообщение svp » 16 июн 2010, 15:18

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
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.

Re: Конвертация кеша в/из разных форматов.

Сообщение Sintorres » 16 июн 2010, 18:38

svp Спасибо за конвертер. Работает :D
Только одно неудобство
После обработки примерно 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 но для исходного, обработанного каталога?
Sintorres
Новичок
 
Сообщения: 5
Зарегистрирован: 07 авг 2009, 18:11
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Re: Конвертация кеша в/из разных форматов.

Сообщение svp » 16 июн 2010, 23:31

Sintorres писал(а):Только одно неудобство
После обработки примерно 23177 файлов выскакивает ошибка (ко-во разное но где то около того)
Т.е 50 каталогов + в каждом по одному подкаталогу = больше 101 = кердык процесса.
Это в общем то не проблема. Килать обработанные каталоги и запускать батник по новой, но....
Можно ли добавить ключ типа -m но для исходного, обработанного каталога?

Ясно. Вот релиз, где этой ошибки быть не должно. Забывал декрементировать глубину рекурсии по выходу из рекурсивной функции. Пардон за косяки. Прогу писал в слепую и не тестировал ни разу. =)
Вот релиз, где ошибки быть не должно:
TileConvertor_rel_201006162331.rar
Новый релиз.
(176.61 KiB) Скачиваний: 428
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.

Re: Конвертация кеша в/из разных форматов.

Сообщение svp » 17 июн 2010, 10:41

На случай, если кому-то понадобятся исходники конвертера:
TileConvertor_src_201006162333.rar
Исходники конвертера тайловых кешей.
(16.91 KiB) Скачиваний: 261
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.

Re: Конвертация кеша в/из разных форматов.

Сообщение Sintorres » 17 июн 2010, 11:54

svp, Спасибо огромное за конвертер.
Версия TileConvertor_rel_201006162331 работает без нареканий.
Sintorres
Новичок
 
Сообщения: 5
Зарегистрирован: 07 авг 2009, 18:11
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.

Re: Конвертация кеша в/из разных форматов.

Сообщение DJ VK » 18 июн 2010, 15:27

svp писал(а):
Sintorres писал(а):Забывал декрементировать глубину рекурсии по выходу из рекурсивной функции.

Я обычно использую для этого готовые компоненты (LMDSerachFileGrep). Составляю список, а потом по списку обработка циклом.
Ну да не об этом щас.
Насколько возможно составить функцию конвертирования систем координат? Хочется яндекс карты привести в соответствие с другими.
Строится вертикальная полоса 2000 тайлов. (512000 * 256) *3байта =400 мб памяти. Загружаются тайлы.
Далее из полосы выделяются новые тайлы с учетом разницы координат.
1) Нет ли последней версии функций LonLat2Pos Pos2LonLat, у меня есть из старинных исходников только.
2) Как получить границы генерируемых тайлов? На входе мы имеет номера тайлов - и полосу графических данный. надо получить набор точек и весовые коэффициенты для интерполяции по каждому пикселу нового тайла.
3)Насколько я понимаю преобразование не линейное, можно принебречь нелинейностью в пределах тайла ?
Аватара пользователя
DJ VK
Гуру
 
Сообщения: 1468
Зарегистрирован: 16 апр 2009, 13:57
Откуда: 8 км. от МКАД
Благодарил (а): 82 раз.
Поблагодарили: 323 раз.

Re: Конвертация кеша в/из разных форматов.

Сообщение vdemidov » 18 июн 2010, 15:53

DJ VK писал(а):Строится вертикальная полоса 2000 тайлов. (512000 * 256) *3байта =400 мб памяти. Загружаются тайлы.

ИМХО гораздо проще по одному тайлу конвертировать. Затраты процессора будут чуть больше, зато можно распралелить и очень малые по сравнению с вашими затраты памяти.
Собственно опишу процес используемый самой SAS.Планетой.

Тобишь требуется нам тайл в одной проекции, а есть тайлы в другой. Нелинейные искажения в пределах тайла я игнорирую.
1. Мы берем, находим географические координаты угловых пикселов искомого тайла.
2. Преобразуем эти координаты в координаты пикселов карты но уже в той проекции в которой существующие тайлы (вызов LonLat2PixelPos)
3. Вычисляем какие исходные тайлы нам нужны что бы полностью покрыть этот прямоугольник.
4. Делаем битмапку по размерам этого прямоугольника (Это будет именно прямоугольник, а не квадрат).
5. Из исходных тайлов копируем в битмапку нужные куски изображения. (Для преобразований меркатора на элипсоиде в меркатор на сфероиде и обратно это будут обычно 2 куска или 1)
6. Ресайзим полученную битмапку до квадратных размеров.
7. Сокраняем результат.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 157 раз.

Re: Конвертация кеша в/из разных форматов.

Сообщение svp » 18 июн 2010, 16:03

DJ VK писал(а):
svp писал(а):
Sintorres писал(а):Забывал декрементировать глубину рекурсии по выходу из рекурсивной функции.

Я обычно использую для этого готовые компоненты (LMDSerachFileGrep). Составляю список, а потом по списку обработка циклом.
По-хорошему так и надо и рекурсия -- зло. Но писалось на скорую руку и компоненты искать было некогда. К тому же вложенность каталогов в файловой системе не так уж и велика, чтобы стек не справился. Подсчет глубины рекурсии был сделан воизбежание циклов в дереве каталогов. К примеру симлинк на один из родительских каталогов делает цикл, наличие которого нетривиально отличить от простого повторения последовательности вложенных папок.
DJ VK писал(а):Насколько возможно составить функцию конвертирования систем координат? Хочется яндекс карты привести в соответствие с другими.
Строится вертикальная полоса 2000 тайлов. (512000 * 256) *3байта =400 мб памяти. Загружаются тайлы.
Далее из полосы выделяются новые тайлы с учетом разницы координат.

Я считаю, что конвертировать растр тайлов -- занятие неблагодарное. Это противоречит старику Оккаму. Лучше уж подстраивать методы отображения под новую проекцию или сдвиг, чем чего-то там переклеивать/перенарезать. Так что делать это я не буду.
DJ VK писал(а):1) Нет ли последней версии функций LonLat2Pos Pos2LonLat, у меня есть из старинных исходников только.

Там выше я выкладывал исходники. Всё, что я юзал, в них есть. Насколько там старая функция по отношению к Вашей я ХЗ.
DJ VK писал(а):2) Как получить границы генерируемых тайлов? На входе мы имеет номера тайлов - и полосу графических данный. надо получить набор точек и весовые коэффициенты для интерполяции по каждому пикселу нового тайла.
Где-то тут по форуму ходила ссылка на сайтик, где рассказывается как устроен GoogleMaps. Вот там есть описание того, как посчитать все эти координаты.
DJ VK писал(а):3)Насколько я понимаю преобразование не линейное, можно принебречь нелинейностью в пределах тайла ?
Насколько я понимаю, и по моему скромному мнению заниматься этим вовсе не стоит. Зачем?

upd.
Беру свои слова обратно. Может и стоит, но это совсем отдельная задача нежели простое переименование тайлов.
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.

Пред.След.

Вернуться в SAS.Планета

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2