Гость
Map
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Parsing metar data in windows / 17 сообщений из 17, страница 1 из 1
07.08.2022, 14:22
    #109477
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
Беру в Норвежском Метеорологическом институте каждые пол-часа такой вот файлик.
Спойлер
URRP 061030Z 02007MPS 9999 FEW///CB 31/14 Q1013 R05/CLRD70 TEMPO VRB11G18MPS 3000 -TSRA SCT005 BKN020CB RMK QFE755/1007= URRP 061100Z 02006MPS 9999 FEW///CB 31/13 Q1013 R05/CLRD70 TEMPO 3000 -SHRA SCT005 BKN020CB RMK QFE755/1006= URRP 061130Z 01004MPS 340V060 9999 FEW///CB 33/14 Q1013 R05/CLRD70 TEMPO 3000 -SHRA SCT005 BKN020CB RMK QFE754/1006= URRP 061200Z 07005MPS 040V100 9999 FEW///CB 34/11 Q1012 R05/CLRD70 TEMPO 3000 -SHRA SCT005 BKN020CB RMK QFE754/1006= URRP 061230Z 10006MPS 050V130 9999 FEW///CB 35/11 Q1012 R05/CLRD70 NOSIG RMK QFE754/1006= URRP 061300Z 08003MPS 050V110 9999 FEW///CB 34/10 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 061330Z 10006MPS 9999 FEW///CB 35/10 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 061400Z 11006MPS 9999 FEW///CB 31/12 Q1012 R05/CLRD70 TEMPO 10010G17MPS RMK QFE754/1006= URRP 061430Z 11005MPS 9999 FEW///CB 32/12 Q1012 R05/CLRD70 TEMPO 10010G17MPS RMK QFE754/1005= URRP 061500Z 11003MPS 9999 FEW///CB 32/12 Q1012 R05/CLRD70 TEMPO 10010G17MPS RMK QFE754/1005= URRP 061530Z 09004MPS 9999 FEW///CB 32/11 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 061600Z 06003MPS 9999 FEW///CB 30/13 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 061630Z 03003MPS 9999 FEW///CB 28/12 Q1012 R05/CLRD70 NOSIG RMK QFE754/1006= URRP 061700Z 03004MPS CAVOK 28/12 Q1012 R05/CLRD70 NOSIG RMK QFE754/1006= URRP 061730Z 02004MPS CAVOK 27/12 Q1012 R05/CLRD70 NOSIG RMK QFE754/1006= URRP 061800Z 03005MPS CAVOK 26/11 Q1012 R05/CLRD70 NOSIG RMK QFE754/1006= URRP 061830Z 03005MPS CAVOK 27/10 Q1012 R05/CLRD70 NOSIG RMK QFE754/1006= URRP 061900Z 03005MPS CAVOK 26/10 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 061930Z 03006MPS CAVOK 26/09 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 062000Z 03005MPS CAVOK 25/09 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 062030Z 16002MPS CAVOK 22/12 Q1012 R05/CLRD70 NOSIG RMK QFE754/1006= URRP 062100Z 33002MPS 280V040 CAVOK 20/12 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 062130Z 05005MPS CAVOK 24/09 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 062200Z 05002MPS CAVOK 22/11 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 062230Z 28001MPS CAVOK 20/11 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 062300Z VRB01MPS CAVOK 18/11 Q1012 R05/CLRD70 NOSIG RMK QFE754/1005= URRP 062330Z 00000MPS CAVOK 19/11 Q1012 R05/CLRD70 NOSIG RMK QFE754/1006= URRP 070000Z 32002MPS CAVOK 18/11 Q1012 R05/CLRD70 NOSIG RMK QFE754/1006= URRP 070030Z VRB01MPS CAVOK 19/11 Q1012 R05/CLRD70 TEMPO 14003G10MPS RMK QFE754/1006= URRP 070100Z 32002MPS CAVOK 18/11 Q1012 R05/CLRD70 TEMPO 14003G10MPS RMK QFE754/1006= URRP 070130Z 07002MPS 030V110 CAVOK 19/11 Q1012 R05/CLRD70 TEMPO 14003G10MPS RMK QFE754/1006= URRP 070200Z 10002MPS 060V140 CAVOK 19/11 Q1013 R05/CLRD70 TEMPO 14003G10MPS RMK QFE755/1006= URRP 070230Z 06002MPS CAVOK 17/11 Q1013 R05/CLRD70 TEMPO 14003G10MPS RMK QFE755/1006= URRP 070300Z VRB01MPS CAVOK 19/12 Q1013 R05/CLRD70 TEMPO 14003G10MPS RMK QFE755/1006= URRP 070330Z 34002MPS 300V360 CAVOK 20/11 Q1013 R05/CLRD70 TEMPO 14003G10MPS RMK QFE755/1006= URRP 070400Z 11002MPS 070V130 CAVOK 21/13 Q1013 R05/CLRD70 TEMPO 14003G10MPS RMK QFE755/1007= URRP 070430Z 07002MPS CAVOK 24/12 Q1013 R05/CLRD70 NOSIG RMK QFE755/1007= URRP 070500Z VRB01MPS CAVOK 26/12 Q1013 R05/CLRD70 NOSIG RMK QFE755/1007= URRP 070530Z 14003MPS 100V170 CAVOK 25/14 Q1013 R05/CLRD70 NOSIG RMK QFE755/1007= URRP 070600Z 11002MPS 070V170 CAVOK 27/15 Q1013 R05/CLRD70 NOSIG RMK QFE755/1007= URRP 070630Z 09002MPS 010V170 CAVOK 28/14 Q1013 R05/CLRD70 NOSIG RMK QFE755/1007= URRP 070700Z 05002MPS 300V110 CAVOK 30/13 Q1013 R05/CLRD70 NOSIG RMK QFE755/1007= URRP 070730Z 08004MPS 010V110 CAVOK 31/13 Q1013 R05/CLRD70 NOSIG RMK QFE755/1007= URRP 070800Z 05004MPS 020V080 CAVOK 32/12 Q1013 R05/CLRD70 NOSIG RMK QFE755/1007= URRP 070830Z 08003MPS 9999 FEW/// 33/13 Q1013 R05/CLRD70 NOSIG RMK QFE755/1006= URRP 070900Z 08006MPS 030V110 9999 FEW/// 34/11 Q1013 R05/CLRD70 NOSIG RMK QFE754/1006= URRP 070930Z 08008G13MPS 9999 FEW/// 34/07 Q1013 R05/CLRD70 TEMPO 09009G18MPS RMK QFE755/1006=
В нем данные за последние сутки. Решил задачу вытаскивания из этого файлика даты замера и температуры. Поскольку в строках файла нет полной даты, то пршлось ориентироваться на время последнего изменения самого файла и запоминать время последней удачной обработки файла. В результате, если мы по каким-то причинам пропустим получение файла, то при следующем запуске сможем докачать недостающие данные.

