Получение погоды

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Получение погоды

Сообщение Proxy » 06.10.2008 (Пн) 14:20

Вопрос: как получить погоду с gismeteo не прибегая к использованию их HTML шаблонов. Вобщем желательно, что бы оно вписывалось в специфический стиль моей проги на VB, без использования вэббраузер контрола, вобщем получить погоду по тому же протоколу, по какому получают проги типа SPB Weather на КПК. Надо получить только данные о погоде, притом не оплачивая гисметио за юзание их шаблонов. Их рук. проекта не отвечает на пиьма(
Вобщем может кто сталкивался и есть код? Ну или хотя бы понимание как это сделать / в каком виде и через что можно получить данные о погоде (как например у icq бота, они ж ничего гисметео не платят, это свободный проект без единого рекламного банера, т.е. свои $$$ автор за это не платит, а значит как-то законно (без HTML шаблона) запрашивает инфу). Вобщем любая информация приветствуется. А так же может кто знает что-нибудь наподобие погоды и не менее интересующего пользователя?
Follow the white rabbit.

AntonGV
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 24.05.2006 (Ср) 12:10
Откуда: г. Пермь

Re: Получение погоды

Сообщение AntonGV » 06.10.2008 (Пн) 15:14

Получай погоду в xml формате. Ссылка для выбранного города: http://informer.gismeteo.ru/xml/[ID]_1.xml, вместо [ID] указывается id города, например для Москвы http://informer.gismeteo.ru/xml/27612_1.xml

Описание формата
Код: Выделить всё
TOWN   информация о пункте прогнозирования:
  index   уникальный пятизначный код города
  sname   закодированное название города
  latitude   широта в целых градусах
longitude   долгота в целых градусах
FORECAST   информация о сроке прогнозирования:
  day, month, year   дата, на которую составлен прогноз в данном блоке
  hour   местное время, на которое составлен прогноз
  tod   время суток, для которого составлен прогноз: 0 - ночь 1 - утро, 2 - день, 3 - вечер
  weekday   день недели, 1 - воскресенье, 2 - понедельник, и т.д.
  predict   заблаговременность прогноза в часах
PHENOMENA    атмосферные явления:
  cloudiness   облачность по градациям:  0 - ясно, 1- малооблачно, 2 - облачно, 3 - пасмурно
  precipitation   тип осадков: 4 - дождь, 5 - ливень, 6,7 – снег, 8 - гроза, 9 - нет данных, 10 - без осадков
  rpower   интенсивность осадков, если они есть. 0 - возможен дождь/снег, 1 - дождь/снег
  spower   вероятность грозы, если прогнозируется: 0 - возможна гроза, 1 - гроза
PRESSURE   атмосферное давление, в мм.рт.ст.
TEMPERATURE   температура воздуха, в градусах Цельсия
WIND   приземный ветер
  min, max   минимальное и максимальное значения средней скорости ветра, без порывов
  direction    направление ветра в румбах, 0 - северный, 1 - северо-восточный,  и т.д.
RELWET   относительная влажность воздуха, в %
HEAT   комфорт - температура воздуха по ощущению одетого по сезону человека, выходящего на улицу
Если долго мучиться, что-нибудь получится

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Получение погоды

Сообщение Proxy » 06.10.2008 (Пн) 16:09

<?xml version="1.0" ?>
<MMWEATHER>
<REPORT type="frc3">
<TOWN index="27612" sname="%CC%EE%F1%EA%E2%E0" latitude="56" longitude="38">
<FORECAST day="6" month="10" year="2008" hour="22" tod="3" predict="18" weekday="2">
<PHENOMENA cloudiness="3" precipitation="4" rpower="0" spower="0"/>
<PRESSURE max="745" min="743"/>
<TEMPERATURE max="16" min="14"/>
<WIND min="3" max="6" direction="4"/>
<RELWET max="93" min="88"/>
<HEAT min="14" max="16"/>
</FORECAST>
<FORECAST day="7" month="10" year="2008" hour="4" tod="0" predict="24" weekday="3">
<PHENOMENA cloudiness="3" precipitation="4" rpower="1" spower="0"/>
<PRESSURE max="746" min="744"/>
<TEMPERATURE max="15" min="13"/>
<WIND min="1" max="3" direction="6"/>
<RELWET max="96" min="91"/>
<HEAT min="13" max="15"/>
</FORECAST>
<FORECAST day="7" month="10" year="2008" hour="10" tod="1" predict="30" weekday="3">
<PHENOMENA cloudiness="3" precipitation="4" rpower="0" spower="0"/>
<PRESSURE max="747" min="745"/>
<TEMPERATURE max="14" min="12"/>
<WIND min="2" max="5" direction="0"/>
<RELWET max="91" min="86"/>
<HEAT min="12" max="14"/>
</FORECAST>
<FORECAST day="7" month="10" year="2008" hour="16" tod="2" predict="36" weekday="3">
<PHENOMENA cloudiness="3" precipitation="4" rpower="0" spower="0"/>
<PRESSURE max="748" min="746"/>
<TEMPERATURE max="14" min="12"/>
<WIND min="2" max="5" direction="0"/>
<RELWET max="86" min="81"/>
<HEAT min="12" max="14"/>
</FORECAST>
</TOWN>
</REPORT>
</MMWEATHER>

Вот что получил. А где взять индекс AAAAA города N?
Follow the white rabbit.

AntonGV
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 24.05.2006 (Ср) 12:10
Откуда: г. Пермь

Re: Получение погоды

Сообщение AntonGV » 06.10.2008 (Пн) 17:06

может где-то на сайте gismeteo.ru есть нормальный список, но я нашел только это (кусок js):
Gismeteo dbtlist.rar
(35.56 Кб) Скачиваний: 219

там массив, состоящий из кода и названия города, например "29865Абакан", везде первые 5 символов это id города, а дальше название
Если долго мучиться, что-нибудь получится

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Получение погоды

Сообщение Proxy » 06.10.2008 (Пн) 17:25

Ок. Пасиб. Разобрался во всём, всё работает отлично. А есть что ещё из подобных сетевых удобств? Как и где например можно получить курс валют такой же XML структурой? Или ещё что есть? Просто не могу придумать, что бы ещё могло быть полезным пользователям калькулятора. Погода, курс валют, а вот что ещё не знаю.
Follow the white rabbit.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Получение погоды

Сообщение Antonariy » 07.10.2008 (Вт) 11:06

Курсы английского, увеличение члена и сомнительные знакомства.
Лучший способ понять что-то самому — объяснить это другому.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Получение погоды

Сообщение Proxy » 07.10.2008 (Вт) 17:49

Намёк понял, обойдусь погодой. Просто и самому не нравится когда в софте всякий бесполезняк крутится. Ну мой замысел изначально был максимально отдалить интерфейс от скучных офисных мотивов, теперь осознал, что переусердствовал(
Follow the white rabbit.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Re: Получение погоды

Сообщение Debugger » 07.10.2008 (Вт) 17:59

Proxy писал(а):что бы ещё могло быть полезным пользователям калькулятора

Antonariy писал(а):Курсы английского, увеличение члена и сомнительные знакомства.

:D :D :D
Навряд ли пользователям калькулятора поможет погода. Только курс валют и часики могут помочь.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Получение погоды

Сообщение Proxy » 07.10.2008 (Вт) 19:33

Ну это же не совсем простой калькулятор.
Follow the white rabbit.

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Re: Получение погоды

Сообщение Matew » 08.10.2008 (Ср) 2:09

Курс валют можно получить с http://www.rbc.ru/
Вот так это делает 1С: :)
Адрес1 = "http://cbrates.rbc.ru/tsv/cb/"; // в интервале
Адрес2 = "http://cbrates.rbc.ru/tsv/"; // по 1 дате
Если НачДата=КонДата Тогда // по 1 дате
Адрес = Адрес2;
ТМП = "/"+ДатаГод(КонДата)+"/"+Формат(ДатаМесяц(КонДата),"Ч(0)2.0")+"/"+Формат(ДатаЧисло(КонДата),"Ч(0)2.0");
Иначе // в интервале
Адрес = Адрес1;
ТМП = "";
КонецЕсли;
Валюта=СоздатьОбъект("Справочник.Валюты");
Стр = "";
МахДата = Дата(0);
Для Н=1 По СписокВалют.РазмерСписка() Цикл
Если СписокВалют.Пометка(Н)=0 Тогда
Продолжить;
КонецЕсли;
ВалютаТМП = СписокВалют.ПолучитьЗначение(Н);
Если (Результат=1)И(Авто=0) Тогда
Сообщить("Загрузка курсов валюты: "+ВалютаТМП);
Сообщить("Дата"+СимволТабуляции+СимволТабуляции+"Курс"+СимволТабуляции+"Кратность");
КонецЕсли;
Если Авто=1 Тогда
Состояние("Загрузка курсов валюты: "+ВалютаТМП);
КонецЕсли;

Попытка
Соединение.ПолучитьКакСтроку(Адрес+Прав(ВалютаТМП.Код,3)+ТМП+".tsv", Стр);
Исключение
Сообщить("Неудачная попытка соединения.");
КонецПопытки;
Текст=СоздатьОбъект("Текст");
Текст.ДобавитьСтроку(Стр);

Курсы=СоздатьОбъект("Периодический");
Курсы.ИспользоватьОбъект("Курс",ВалютаТМП);
Кратности=СоздатьОбъект("Периодический");
Кратности.ИспользоватьОбъект("Кратность",ВалютаТМП);

НачальныйКурс=0;
НачальнаяКратность=0;
НачальнаяДатаКурса=Дата(0);
НачатьТранзакцию();
Для Инд=1 По Текст.КоличествоСтрок() Цикл
Стр=Текст.ПолучитьСтроку(Инд);
Если (Стр="")ИЛИ(Найти(Стр,СимволТабуляции)=0) Тогда
Продолжить;
КонецЕсли;
Если НачДата=КонДата Тогда
ДатаКурса=КонДата;
Иначе
ДатаКурсаСтр=ВыделитьПодСтроку(Стр);
ДатаКурса=Дата(Лев(ДатаКурсаСтр,4),Сред(ДатаКурсаСтр,5,2),Сред(ДатаКурсаСтр,7,2));
КонецЕсли;
Кратность=Число(ВыделитьПодСтроку(Стр));
Курс=Число(ВыделитьПодСтроку(Стр));

Если ДатаКурса>КонДата Тогда
Прервать;
КонецЕсли;

Если ДатаКурса<НачДата Тогда //Запоминание курса на начало интервала
Продолжить;
КонецЕсли;

Курсы.ВыбратьЗначения(ДатаКурса,ДатаКурса);
Курсы.ПолучитьЗначение();
Кратности.ВыбратьЗначения(ДатаКурса,ДатаКурса);
Кратности.ПолучитьЗначение();
Если (Курс<>Курсы.Значение) или (Кратность<>ВалютаТМП.Кратность.Получить(ДатаКурса)) Тогда
Курсы.ДатаЗнач=ДатаКурса;
Курсы.Значение=Курс;
Курсы.Записать();
Кратности.ДатаЗнач=ДатаКурса;
Кратности.Значение=Кратность;
Если ВалютаТМП.Кратность.Получить(ДатаКурса)<>Кратность Тогда
Кратности.Записать();
КонецЕсли;
Если (Результат=1)И(Авто=0) Тогда
Сообщить(Строка(ДатаКурса)+СимволТабуляции+Курс +СимволТабуляции+СимволТабуляции+ Кратность,"I");
КонецЕсли;
МахДата = макс(ДатаКурса,МахДата);
КонецЕсли;
Если (Результат=1)И(Авто=0) Тогда
Состояние("Загрузка курса на "+ДатаКурса+" - "+Курс);
КонецЕсли;
КонецЦикла;
ЗафиксироватьТранзакцию();
КонецЦикла;

<Edit>
Подредактировал теги :)
</Edit>
Последний раз редактировалось Matew 09.10.2008 (Чт) 3:44, всего редактировалось 1 раз.
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Получение погоды

