SASGIS

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

Как отследить запрос и создать свой zmp?

Модератор: Tolik

Как отследить запрос и создать свой zmp?

Сообщение korzhik » 09 фев 2012, 18:58

Прошу знающих людей не оставаться безучастными. Проблема такова:
существует офсайт города с разделом "карта". Иа серваке сего сайта лежит файл в формате .sid и MapGuide генерит с него тайлы. Подскажите, как можно отследить запрос на сервер и сделать свой zmp для скачивания тайлов напрямую с сервера?
korzhik
Новичок
 
Сообщения: 2
Зарегистрирован: 09 фев 2012, 18:53
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Как отследить запрос и создать свой zmp?

Сообщение Papazol » 09 фев 2012, 21:16

Обычно для отслеживания запросов используют какой-нибудь сниффер, например, HandyCache. Записав несколько адресов запросов, находят в них неизменную часть и, наоборот, изменяемую. Неизменная часть - это DefURLBase, остальное описывается языком Pascal.
Это очень вкратце.
Если бы Вы дали ссылку на интересующий Вас ресурс, можно было бы посмотреть, туды-сюды...
Аватара пользователя
Papazol
Гуру
 
Сообщения: 2069
Зарегистрирован: 04 дек 2009, 01:39
Откуда: Рязань
Благодарил (а): 74 раз.
Поблагодарили: 606 раз.

Re: Как отследить запрос и создать свой zmp?

Сообщение Werefox » 09 фев 2012, 21:32

MrSID? Скачать целиком, в Global Mapper нарезать на тайлы, подключить как пользовательский кэш. :lol:
viewtopic.php?f=2&t=736
viewtopic.php?f=2&t=1090
Действительно, а можно ссылочку на город, кому это так повезло?
Werefox
Постигающий Дао
 
Сообщения: 148
Зарегистрирован: 08 янв 2009, 17:23
Благодарил (а): 17 раз.
Поблагодарили: 22 раз.

Re: Как отследить запрос и создать свой zmp?

Сообщение garl » 09 фев 2012, 21:43

ну если будут ссылки на карту, можем пошаговый типа online-мануал попробовать сделать
Russian NDN Team
QIP NightlyTester
Аватара пользователя
garl
Гуру
 
Сообщения: 1625
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар, Кубанская столица.
Благодарил (а): 97 раз.
Поблагодарили: 245 раз.

Re: Как отследить запрос и создать свой zmp?

Сообщение korzhik » 10 фев 2012, 01:08

Malmo, Sweden
http://malmo.se/karta
интересует, тащемта, т.н. "fotokarta 2011"
от доступного всем нам фото со спутника отличия в основном только в том, что тень падает в другую сторону :) но есть принципиальный момент, потому и спрашиваю именно о том как достать эти тайлы
korzhik
Новичок
 
Сообщения: 2
Зарегистрирован: 09 фев 2012, 18:53
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Как отследить запрос и создать свой zmp?

Сообщение Parasite » 10 фев 2012, 07:25

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/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 459 раз.

Re: Как отследить запрос и создать свой zmp?

Сообщение Tolik » 10 фев 2012, 09:26

Точно, давайте напишем инструкцию!
Это не так быстро, я сейчас начну, а вы дополняйте, поправляйте, будет полезно всем.

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 поблагодарил:
igel72 (11 фев 2012, 09:50)
Рейтинг: 5.26%
 
Tolik
Гуру
 
Сообщения: 2603
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 277 раз.
Поблагодарили: 515 раз.

Re: Как отследить запрос и создать свой zmp?

Сообщение Tolik » 10 фев 2012, 10:15

2. Теперь надо сделать zmp.
Берём какую-нибудь простую локальную карту, например, 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
Гуру
 
Сообщения: 2603
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 277 раз.
Поблагодарили: 515 раз.

Re: Как отследить запрос и создать свой zmp?

Сообщение Tolik » 10 фев 2012, 10:40

3. Теперь надо написать паскаль-скрипт, который будет генерировать изменяемую часть адреса.
Редактируем 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, выбираем нашу карту и смотрим что вышло:
2012-02-10_104906.gif

Ну, уже как бы неплохо :D

Как видно, на malmo.se координата Y считается снизу вверх, а в САС.Планете сверху вниз.
Надо тоже исправить в скрипте.

За это сообщение автора Tolik поблагодарил:
igel72 (11 фев 2012, 09:51)
Рейтинг: 5.26%
 
Tolik
Гуру
 
Сообщения: 2603
Зарегистрирован: 28 янв 2011, 10:38
Благодарил (а): 277 раз.
Поблагодарили: 515 раз.

Re: Как отследить запрос и создать свой zmp?

Сообщение garl » 10 фев 2012, 11:02

а ещё нужно учесть что
Код: Выделить всё
'/000/000/'+IntToStr(GetY)

будет верно лишь для значений до 999, а выше придётся мудрить.
Russian NDN Team
QIP NightlyTester

За это сообщение автора garl поблагодарил:
igel72 (11 фев 2012, 10:01)
Рейтинг: 5.26%
 
Аватара пользователя
garl
Гуру
 
Сообщения: 1625
Зарегистрирован: 16 июл 2008, 14:40
Откуда: Краснодар, Кубанская столица.
Благодарил (а): 97 раз.
Поблагодарили: 245 раз.

След.

Вернуться в Другие сервисы

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

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