Инструкция по применению:

Помещаем содержимое архива в каталог, куда может писать пользователь, запускающий pame.exe, так, чтобы UAC ему не мешал.
Сохраняем в этот каталог файлик с данными под именем "data.metar". Запускаем pame.exe, если все хорошо, получаем выходной файл с датой замера и температурой.

Поскольку программе надо где-то сохранять время последнего замера, настройки тоже хранятся в pame.ini.
[main] LastMeasureTime=2022-08-07 09:30:00 Template=insert into table (dt, val) values ('%dt%', %te%) OutFileName=out.sql ConfShowInfo=0 ConfShowData=1
LastMeasureTime - время последнего полученного и удачно обработанного замера. Если мы запустим программу два раза на одном и том же файлике, первый раз она его обработает, второй раз скажет, что данных нет. Время гринвичское, так же как и в самом файлике.

Template - Шаблон, в который будут подставляться дата и температура из metar-строки.

OutFileName - Имя файла, в который будут сохраняться данные (с перезаписью).

ConfShowInfo - Если включить, будет показывать всякую информацию, полезную для отладки.

ConfShowData - Если включить, покажет полученные данные через запятую.

Содержимое архива:

GetMetar.cmd - скрипт получения файла с met.no. Программу Curl нужно найти и скачать отдельно. И поместить в этот же каталог.
pame.exe - исполняемый файл.
pame.ini - конф. файл.
data.metar - файл для тренировок.

Архив с программой.
устарело
pame.zip
Архив с исходниками Delphi XE3
src.zip
Актуальные файлы тут 115411

