Как отследить запрос и создать свой zmp?
Модератор: Tolik
Как отследить запрос и создать свой zmp?
Прошу знающих людей не оставаться безучастными. Проблема такова:
существует офсайт города с разделом "карта". Иа серваке сего сайта лежит файл в формате .sid и MapGuide генерит с него тайлы. Подскажите, как можно отследить запрос на сервер и сделать свой zmp для скачивания тайлов напрямую с сервера?
существует офсайт города с разделом "карта". Иа серваке сего сайта лежит файл в формате .sid и MapGuide генерит с него тайлы. Подскажите, как можно отследить запрос на сервер и сделать свой zmp для скачивания тайлов напрямую с сервера?
- Papazol
- Гуру
- Сообщения: 2069
- Зарегистрирован: 04 дек 2009, 01:39
- Откуда: Рязань
- Благодарил (а): 73 раза
- Поблагодарили: 647 раз
Re: Как отследить запрос и создать свой zmp?
Обычно для отслеживания запросов используют какой-нибудь сниффер, например, HandyCache. Записав несколько адресов запросов, находят в них неизменную часть и, наоборот, изменяемую. Неизменная часть - это DefURLBase, остальное описывается языком Pascal.
Это очень вкратце.
Если бы Вы дали ссылку на интересующий Вас ресурс, можно было бы посмотреть, туды-сюды...
Это очень вкратце.
Если бы Вы дали ссылку на интересующий Вас ресурс, можно было бы посмотреть, туды-сюды...
-
Werefox
- Постигающий Дао
- Сообщения: 148
- Зарегистрирован: 08 янв 2009, 17:23
- Благодарил (а): 17 раз
- Поблагодарили: 23 раза
Re: Как отследить запрос и создать свой zmp?
MrSID? Скачать целиком, в Global Mapper нарезать на тайлы, подключить как пользовательский кэш.
viewtopic.php?f=2&t=736
viewtopic.php?f=2&t=1090
Действительно, а можно ссылочку на город, кому это так повезло?
viewtopic.php?f=2&t=736
viewtopic.php?f=2&t=1090
Действительно, а можно ссылочку на город, кому это так повезло?
- garl
- Гуру
- Сообщения: 1625
- Зарегистрирован: 16 июл 2008, 14:40
- Откуда: Краснодар, Кубанская столица.
- Благодарил (а): 97 раз
- Поблагодарили: 272 раза
Re: Как отследить запрос и создать свой zmp?
ну если будут ссылки на карту, можем пошаговый типа online-мануал попробовать сделать
Re: Как отследить запрос и создать свой zmp?
Malmo, Sweden
http://malmo.se/karta
интересует, тащемта, т.н. "fotokarta 2011"
от доступного всем нам фото со спутника отличия в основном только в том, что тень падает в другую сторону
но есть принципиальный момент, потому и спрашиваю именно о том как достать эти тайлы
http://malmo.se/karta
интересует, тащемта, т.н. "fotokarta 2011"
от доступного всем нам фото со спутника отличия в основном только в том, что тень падает в другую сторону
- Parasite
- Администратор
- Сообщения: 5646
- Зарегистрирован: 23 окт 2008, 17:38
- Благодарил (а): 124 раза
- Поблагодарили: 508 раз
Re: Как отследить запрос и создать свой zmp?
korzhik писал(а):Иа серваке сего сайта лежит файл в формате .sid и MapGuide генерит с него тайлы.
Не совсем понятно, из какого конкретно места работы того сайта был сделан данный вывод про .sid + MapGuide. Тайлы - обычные, статичные, безо всяких запросов генераций, и даже слово "tilecache" в урле кагбэ намекает нам...
http://xyz.malmo.se/data_e/tilecache/ma ... 0/002.jpeg

The only difference between me and a mad man is that I am not mad. /Salvador Dali/


-
Tolik
- Гуру
- Сообщения: 2604
- Зарегистрирован: 28 янв 2011, 10:38
- Благодарил (а): 283 раза
- Поблагодарили: 587 раз
Re: Как отследить запрос и создать свой zmp?
Точно, давайте напишем инструкцию!
Это не так быстро, я сейчас начну, а вы дополняйте, поправляйте, будет полезно всем.
1. Надо посмотреть, из чего состоит карта. И если она состоит из тайлов (квадратных картинок), надо определить URL каждого тайла.
Я пользуюсь браузером Firefox, установлены плагины AdBlockPlus (совершенно необходимый плагин, используется по прямому назначению, а также помогает посмотреть, из чего сделан сайт) и HttpFox (необязательный, но удобный плагин, показывает все запросы и ответы). В клинических случаях приходится пользоваться снифером Wireshark.
Часто никакие плагины и не нужны.
Первым делом надо сделать так, чтобы по правой кнопке мыши на карте вызывалось контекстное меню Firefox. Для этого идём в настройки Firefox (я предпочитаю англоязычный интерфейс): tools - options - content - кнопка Advanced справа от Enable JavaScript - там убрать все галочки.
Заходим на сайт нужной карты, для примера, http://malmo.se/karta
Выбираем интересующий вид - Fotokarta 2011.
Кликаем правой кнопкой. В контекстном меню, к сожалению, нет View Image Info, но есть View Page Info. Тоже хорошо, кликаем туда.
В этом Page Info переходим на закладку Media и ищем нужные тайлы.
Во-первых, они есть, что не может не рабовать
Тип jpeg, размер 256х256 - это оч. хорошо, т.к. САС работает только с таким размером тайлов (если размер отличается, САС умеет сжимать или растягивать, с потерей качества, конечно).
Выглядят адреса так:
Здесь неизменная часть адреса - "http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/",
03 - очевидно, зум, 020 - видимо, Х, 016 - видимо, Y (а может, и наоборот), остальные 000 непонятно зачем, да и не важно.
Сразу замечаем, что карта без привязки
Если бы была с привязкой, номера тайлов были бы гораздо больше.
По поводу привязки, имеет смысл проверить.
Слева какой-то стадион на malmo.se, зум 3, справа он же на Гугле, зум 15 (если считать от нуля).