Сообщение Antonariy » 08.10.2008 (Ср) 10:07

Курсы валют — разумно, котировки ценных бумаг и рыночные индексы тоже, хотя мало кому нужно (у таких людей свои "калькуляторы"). Погода — нет. Что там считать? Среднюю температуру по области?
Лучший способ понять что-то самому — объяснить это другому.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Получение погоды

Сообщение Antonariy » 08.10.2008 (Ср) 10:13

Matew писал(а):Вот так это делает 1С: :)
Оно говорит (в смысле 1с) !!!!! Оно хочет поработить мир!!!!!
Лучший способ понять что-то самому — объяснить это другому.

Денис
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2734
Зарегистрирован: 07.11.2006 (Вт) 13:55
Откуда: Ейск, Краснодарский край

Re: Получение погоды

Сообщение Денис » 08.10.2008 (Ср) 10:28

Ага, да! :twisted:
Matew должен был юзать тег Quote
Программирование — богоизбранная дисциплина! Если бог и есть, то вселенную он скомпилировал, не иначе.

Proxy
Профессор VB наук
Профессор VB наук
Аватара пользователя
 
Сообщения: 2941
Зарегистрирован: 31.08.2007 (Пт) 4:41

Re: Получение погоды

Сообщение Proxy » 08.10.2008 (Ср) 18:35

