SASGIS

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

Слой Яндекс.Пробки

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

Модератор: Tolik

Re: Слой Яндекс.Пробки

Сообщение dsd_corp » 27 мар 2009, 19:39

svp писал(а):
dsd_corp писал(а):подключить к паскаль-компилеру в SAS.Planet

Там не компилер, а интерпретатор.

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

Re: Слой Яндекс.Пробки

Сообщение feya » 30 мар 2009, 18:02

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

Re: Слой Яндекс.Пробки

Сообщение dsd_corp » 30 мар 2009, 19:02

feya писал(а):dsd_corp
Скрипт для примера вроде компилит. Пробуйте.

Спасибо огромное. все работает зае... чательно ))))

выкладываю пробки для всех:
  1. файл карты: http://cs.911.ru/traffic/YaTraf.zmp (2,6 кб)
  2. для работы нужно в каталог с SASPlanet.exe бросить эту DLL-ку: http://cs.911.ru/traffic/YaTraf.dll (18,4 кб)


а теперь исходники:
исходники DLL-ки в zip: http://cs.911.ru/traffic/YaTraf_dll_src.zip (2,8 кб zip)
исходники модуля DLL-ки как html: http://cs.911.ru/traffic/uYaTraf.pas.html (36,5 кб)

DLL пишет промежуточные данные в реестр. то есть создает ветку HKEY_CURRENT_USER\Software\SAS.Planet\YaTraf
в принципе можно переделать и писать непосредственно в память, учитывая, что DLL линкуется к программе при старте(на этапе компиляции скриптов карт), и "отпускает" ее при завершении работы программы.

теперь осталось решить вопрос с кешированием.
типа добавить для карты параметр - не писать в кеш, либо возможность управлять кешированием из скрипта GetUrlScript.txt. при чем второе было бы оптимальнее, ибо удобнее контролировать "устаревание" тайлов таких нестандартных карт, как эта.
а то получается, что если ставишь "только интернет", то с пробками все ок, тайлы обновляются, но так же все время с сервера тащится карта подложка(основная, а не слой пробок).
а надо чтоб подложка не тащилась, а тащился тока слой.

так же из скрипта было бы неплохо сделать возможность не грузить тайл (если в нужной зоне и так известно, что тайлов нет). незачем лишний раз дергать яндекс - дольше незабанят )

и еще не отображать сообщение "Такого изображения нет на сервере". а то даже в валидных зонах(в центре Москвы) бывают области, где инфы о пробках нет(напр. территория завода ЗИЛ) - в таких местах и тайлы пробок тоже отсутствуют - они пустые тайлы не генерят видимо.

P.S. напомню всем, что пробки видны только в городах Москва, Питер, Ебург и Киев.
dsd_corp
Новичок
 
Сообщения: 46
Зарегистрирован: 25 фев 2009, 19:30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Слой Яндекс.Пробки

Сообщение feya » 30 мар 2009, 20:28

Спасибо огромное. все работает зае... чательно ))))

Тебе спасибо, полностью следовал вышеуказанным инструкциям.
так же из скрипта было бы неплохо сделать возможность не грузить тайл (если в нужной зоне и так известно, что тайлов нет). незачем лишний раз дергать яндекс - дольше незабанят )

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

Re: Слой Яндекс.Пробки

Сообщение dsd_corp » 30 мар 2009, 22:00

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

Тут можно например просто пустую строку возвращать)

то есть этот трюк с пустой строкой уже работает?
если нет, то лучше бы добавить еще одну возвращаемую из скрипта переменную, как раз управляющую статусом запроса.
чтобы был набор комманд, например:
'-dontload' - тайл не грузим
'-force' грузим из инета независимо от наличия в кеше
'-cache' если есть в кеше, берем из него, если нет - значит нет, из инета не грузим
'-auto' действие по умолчанию, т.е. кеш либо инет, либо настройка что в проге на тулбаре выставлена.
при таком раскладе статус запроса в ResultURL вместо URL уже не катит - ведь половине статусов URL как раз нужен будет )


еще в GetUrlScript.txt засунуть бы отдельной переменной(наравне с GetX, GetY...) путь к файлу тайла в кеше(ну типа GetPath), т.е. как он в кеше называется или будет называться(если еще не скачан).
в таком случае я, к примеру, посредством внешней DLL смогу получать время создания файлов кеша, чтобы сравнить с текущим и решить, обновлять его или нет.
ну как-то так...

P.S. я, конечно, зануда еще та ))) у тя и так задач дофига, а я тут прям достаю... )))

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