Видно, что они не совпадают, так что привязывать можно и не пытаться.
(продолжение следует)
Это не так быстро, я сейчас начну, а вы дополняйте, поправляйте, будет полезно всем.
1. Надо посмотреть, из чего состоит карта. И если она состоит из тайлов (квадратных картинок), надо определить URL каждого тайла.
Я пользуюсь браузером Firefox, установлены плагины AdBlockPlus (совершенно необходимый плагин, используется по прямому назначению, а также помогает посмотреть, из чего сделан сайт) и HttpFox (необязательный, но удобный плагин, показывает все запросы и ответы). В клинических случаях приходится пользоваться снифером Wireshark.
Часто никакие плагины и не нужны.
Первым делом надо сделать так, чтобы по правой кнопке мыши на карте вызывалось контекстное меню Firefox. Для этого идём в настройки Firefox (я предпочитаю англоязычный интерфейс): tools - options - content - кнопка Advanced справа от Enable JavaScript - там убрать все галочки.
Заходим на сайт нужной карты, для примера, http://malmo.se/karta
Выбираем интересующий вид - Fotokarta 2011.
Кликаем правой кнопкой. В контекстном меню, к сожалению, нет View Image Info, но есть View Page Info. Тоже хорошо, кликаем туда.
В этом Page Info переходим на закладку Media и ищем нужные тайлы.
Во-первых, они есть, что не может не рабовать
Тип jpeg, размер 256х256 - это оч. хорошо, т.к. САС работает только с таким размером тайлов (если размер отличается, САС умеет сжимать или растягивать, с потерей качества, конечно).
Выглядят адреса так:
Код: Выделить всё
http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/020/000/000/016.jpeg
http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/019/000/000/016.jpeg
http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/018/000/000/016.jpeg
http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/018/000/000/017.jpeg
Здесь неизменная часть адреса - "http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/",
03 - очевидно, зум, 020 - видимо, Х, 016 - видимо, Y (а может, и наоборот), остальные 000 непонятно зачем, да и не важно.
Сразу замечаем, что карта без привязки
Если бы была с привязкой, номера тайлов были бы гораздо больше.
По поводу привязки, имеет смысл проверить.
Слева какой-то стадион на malmo.se, зум 3, справа он же на Гугле, зум 15 (если считать от нуля).

