SASGIS

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

Яндекс карты

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

Модератор: Tolik

Re: Яндекс карты

Сообщение Parasite » 09 сен 2009, 18:08

garl писал(а):чем так плох экспорт в их формат?

Понятия не имею - тут вроде бы нигде не обсуждалось, хороший он или плохой. :)

garl писал(а):всё равно ведь на каждую умную 0пу найдётся шуруп :)

Совершенно верно. И чем меньше шурупов в 0пе - тем ей спокойнее, приятнее, и тем дольше она проживет на радость всем и не придется изобретать новую 0пу взамен старой и обессилевшей, не так ли? А разве не именно долгожительство уже известной 0пы это нам всем и нужно - вместо нового дзена с новой, а? :roll: Текущий пример - паблик-ключи на DG. Утомили их - все, речка халявы кончилась, и остался тооооненький ручеек 49го стека с таймаутами....
Заметь - сама цифирка "3" в "ogf3" не говорит ли тебе о том, что это уже 0па н.3, и далеко не последняя?

garl писал(а):Формат открытый.

1. Кем открытый? Производителем? Вряд ли.
2. И если и да - тогда что там было ломать и разбираться?? :)

garl писал(а):У людей я нашел целый ftp

Да-да. Еще большая такая кучка шурупов в ту же 0пу.

garl писал(а):а мы теперь можем им дать конвертер из нашего формата в их.

А ты дал им готовый конвертор? Или выложил доки в паблик? Нужное - подчеркнуть.
Против первого лично я ничего не имею, а на второе - производитель обычно весьма быстро реагирует апдейтом своего продукта, если не дурак (пример - опять же DG).

Обычно такие вещи сообщаются "на ушко" конкретно тому, кто делает конвертор - кой конвертор потом и гуляет по сети (как правило БЕЗ обьяснений, как и где автор добыл данные - он просто работает, не нравится - не юзай). Для твоей же пользы - сам же дольше и будешь пользовать, уж не говоря о том что реверс-инжиниринг патентованных технологий и решений - дело вообще-то подсудное. :)

Ша, кончаем оффтоп. Просто пунктик для "подумать на будущие разы". Мне-то как раз все равно - я его не использую и не собираюсь. :lol:
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
Parasite
Администратор
 
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раз.
Поблагодарили: 512 раз.

Re: Яндекс карты

Сообщение vovoshka » 09 сен 2009, 18:36

буду тоже очень рад, если сас будет поддерживать этот формат хранения, позволяющий многократно снизить количество файлов кеша.
2Parasite
помойму ты не совсем прав. если ты внимательнее почитаеш ссылку на то место где обсуждается кеш, то увидиш что обсуждают его в том числе и РАЗРАБОТЧИКИ программы. и косвенно утверждают что не планируют закрытие кэша, понимая что это снизит популярность программы, и объясняя что сам кеш непосредственно раздать им недаёт только договор с поставщиком.
vovoshka
Новичок
 
Сообщения: 9
Зарегистрирован: 20 июл 2009, 10:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Яндекс карты

Сообщение feya » 10 сен 2009, 10:54

Мож я тупой, но из описания я почти ничего не понял)
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 56 раз.

Re: Яндекс карты

Сообщение DJ VK » 10 сен 2009, 12:04

Щас напишу код. Только его надо проверить будет.

Mobile Yandex Export API
int MapType=2; тип карты. 2=спутник с наложенным гибридом.
Z - масштаб минус один , начинается с нуля.

int TableOffset=0x400;
int TableSize=0x100;
if(Z<7) TableSize=(2<<Z);
int DataOffset=TableOffset+TableSize*TableSize*6;

AnsiString GetMobileFile(int X,Y,Z) - получает имя файла для хранения тайлов.
int GetMobileFilePos(int X,Y,Z) - получает позицию в таблице.

1.Берем из выбранной области тайл. открываем его в памяти из кеша.
2. накладываем на него png если включено.
3. Копируем в отдельные jpg разделив его на 4 квадрата.
0|1
2|3
4. Вычисляем файл экспорта GetMobileFile
5. в папке экспорта создаем если нет такой путь и файл. размер создаваемого файла DataOffset
Первые восемь байт файла кеша - заголовок
59 4E 44 58 01 00 00 04 (Последние цифры 00 04 - скорее всего адрес таблицы TableOffset=0x400)
6. по функции Pos=GetMobileFilePos вычисляем позицию в таблице.
TableOffset+6*Pos - смещение в файле.
Смотрим 4 фрагмента по 6 байт, если они ненулевые - значит эти фрагменты уже есть.
Как поступать в таком случае - отдельный вопрос.
7. В конец файла дописываем 4 квадрата 128х128 подряд.
0|1
2|3
Запоминаем адреса по которым их записали adr0...adr3. И длины len0...len3
Код: Выделить всё
typedef struct
{
    unsigned int Addr;
    unsigned short Len;
}TFileRec;
typedef struct
{
    TFileRec Pointers[4]
}TTilePointer;

