SASGIS

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

Cache Converter (Lat_Lon2Mercator)

Обсуждение различной информации связанной с картографией в САСе, а также сторонние программные продукты для связки с САСом

Модератор: Tolik

Cache Converter (Lat_Lon2Mercator)

Сообщение WERTA » 04 авг 2009, 16:23

Конвертер проекции кэша из LAT_LON (GoogleEarth) в MERCATOR на сфере (Google Maps).
Будет полезен в связке с программой CacheMaster при работе с ресурсом GoogleEarth
Итересно его попробовать в высокихх широтах 70-76 град в плане качества изображений.
Вот ссылка
http://werta666.pisem.net/Cache%20Converter%20%28Lat_Lon2Mercator%29.exe
Cпасибо zed за исходный код GeoCachera
Аватара пользователя
WERTA
Соображающий
 
Сообщения: 79
Зарегистрирован: 14 мар 2009, 18:02
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Cache Converter (Lat_Lon2Mercator)

Сообщение zed » 04 авг 2009, 17:56

Конвертировать - конвертирует, только много "недоделанных" тайлов: то вообще белое пространство, то наполовину обрезанные...

По поводу использования, для тех, кто не в курсе:
1. Выкачиваем область/город в GoogleEarth
2. Распаковываем кэш GE в формат кэша GoogleMV при помощи CacheMaster
3. На распакованный кэш натравливаем Cache Converter
4. Просматриваем кэш в SAS или проч. прогах, понимающих qrst формат кэша.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Cache Converter (Lat_Lon2Mercator)

Сообщение WERTA » 04 авг 2009, 18:46

Конвертировать - конвертирует, только много "недоделанных" тайлов: то вообще белое пространство, то наполовину обрезанные...

Так и должно быть, ведь один тайл GoogleEarth не имеет однозначного соотвествия тайлу GoogleMaps.
Я сделал так чтоб, один тайл GoogleEarth в зависимости от широты порождал как минимум от двух и более тайлов GoogleMaps. Алгоритм.
1. Читаю выбранный тайл GoogleEarth
2. Определ. его X,Y
3. Читаю Y-m,Y-2,Y-1,Y+1,Y+2,Y+m где m обр пропорц косинусу широты
4. Создаю буфер из m+1 битмапов.
5. Нарезаю тайлы GoogleMaps, здесь я похоже взял с запасом 4. а надо бы 2-3 тайа (для широт 55-60 град)
поэтому если соседних GE тайлов Y+1,Y-1 не оказывается в кэше, то и получаем rgb(255,255,255)
Аватара пользователя
WERTA
Соображающий
 
Сообщения: 79
Зарегистрирован: 14 мар 2009, 18:02
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Cache Converter (Lat_Lon2Mercator)

Сообщение relictus » 05 авг 2009, 08:22

WERTA - сурсы можешь расшарить?
relictus
Новичок
 
Сообщения: 10
Зарегистрирован: 26 фев 2009, 15:23
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Cache Converter (Lat_Lon2Mercator)

Сообщение zed » 05 авг 2009, 10:48

WERTA писал(а):3. Читаю Y-m,Y-2,Y-1,Y+1,Y+2,Y+m где m обр пропорц косинусу широты

Вот не понятно, каким тут боком косинус?

Мне алгоритм видится так:
1. Взял тайл GE
2. Определил его X,Y
3. Перевёл X,Y в Меркатор (левый верхний угол), а также перевёл X, Y-1 в Меркатор (левый нижний), т.о. получил X',Y' и X',Y''
4. Создал буфер m=Y'-Y'' (2-3 тайла всего)
5. Пошарился на диске на предмет наличия Меркаторовских тайлов X',Y' - X',Y'', если есть, загрузил в буфер (т.е. должны загрузится только недоделанные/неполные меркаторовские тайлы)
6. Отобразил GE тайл в буфер (при этом, если в буфер подгружались неполные тайлы, то они дополнятся до 100%)
7. Сохранил буфер, и пошёл по кругу.

Чтоб уменьшить потери при пересжатии тайлов для случая, когда в буфер подгружается неполный меркаторовский тайл, такие неполные тайлы можно сохранять на диск в bmp формате, а затем, по завершении цикла, либо конвертить их в jpg, либо удалять нафиг - чтоб в кэше остались только целые тайлы.
zed
Гуру
 
Сообщения: 2888
Зарегистрирован: 16 авг 2008, 20:21
Благодарил (а): 89 раз.
Поблагодарили: 568 раз.

Re: Cache Converter (Lat_Lon2Mercator)

Сообщение WERTA » 05 авг 2009, 17:59

WERTA - сурсы можешь расшарить?

Без проблем на днях выложу сюда в тему

Вот не понятно, каким тут боком косинус?

1. Насчет кос-са широты. Сжатие географической проекции проп 1/cos(fi)
размер буфера должен быть m=trunc(1/cos(fi))+1, но засчет прикрепления к выбранному GE тайлу с боков m всегда берется до ближайшего большего нечетного числа (это с гарантией 100 % ).

Чтоб уменьшить потери при пересжатии тайлов для случая, когда в буфер подгружается неполный меркаторовский тайл, такие неполные тайлы можно сохранять на диск в bmp формате, а затем, по завершении цикла, либо конвертить их в jpg, либо удалять нафиг - чтоб в кэше остались только целые тайлы.


2. Я тоже считаю что оставлять недоклеенные тайлы это косяк, кому охоту держать у себя в кэше неполнноценный мусор.
думаю сделать галочку [v] - Не сохранять недоклеенные с краев тайлы. как узнать что тайл недоклеен, да очень просто нужно взять к примеру 5 равноотстоящих точек верхнего или нижнего края и проверить их пикселы. По умолчанию цвет заливки [255,255,255], тогда если все 5 или более пикселов края имеют такой цвет то это наводит на подозрения, несовершенство алгортма то что можно напороться на конкретно белоснежный зимний снимок, но это оч редко может случиться. Или тогда пробовать заливку по умолчанию (255,0,255), такой ядовитый цвет в живой природе точно не встречается. В общем все это делать в памяти без всяких сохранений на диске
Аватара пользователя
WERTA
Соображающий
 
Сообщения: 79
Зарегистрирован: 14 мар 2009, 18:02
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Cache Converter (Lat_Lon2Mercator)

Сообщение WERTA » 08 авг 2009, 16:23

Добавил новую версию.
Выбор - не сохранять недоклеенные тайлы на диске. ссылка
http://werta666.pisem.net/CacheConverter%20%28Lat_Lon2Mercator%29.exe

исходник (пишу на 5-ой дельфе)
http://werta666.pisem.net/src%20Converter%20GE2GM.rar
Аватара пользователя
WERTA
Соображающий
 
Сообщения: 79
Зарегистрирован: 14 мар 2009, 18:02
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.


Вернуться в Другие программы

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

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