А как гисметео возвращает данные когда гроза и снег, или гроза и дождь? Гроза вместе с ними идёт одним полем Атмосферные явления. Суммой они возвращаться не могут, т.к. возникают неоднозначности. Сейчас нарисовал иконки (38 штук) для различных погодных условий и понял, что случаи совмещения атмосферных явлений рассматриваю только Дождь со Снегом (ибо так документировано), а как быть с грозой и <чем-нибудь>?

Вот ещё: стоит ли учитывать, что гисметео возвратит данные с наличием Атмосферных явлений при Ясной облачности? Вообще толькочто нашёл чужой иконпак с погодой, он тоже не учитывает, что гроза может происходить с другими Атмосферными явлениями и осадки при ясной облачности. Делать так же?
Follow the white rabbit.

Zenitchik
Постоялец
Постоялец
 
Сообщения: 369
Зарегистрирован: 21.12.2006 (Чт) 14:48

Re: Получение погоды

Сообщение Zenitchik » 08.10.2008 (Ср) 20:09

У меня подозрение, что информер гонит туфту. Достоверные данные отображаются в поле "Текущая погода". Информер обновляется чаще, чем оно - это настораживает. Памятуя, что ихняя "Станция" безбожно режет пиковые значения температур...
Знание английского языка - затрудняет понимание кода

kibernetics
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 945
Зарегистрирован: 03.05.2006 (Ср) 13:31
Откуда: Minsk

Re: Получение погоды

Сообщение kibernetics » 28.10.2008 (Вт) 11:03

AntonGV отличный хинт
спасибо


Вернуться в Народный треп

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

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

    TopList