SASGIS

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

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

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

Модератор: Tolik

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

Сообщение dsd_corp » 05 мар 2009, 06:06

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

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

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

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

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

Сообщение dsd_corp » 05 мар 2009, 06:12

P.S. Если чо, на паскакале таймштамп получается приблизительно так:
Код: Выделить всё
function GetUTS: Longint;
begin
  result := trunc((now - 25569.0) * 86400);
end;
dsd_corp
Новичок
 
Сообщения: 46
Зарегистрирован: 25 фев 2009, 19:30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Vasya » 05 мар 2009, 10:15

Koss
Карты - Локальные карты - mapia.com.ua
Аватара пользователя
Vasya
Советчик
 
Сообщения: 266
ICQ: 137791
Зарегистрирован: 14 июл 2008, 13:06
Откуда: Одесса
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.

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

Сообщение svp » 05 мар 2009, 13:25

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

А ещё хотелось бы параметр, который определял бы время истечения актуальности тайла. Снимки облачности, например, могут оставаться актуальными, например, несколько часов.
Для яндекс пробок можно поставить несколько минут. Решение качать/не качать можно принимать опираясь на дату создания файла. Кроме того у параметра должно работать значение 0 (то есть качать каждый раз с сайта; и "-1", то есть снимки актуальны всегда, поэтому однажды их закачав уже не перекачивать).
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.

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

Сообщение dsd_corp » 05 мар 2009, 14:49

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

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

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

Сообщение dsd_corp » 05 мар 2009, 21:51

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

теперь вопрос к feya: можно ли эти данные получить внутри скрипта формирования URL тайла (GetUrlScript.txt)?
при чем желательно, чтобы url-источники дергались не чаще чем раз в пару-тройку минут(ибо нафик надо для каждого тайла одно и то же тащить)?
dsd_corp
Новичок
 
Сообщения: 46
Зарегистрирован: 25 фев 2009, 19:30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение feya » 05 мар 2009, 22:09

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

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

Сообщение dsd_corp » 06 мар 2009, 03:38

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. извините, если не туда запостил. просто чтоб рядом с обсуждением было )
dsd_corp
Новичок
 
Сообщения: 46
Зарегистрирован: 25 фев 2009, 19:30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

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

Сообщение Parasite » 06 мар 2009, 10:15

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

Не совсем понятен сам смысл кэширования Планетой постоянно изменяющихся карт. Может мне кто-то разжует более доходчиво?
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: Чего вы хотите?

Сообщение svp » 06 мар 2009, 11:05

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

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

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

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

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

Сделайте отдельную тему про яндекс-пробки, а модераторы перенесут туда обсуждение и поставят на неё ссылки.
Аватара пользователя
svp
Советчик
 
Сообщения: 447
ICQ: 204094886
Зарегистрирован: 26 авг 2008, 11:14
Откуда: Белгород
Благодарил (а): 2 раз.
Поблагодарили: 7 раз.

Пред.След.

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

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

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