У меня уже две недели это все работает без нареканий. Если надо что-то допилить, не стесняйтесь регистрироваться и задавать вопросы. А можете сами взять исходники (там всего 150 строк) и подправить все, как вам надо. Без обязательств с моей стороны, без претензий с моей стороны.
...
Изменено: 13.08.2022, 11:31 - Просто Трёп
Рейтинг: 0 / 0
08.08.2022, 11:13
    #109995
eNose
Участник
[не активирован]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
Q1013 - давление
...
Рейтинг: 0 / 0
08.08.2022, 12:14
    #110032
s62
s62Привилегированный пользователь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
Просто Трёп  07.08.2022, 14:22
[игнорируется]
Поскольку в строках файла нет полной даты, то пршлось ориентироваться на время последнего изменения самого файла и запоминать время последней удачной обработки файла.
Там же в первом токене строки - день текущего месяца и время по Гринвичу. Зная текущий месяц, однозначно переводим это в дату+время. Нет?

В XE3 может быть не очень удобно - у Indy вечный гемор с https, а в свежих версиях Delphi можно запрос к URL тоже в самой программе выполнять, например через TNetHTTPClient, и данные парсить прямо в памяти, не сохраняя в файл.

Спасибо за инфу, удобный сервис, чтобы свободные данные о погоде в заданном месте получать. Жарковато сегодня в Ростове. :)
...
Изменено: 08.08.2022, 12:15 - s62
Рейтинг: 0 / 0
08.08.2022, 13:01
    #110081
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
s62  08.08.2022, 12:14
[игнорируется]
Там же в первом токене строки - день текущего месяца и время по Гринвичу. Зная текущий месяц, однозначно переводим это в дату+время. Нет?
Ну то есть, точное время замера можно узнать только зная, когда получен файл.
s62  08.08.2022, 12:14
[игнорируется]
В XE3 может быть не очень удобно - у Indy вечный гемор с https, а в свежих версиях Delphi можно запрос к URL тоже в самой программе выполнять, например через TNetHTTPClient, и данные парсить прямо в памяти, не сохраняя в файл.
Прога только парсит файл. Получать надо Курлом. Мне так легче обрабатывать и обходить ошибки.
s62  08.08.2022, 12:14
[игнорируется]
Спасибо за инфу, удобный сервис, чтобы свободные данные о погоде в заданном месте получать. Жарковато сегодня в Ростове. :)
Обращайтесь!
...
Рейтинг: 0 / 0
08.08.2022, 15:42
    #110200
s62
s62Привилегированный пользователь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
На базе этого проекта вот программка с графическим интерфейсом, которая показывает температуру и давление за последние сутки или сколько-то, в выбранном месте. Места с соотв. кодами подгружаются из текстового файла Airportcodes.txt, который должен быть в папке программы (есть в архиве). Или коды можно вручную вводить. По-умолчанию задал Домодедово. В архиве - скомпилированная в Delphi 10.4 CE программа и исходники.

Тоже можно пользоваться и изменять без обязательств с моей стороны и без претензий с моей стороны.
WeatherData.zip
https://en.wikipedia.org/wiki/List_of_airports_by_ICAO_code:_U
p.s. "Время местное" - время того места, где ПК, на котором програма, берется из Windows.
p.p.s В отпуске, вот решил побаловаться.
...
Изменено: 08.08.2022, 15:49 - s62
Рейтинг: 1 / 0
Нравится: Просто Трёп
08.08.2022, 15:56
    #110203
s62
s62Привилегированный пользователь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
s62 [игнорируется] 
ээ, ошибочка небольшая там была, в проверке, что давление определилось. ) Вот исправленный архив.
WeatherData.zip
...
Рейтинг: 0 / 0
08.08.2022, 16:24
    #110212
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
Кстати, я пару раз обращал внимание на то, что в Штатах в обычных гражданских прогнозах помимо температуры иногда указывают и точку росы. Значит, они как-то ее используют в обычных хозяйственных нуждах. А мы не используем и даже в большинстве случаев не знаем, что это такое.
...
Рейтинг: 0 / 0
08.08.2022, 16:33
    #110215
s62
s62Привилегированный пользователь
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
Просто Трёп [игнорируется] 

Я почитал сегодня про этот формат файлов, где-то было написано, что для летчиков точка росы имеет значение. p.s. А, в Википедии написано.