Видно, что они не совпадают, так что привязывать можно и не пытаться.
(продолжение следует)
-
Tolik
- Гуру
- Сообщения: 2604
- Зарегистрирован: 28 янв 2011, 10:38
- Благодарил (а): 283 раза
- Поблагодарили: 587 раз
Re: Как отследить запрос и создать свой zmp?
2. Теперь надо сделать zmp.
Берём какую-нибудь простую локальную карту, например, Maps\sas.maps\Local\visicom.zmp, копируем директорию visicom.zmp в директорию Maps, переименовываем в malmo.se.sat.zmp.
В директории обязательно д.б. эти 4 файла:
(подробнее о них написано в Wiki)
Редактируем params.txt. Самые главные параметры:
GUID - обязательно должен быть уникальным (т.е. на всех zmp разным). Меняем какую-нибудь цифру, авось прокатит. Можно, конечно, и сгенерировать его на каком-нибудь сайте, да лень.
Имя карты и подменю на 3-х языках:
Директория, в которой хранится кэш. Тоже должна быть уникальной:
Неизменная часть URL:
Тип файлов:
Остальное можно пока не трогать.
Берём какую-нибудь простую локальную карту, например, Maps\sas.maps\Local\visicom.zmp, копируем директорию visicom.zmp в директорию Maps, переименовываем в malmo.se.sat.zmp.
В директории обязательно д.б. эти 4 файла:
Код: Выделить всё
18.bmp
24.bmp
GetUrlScript.txt
params.txt(подробнее о них написано в Wiki)
Редактируем params.txt. Самые главные параметры:
GUID - обязательно должен быть уникальным (т.е. на всех zmp разным). Меняем какую-нибудь цифру, авось прокатит. Можно, конечно, и сгенерировать его на каком-нибудь сайте, да лень.
Код: Выделить всё
GUID={63866E5D-09F2-4732-9D21-6350124302CB}Имя карты и подменю на 3-х языках:
Код: Выделить всё
name=Спутник Мальмо (malmo.se)
name_en=Malmo Sat (malmo.se)
name_uk=Супутник Мальмо (malmo.se)
ParentSubMenu=Локальные карты
ParentSubMenu_en=Local maps
ParentSubMenu_uk=Локальні картиДиректория, в которой хранится кэш. Тоже должна быть уникальной:
Код: Выделить всё
NameInCache=malmo.se.satНеизменная часть URL:
Код: Выделить всё
DefURLBase=http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/Тип файлов:
Код: Выделить всё
ContentType=image/jpeg
Ext=.jpgОстальное можно пока не трогать.
-
Tolik
- Гуру
- Сообщения: 2604
- Зарегистрирован: 28 янв 2011, 10:38
- Благодарил (а): 283 раза
- Поблагодарили: 587 раз
Re: Как отследить запрос и создать свой zmp?
3. Теперь надо написать паскаль-скрипт, который будет генерировать изменяемую часть адреса.
Редактируем GetUrlScript.txt.
В САСе зумы считаются от 1 до 24, во всех (или почти всех) картах от нуля.
На карте Мальмо на зуме 0, кажется, всего 16 тайлов, X и Y от 0 до 3. Значит, зума 3 в САСе будет достаточно. Так что будем использовать GetZ-3.
Вроде похоже, только X и Y на этой карте в виде 3-значных чисел, надо проверить, будет ли работать с 1- или 2-значными.
А Z должна быть 2-значной.
Берём URL "http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/019/000/000/017.jpeg", открываем его браузером (картинка открывается), меняем 019 на 19, а 017 на 17 - фигушки, не работает.
Придётся исправить скрипт так, чтобы добавлялись незначащие нули до трёх знаков.
Например, if...
Конечно, можно добавить для начала нули вручную и посмотреть, что получится:
ResultURL:=GetURLBase+'0'+IntToStr(GetZ-3)+'/000/000/00'+IntToStr(GetX)+'/000/000/00'+IntToStr(GetY)+'.jpeg';
(понятно, что работать будет только до X,Y,Z <= 9).
Теперь можно запустить САС.Планету.
Запускаем, переходим на зум 3, выбираем нашу карту и смотрим что вышло:
Ну, уже как бы неплохо
Как видно, на malmo.se координата Y считается снизу вверх, а в САС.Планете сверху вниз.
Надо тоже исправить в скрипте.
Редактируем GetUrlScript.txt.
В САСе зумы считаются от 1 до 24, во всех (или почти всех) картах от нуля.
На карте Мальмо на зуме 0, кажется, всего 16 тайлов, X и Y от 0 до 3. Значит, зума 3 в САСе будет достаточно. Так что будем использовать GetZ-3.
Код: Выделить всё
begin
ResultURL:=GetURLBase+IntToStr(GetZ-3)+'/000/000/'+IntToStr(GetX)+'/000/000/'+IntToStr(GetY)+'.jpeg';
end.Вроде похоже, только X и Y на этой карте в виде 3-значных чисел, надо проверить, будет ли работать с 1- или 2-значными.
А Z должна быть 2-значной.
Берём URL "http://xyz.malmo.se/data_e/tilecache/malmo/malmo_ortofoto_2011/03/000/000/019/000/000/017.jpeg", открываем его браузером (картинка открывается), меняем 019 на 19, а 017 на 17 - фигушки, не работает.
Придётся исправить скрипт так, чтобы добавлялись незначащие нули до трёх знаков.
Например, if...
Конечно, можно добавить для начала нули вручную и посмотреть, что получится:
ResultURL:=GetURLBase+'0'+IntToStr(GetZ-3)+'/000/000/00'+IntToStr(GetX)+'/000/000/00'+IntToStr(GetY)+'.jpeg';
(понятно, что работать будет только до X,Y,Z <= 9).
Теперь можно запустить САС.Планету.
Запускаем, переходим на зум 3, выбираем нашу карту и смотрим что вышло:
Ну, уже как бы неплохо
Как видно, на malmo.se координата Y считается снизу вверх, а в САС.Планете сверху вниз.
Надо тоже исправить в скрипте.
- garl
- Гуру
- Сообщения: 1625
- Зарегистрирован: 16 июл 2008, 14:40
- Откуда: Краснодар, Кубанская столица.
- Благодарил (а): 97 раз
- Поблагодарили: 272 раза
Re: Как отследить запрос и создать свой zmp?
а ещё нужно учесть что
будет верно лишь для значений до 999, а выше придётся мудрить.
Код: Выделить всё
'/000/000/'+IntToStr(GetY)будет верно лишь для значений до 999, а выше придётся мудрить.