TTilePointer TilePointer;
8. пишем 24 байта в файл
смещение в файле FPos=TableOffset+6*Pos
Адрес буфера Buff=&TilePointer
Длина буфера sizeof(TilePointer)=24
===============с++=====================
Код: Выделить всё
AnsiString __fastcall TForm1::GetMobileFile(int X,Y,Z)
{
    AnsiString MobileFile="";
    MobileFile=IntToStr(Z)+"\\";
    if(Z>15)
    {
      Mask=(1<<(Z-15))-1;
      Num=(((X>>15)&Mask)<<4)+(((Y>>15)&Mask));
      MobileFile=MobileFile+IntToHex(Num,2)+"\\";
    }
    if(Z>11)
    {
      Mask=(1<<(Z-11))-1;
      Mask=Mask&0xF;
      Num=(((X>>11)&Mask)<<4)+(((Y>>11)&Mask));
      MobileFile=MobileFile+IntToHex(Num,2)+"\\";
    }
    if(Z>7)
    {
      Mask=(1<<(Z-7))-1;
      Mask=Mask&0xF;
      Num=(((X>>7)&Mask)<<8)+(((Y>>7)&Mask)<<4)+MapType;
    }
    else Num=MapType;
    MobileFile=MobileFile+IntToHex(Num,3);
    return MobileFile;
}

int __fastcall TForm1::GetMobileFilePos(int X,int Y,int Z)
{
  int TablePos=0;
  int x=X&0x7F;
  int y=Y&0x7F;
  TablePos=((y&0x40)<<9)+((x&0x40)<<8)+((y&0x20)<<8)+((x&0x20)<<7)
          +((y&0x10)<<7)+((x&0x10)<<6)+((y&0x08)<<6)+((x&0x08)<<5)
          +((y&0x04)<<5)+((x&0x04)<<4)+((y&0x02)<<4)+((x&0x02)<<3)
          +((y&0x01)<<3)+((x&0x01)<<2);
  return TablePos;
}
Вложения
cache.rar
Образец файла
(158.77 KiB) Скачиваний: 194
Последний раз редактировалось DJ VK 10 сен 2009, 13:33, всего редактировалось 5 раз(а).
Аватара пользователя
DJ VK
Гуру
 
Сообщения: 1468
Зарегистрирован: 16 апр 2009, 13:57
Откуда: 8 км. от МКАД
Благодарил (а): 82 раз.
Поблагодарили: 323 раз.

Re: Яндекс карты

Сообщение vovoshka » 10 сен 2009, 12:32

feya
может тут будет понятнее посмотреть?
http://clubs.ya.ru/mobilemaps/replies.x ... maps-22458
это ссылка на место на форуме, где раскапывали принцип адресации. там же есть некие более понятные визуально описания. и даже некие утилитки для работы с файлами в этом формате.
http://clubs.ya.ru/mobilemaps/replies.xml?item_no=21798
вот тут есть скачаные файлы в этом формате. может открыть его будет проще чем объяснять? ;)
vovoshka
Новичок
 
Сообщения: 9
Зарегистрирован: 20 июл 2009, 10:17
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Яндекс карты

Сообщение Trick » 10 сен 2009, 19:04

feya да все просто ! на самом деле народ давно париться что бы выкачать кеш яндекса и использовать в мобильном.. я сам лично пользовался мобильными яндекс картами.. выкачал кеши крупных городов.. вот что бы помочь.. нужен ЭКСПОРТ из САС планеты в кеш "МЯК" тогда парни будут благодарны погроб :) в третьей версии же они сделали один единым атласом.. очень удобно! нужно просто выкачивать себе любоуь свой город и пользоваться, кстати включая GPS навигацию и маршруты! так что feya очень на тебя расчитываем.. DJ VK уже любезно и кропотливо написал исходник.. надо бы его проверить..
Аватара пользователя
Trick
Новичок
 
Сообщения: 38
ICQ: 131014411
Зарегистрирован: 14 июл 2009, 01:55
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Яндекс карты

Сообщение feya » 17 сен 2009, 14:44

Все разобрался, спасибо DJ VK!
В ближайшее время постараюсь сделать экспорт.
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 56 раз.

Re: Яндекс карты

Сообщение feya » 17 сен 2009, 14:47

я так понял в 3й версии просто спутника нет?
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 56 раз.

Re: Яндекс карты

Сообщение DJ VK » 19 сен 2009, 19:53

feya писал(а):я так понял в 3й версии просто спутника нет?

Скорее всего нет. Там он с наложенным гибридом загружается. А мы можем подсунуть все что угодно. В данном случае jpg. А карта MapType=1 может png? не знаю, если да, то они тогда графическим форматом отличаются.

Я пробовал только карту 18 масштаба и сходу по названию файлов кеша на Ftp прикинул соответствие других, поэтому не знаю насколько написал код верно для других слоев, писал интуитивно (как всегда. Ну и рассчеты на бумажке :roll: ). Уменя нет навигатора для проверки....
Аватара пользователя
DJ VK
Гуру
 
Сообщения: 1468
Зарегистрирован: 16 апр 2009, 13:57
Откуда: 8 км. от МКАД
Благодарил (а): 82 раз.
Поблагодарили: 323 раз.

Re: Яндекс карты

Сообщение feya » 19 сен 2009, 22:57

DJ VK
Ваш код работает прекрасно, единственная ошибочка это if(Z<7) TableSize=(2<<Z); а надо <8.
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 56 раз.

Пред.След.

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

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

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