Кстати у меня программка неправильно будет даты показывать 1 числа месяца. Во вчерашних данных будет показывать не предыдущий месяц, а текущий.
...
Изменено: 08.08.2022, 16:41 - s62
Рейтинг: 0 / 0
08.08.2022, 16:50
    #110224
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
Эх, все переписывать придется, когда минуса начнутся. Я-то думал, что они просто "-" поставят...
Цитата 
[игнорируется]
Если измеренное число отрицательное, перед первой цифрой полученного кода добавляется буква M (английская). Итоговая кодовая группа составляется из полученных кодов температуры воздуха и температуры точки росы, разделяемых знаком «/». Например, при температуре воздуха −0.5 и температуре точки росы −9.6 кодовая группа будет иметь вид M00/M10.
...
Рейтинг: 0 / 0
08.08.2022, 19:01
    #110297
bk0010
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
Просто Трёп  08.08.2022, 16:24
[игнорируется]
Кстати, я пару раз обращал внимание на то, что в Штатах в обычных гражданских прогнозах помимо температуры иногда указывают и точку росы. Значит, они как-то ее используют в обычных хозяйственных нуждах. А мы не используем и даже в большинстве случаев не знаем, что это такое
Точка росы нужна для определения наличия дымки/тумана. Важно для авиации и снайперов, остальным по барабану.
...
Рейтинг: 0 / 0
13.08.2022, 10:59
    #115402
cat2
Участник
[игнорирует гостей]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гесты и игнорируемые идут по CSS
Parsing metar data in windows
Просто Трёп  08.08.2022, 16:24
[игнорируется]
Кстати, я пару раз обращал внимание на то, что в Штатах в обычных гражданских прогнозах помимо температуры иногда указывают и точку росы. Значит, они как-то ее используют в обычных хозяйственных нуждах. А мы не используем и даже в большинстве случаев не знаем, что это такое.
У нас всегда указывают относительную влажность воздуха, а "точка росы" это и есть относительная влажность, вид сбоку
...
Рейтинг: 0 / 0
13.08.2022, 11:25
    #115409
Помощник Менеджера
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
Пользователь назначен модератором темы: Просто Трёп.
...
https://dedoforum.ru/

Ну а что делать то
Помощник Менеджера:
Пользователь назначен модератором темы: Просто Трёп.
Рейтинг: 0 / 0
13.08.2022, 11:29
    #115411
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
Просто Трёп  08.08.2022, 16:50
[игнорируется]
Эх, все переписывать придется, когда минуса начнутся. Я-то думал, что они просто "-" поставят...
Цитата 
[игнорируется]
Если измеренное число отрицательное, перед первой цифрой полученного кода добавляется буква M (английская). Итоговая кодовая группа составляется из полученных кодов температуры воздуха и температуры точки росы, разделяемых знаком «/». Например, при температуре воздуха −0.5 и температуре точки росы −9.6 кодовая группа будет иметь вид M00/M10.
Исправил. Правда, чтобы окончательно проверить, надо ждать морозов, или выбрать аэропорт в южном полушарии.
Включил в скрипт точку росы. А то мало ли, кому-то нужно будет.
Облегчил экзешник.
Все в одном архиве. Исполняемый файл в папке Wind32\Release
pame.zip
...
Рейтинг: 0 / 0
25.08.2022, 18:27
    #125905
Администратор
Администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
Тема была перенесена из форума 'Вопросы по IT'.
...
Администратор:
Тема была перенесена из форума 'Вопросы по IT'.
Рейтинг: 0 / 0
26.08.2022, 20:26
    #127687
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
О, вылезла ошибка при положительной температуре и отрицательной точке росы. В ближайшее время подправлю. Вот как важна детальная отладка. Отрицательную температуру специально проверил.
...
Рейтинг: 0 / 0
26.08.2022, 20:27
    #127688
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
Что у нас в степях такое происходит, что точка росы в такую жару стала ниже нуля?
...
Рейтинг: 0 / 0
26.08.2022, 20:38
    #127697
Просто Трёп
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Parsing metar data in windows
А, не, ложная тревога. Это я на боевых серверах забыл обновить экзешник, который уже выложил.
...
Рейтинг: 0 / 0
Форумы / Языки программирования семейства Pascal [закрыт для гостей] / Parsing metar data in windows / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]