Чего вы хотите?

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

Модератор: Tolik

dsd_corp
Новичок
Сообщения: 46
Зарегистрирован: 25 фев 2009, 19:30

Re: Чего вы хотите?

Сообщение dsd_corp »

Здрасте еще раз )

to feya:
Очень хочется Яндекс.Пробок )))
есть практически готовый zmp-файл слоя пробок.
пока что для Москвы и области.
есть проблема.
в скрипте нужно получить Unix TimeStamp, а там даже функций для работы с TDateTime нет (((
пока таймштамп подставляю вручную - все работает отлично.
таймштамп действует несколько минут. потом яндекс дает отлупы.

еще что хотелось бы для подобных слоев в настройки карт:
- параметр "всегда качать карту из инета" (инфа о пробках ведь постоянно обновляется)
- параметр "не выводить сообщение [такого изображения нет на сервере]" - яндекс не генерит картинки там где пробок нет.

но самое главное - как получить таймштамп!
dsd_corp
Новичок
Сообщения: 46
Зарегистрирован: 25 фев 2009, 19:30

Re: Чего вы хотите?

Сообщение dsd_corp »

P.S. Если чо, на паскакале таймштамп получается приблизительно так:

Код: Выделить всё

function GetUTS: Longint;
begin
  result := trunc((now - 25569.0) * 86400);
end;
Аватара пользователя
Vasya
Советчик
Сообщения: 266
Зарегистрирован: 14 июл 2008, 13:06
Откуда: Одесса
Поблагодарили: 3 раза
Контактная информация:

Re: Чего вы хотите?

Сообщение Vasya »

Koss
Карты - Локальные карты - mapia.com.ua
Аватара пользователя
svp
Советчик
Сообщения: 447
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Чего вы хотите?

Сообщение svp »

dsd_corp писал(а):еще что хотелось бы для подобных слоев в настройки карт:

А ещё хотелось бы параметр, который определял бы время истечения актуальности тайла. Снимки облачности, например, могут оставаться актуальными, например, несколько часов.
Для яндекс пробок можно поставить несколько минут. Решение качать/не качать можно принимать опираясь на дату создания файла. Кроме того у параметра должно работать значение 0 (то есть качать каждый раз с сайта; и "-1", то есть снимки актуальны всегда, поэтому однажды их закачав уже не перекачивать).
dsd_corp
Новичок
Сообщения: 46
Зарегистрирован: 25 фев 2009, 19:30

Re: Чего вы хотите?

Сообщение dsd_corp »

svp писал(а):А ещё хотелось бы параметр, который определял бы время истечения актуальности тайла. Снимки облачности, например, могут оставаться актуальными, например, несколько часов.
Для яндекс пробок можно поставить несколько минут.

тут похоже есть еще одна закавыка... у яндекса актуальность по-другому определяется. таймштампами. я пока не разобрался до конца, но похоже, что яндексу для каждой карты пробок(мск, питер и т.п.) таймштамп нужно сначала отпарсить с какого-то урла. т.е. там не любое число прокатывает. они (таймштампы) обновляются там раз в 3-10 минут. ну около того.
dsd_corp
Новичок
Сообщения: 46
Зарегистрирован: 25 фев 2009, 19:30

Re: Чего вы хотите?

Сообщение dsd_corp »

Разобрался с таймштампами. Актуальные для городов берутся отсюда(это для Питера): http://traffic.maps.yandex.net/500/04/last/traffic.js
В результатепосле парсинга получается вот это: http://cs.911.ru/traffic/yatraf.php

теперь вопрос к feya: можно ли эти данные получить внутри скрипта формирования URL тайла (GetUrlScript.txt)?
при чем желательно, чтобы url-источники дергались не чаще чем раз в пару-тройку минут(ибо нафик надо для каждого тайла одно и то же тащить)?
Аватара пользователя
feya
Гуру
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз
Поблагодарили: 56 раз

Re: Чего вы хотите?

Сообщение feya »

dsd_corp
Без доработки нельзя.
http://sasgis.org | SAS.Планета | SASPlanet
dsd_corp
Новичок
Сообщения: 46
Зарегистрирован: 25 фев 2009, 19:30

Re: Чего вы хотите?

Сообщение dsd_corp »

feya писал(а):dsd_corp
Без доработки нельзя.

ну вообще-то я и имел ввиду с доработкой конечно же.
в том смысле что - возьмешься или "нуевонафик"?

например можно в паскаль-скрипт добавить функцию GetYaTrafTimeStamp(map_id: integer)
и чтобы она реально скачивала и парсила вышеописанный файл только при первом вызове или если с момента предыдущего вызова прошло 3 или 5 минут(это можно вынести в настройки), в остальных случаях выдавала бы сохраненный результат от предыдущего скачивания.
при чем чтобы парсила только файл, относящийся к запрошенной map_id, а не все 4 файла за раз(для каждого из городов).
так экономнее. а то мало ли. если чел в данный момент смотрит только москву, нафик качать еще для питера, ебурга и киева...
соответственно понятно куда в URL map_id подставлять:
http://traffic.maps.yandex.net/2000/04/last/traffic.js - Москва
http://traffic.maps.yandex.net/500/04/last/traffic.js - Питер
http://traffic.maps.yandex.net/700/04/last/traffic.js - Ебург
http://traffic.maps.yandex.net/1600/04/last/traffic.js - Киев



А тут то что у меня уже есть:

настройки для слоя пробок:
GetUrlScript.txt

Код: Выделить всё

var
  cx, cy, _z, cz, mn, ts, map_id: integer;
  ts_2000, ts_500, ts_700, ts_1600: integer;
begin

ts_2000:=1236273533; //Москва
ts_500:=1236273658; //Санкт-Петербург
ts_700:=1236273607; //Екатеринбург
ts_1600:=1236273622; //Киев

 ts:=0;

 map_id:=0;

 cz:=24-GetZ;

 _z:=cz+8;
 mn:=round(intpower(2,_z));

 cx:=GetX*mn;
 cy:=GetY*mn;

 if ((cx>1283457024)and(cx<1308622848)and(cy>654311424)and(cy<679477248)) then begin
    map_id:=2000;
    ts:=ts_2000;
 end else if ((cx>1224736768)and(cx<1275068416)and(cy>603979776)and(cy<637534208)) then begin
    map_id:=500;
    ts:=ts_500;
 end else if ((cx>1433927680)and(cx<1436549120)and(cy>660078592)and(cy<662700032)) then begin
    map_id:=700;
    ts:=ts_700;
 end else if ((cx>1254096896)and(cx<1257766912)and(cy>724566016)and(cy<728236032)) then begin
    map_id:=1600;
    ts:=ts_1600;
 end;

 ResultURL:=GetURLBase+inttostr(map_id)+'?layer=4&timestamp='+inttostr(ts)+'&x='+inttostr(cx)+'&y='+inttostr(cy)+'&scale='+inttostr(cz)+'&mn='+inttostr(mn);
end.


params.txt

Код: Выделить всё

[PARAMS]
GUID={C32B96AD-3AC5-4170-ADD7-47B2222AFC99}
asLayer=1
name=Пробки (Яндекс.Карты)
name_9=Traffic (Yandex.Maps)
NameInCache=yatraf
DefURLBase=http://traffic.maps.yandex.net/tiles/
ContentType=image/png
ParentSubMenu=
Ext=.png
projection=2
sradiusa=6378137
sradiusb=6356752
separator=0
UseDwn=1
Usestick=1
UseGenPrevious=0
Usedel=1
Usesave=1
UseAntiBan=0
Sleep=0
DefHotKey=0
BanIfLen=0

собственно готовый файл: http://cs.911.ru/traffic/YaTraf.zmp (GUID я ему сгенерил, а слизывал формат с яндекс-гибрида)

если отсюда( http://cs.911.ru/traffic/yatraf_htm.php ) сходу скопировать все 4 строчки в соответствующее место в GetUrlScript.txt внутри zmp-файла и сразу же открыть программу, можно увидеть пробки во всех четырех городах )))
немного глючит по краям областей пробок(за пределами городов), но это потому что крайние координаты городов я приблизительно проставил.

P.S. извините, если не туда запостил. просто чтоб рядом с обсуждением было )
Аватара пользователя
Parasite
Администратор
Сообщения: 5646
Зарегистрирован: 23 окт 2008, 17:38
Благодарил (а): 124 раза
Поблагодарили: 508 раз

Re: Чего вы хотите?

Сообщение Parasite »

dsd_corp писал(а):при чем желательно, чтобы url-источники дергались не чаще чем раз в пару-тройку минут(ибо нафик надо для каждого тайла одно и то же тащить)?

Не совсем понятен сам смысл кэширования Планетой постоянно изменяющихся карт. Может мне кто-то разжует более доходчиво?
The only difference between me and a mad man is that I am not mad. /Salvador Dali/
Изображение
Аватара пользователя
svp
Советчик
Сообщения: 447
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раза
Поблагодарили: 7 раз
Контактная информация:

Re: Чего вы хотите?

Сообщение svp »

Parasite писал(а):Не совсем понятен сам смысл кэширования Планетой постоянно изменяющихся карт

Например для скорости. Если карты живут несколько минут или несколько часов, то почему бы тайлы не закешировать. Тем более что определить возраст тайла не сложно даже из скрипта.
dsd_corp писал(а):например можно в паскаль-скрипт добавить функцию GetYaTrafTimeStamp(map_id: integer)

Можно в скрипт добавить функцию, например, HTTPGet(url, timeout), которая бы брала что-то с указанного URL'а и помещала в строку. А строку можно парсить из того же скрипта.
Также в скрипт помжно ввести глобальный контекст. Чтобы между разными срабатываниеми скрипта значения переменных этого глобального контекста не обнулялись.

Получается вопрос стоит не в том, чтобы сделать конкретную примочку у яндексу, а в том, чтобы сделать расширение функционала, доступного через скрипты. Это гораздо полезнее.

dsd_corp писал(а):P.S. извините, если не туда запостил. просто чтоб рядом с обсуждением было )

Сделайте отдельную тему про яндекс-пробки, а модераторы перенесут туда обсуждение и поставят на неё ссылки.
Закрыто

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