Re: Слой Яндекс.Пробки

Сообщение vdemidov » 30 мар 2009, 22:11

dsd_corp писал(а):еще в GetUrlScript.txt засунуть бы отдельной переменной(наравне с GetX, GetY...) путь к файлу тайла в кеше(ну типа GetPath), т.е. как он в кеше называется или будет называться(если еще не скачан).
в таком случае я, к примеру, посредством внешней DLL смогу получать время создания файлов кеша, чтобы сравнить с текущим и решить, обновлять его или нет.
ну как-то так...

А вот этого делать не стоит. Так как если добавить поддержку плагинов для хранилищ тайлов, то отдельного файла уже может и не существовать. Только через специальный интерфейс. А вот его нужно продумать.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 136 раз.

Re: Слой Яндекс.Пробки

Сообщение dsd_corp » 31 мар 2009, 00:17

vdemidov писал(а):А вот этого делать не стоит. Так как если добавить поддержку плагинов для хранилищ тайлов, то отдельного файла уже может и не существовать. Только через специальный интерфейс. А вот его нужно продумать.

Ой. Да бросьте. Будет хранилище - не будет пути в переменной. Не будет пути - этот кусок работать перестанет.
Иными словами: вот когда появятся хранилища, тогда об интерфейсах и поговорим )
сейчас-то чего бояться? ))
Тем более я и предложил не вклеивать в программу функции для пробок, а вынести их во внешние библиотеки(плагины), именно для того, чтобы отделить нестандартный функционал от ядра программы.
И кстати, в вашем изложении "специальный интерфейс" - сильно расплывчатое понятие. COM-интерфейсами в программе пока не пахнет даже, встраивать что-то объектное в Pascal Script - тоже сомнительное решение.
В общем об этом надо говорить, когда появится предмет обсуждения.
А пока я просто стараюсь не перенапрягать автора - прошу у него только самого необходимого.
По идее я и сам могу вычислить путь к файлу, благо алгоритм несложен, путь к самому кешу можно взять из ini-файла. Но не вижу смысла, зачем - ведь прога мне сама может сообщить уже готовый путь - в проге-то он все равно уже вычисляется.
или могу периодически вычищать кеш именно этой карты(т.е. всю папку тупо чистить)...
но лучше в любом случае - если прога сама мне позволит управлять загрузкой и обновлением тайлов. в принципе мне все равно - даст она мне путь к тайлу, или даст его время создания и управление его обновлением...
dsd_corp
Новичок
 
Сообщения: 46
Зарегистрирован: 25 фев 2009, 19:30
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Слой Яндекс.Пробки

Сообщение vdemidov » 31 мар 2009, 00:34

Будет пахнуть именно COM-интерфейсами. Точнее построенными по принципу COM, но без использования системной инфраструктуры. И будет уже относительно скоро. В течении ближайших пары неденль буду пытаться прикручивать это добро. И первое что будет прикручено, это хранилища. Для начала, конечно, только стандартные в виде папок с файлами, но в ближайшем будущем будет БерклиДБ или SQLite.
Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
Аватара пользователя
vdemidov
Гуру
 
Сообщения: 1687
Зарегистрирован: 12 дек 2008, 13:10
Откуда: Киев
Благодарил (а): 191 раз.
Поблагодарили: 136 раз.

Re: Слой Яндекс.Пробки

Сообщение dsd_corp » 31 мар 2009, 15:46

to vdemidov: ну ладно, ладно. как наворотите, там и посмотрим что получиццо )))

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

Re: Слой Яндекс.Пробки

Сообщение feya » 31 мар 2009, 16:34

dsd_corp писал(а):to feya: так все-таки, как насчет выноса в params.txt параметра "только интернет" для отдельно взятой карты? пока что это мешает пользоваться пробками больше всего. остальное терпимо, в общем-то...

А как эхто разрулить в плане интерфейса пользователя? Т.е. если просто указывать в параметрах всегда загружать - пользователь об этом ничего не будет знать а прога будет грузить, тут из-за статистики на 2 килобайта часто шум поднимают) не хочется чтоб прога грузила чтолибо до того пока пользователь не укажет явно. С другой стороны можно сделать указание отдельно для карт и слоев источника, но это будет не очень удобно. Такчто тут надо думать, предлагайте.
http://sasgis.org | SAS.Планета | SASPlanet
Аватара пользователя
feya
Гуру
 
Сообщения: 2034
Зарегистрирован: 13 июл 2008, 10:45
Благодарил (а): 5 раз.
Поблагодарили: 32 раз.

Пред.След.

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

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

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