Научная статья на тему 'Разработка синтаксического анализатора для снятия данных о состоянии атмосферного воздуха Красноярского края с сайта krasecology. Ru'

Разработка синтаксического анализатора для снятия данных о состоянии атмосферного воздуха Красноярского края с сайта krasecology. Ru Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
240
22
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МОНИТОРИНГ АТМОСФЕРНОГО ВОЗДУХА / ЗАГРЯЗНЕНИЕ ВОЗДУХА / СИНТАКСИЧЕСКИЙ АНАЛИЗАТОР / АВТОМАТИЗАЦИЯ СБОРА ДАННЫХ / ВРЕМЕННЫЕ РЯДЫ / СВОБОДНОЕ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ / AIR MONITORING / AIR POLLUTION / SYNTAX PARSER / DATA AUTOMATION / TIME-SERIES / FREE SOFTWARE

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Голубничий Артем Александрович, Босых Олеся Сергеевна

В статье рассматривается алгоритм извлечения сведений о состоянии атмосферного воздуха Красноярского края из данных автоматизированных постов наблюдения. Приводится описание структуры данных и принцип построения на основании представления данных в формате JSON. Раскрываются особенности представления данных систем мониторинга и сложности при их обработке. Обосновывается выбор Python в качестве языка программирования для реализации проекта синтаксического анализатора. В качестве преимуществ данного языка программирования авторами выделяются: простота и скорость разработки, богатый набор библиотек и модулей, кроссплатформенность и открытость. Обосновывается выбор дополнительной библиотеки XlsxWriter для формирования итогового файла в формате *.xlsx. Поясняется алгоритм работы синтаксического анализатора, построенный на реализации пяти основных функций программы: parse_sensors() получение списка датчиков, parse_sensor_request(json_data) извлечение значений из данных формата JSON, parse_data(pl, sp, interval) формирование структуры данных для записи в файл *.xlsx, sup_sub(_str) удаление тегов из текста, make_xlsx(_data) формирование итогового файла, с заданными параметрами.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Голубничий Артем Александрович, Босых Олеся Сергеевна

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Development of the syntax parser for retrieval of data on the open air state of the Krasnoyarsk region from the krasecology.ru site

The article describes the algorithm for retrieval of information on the open air state of the Krasnoyarsk region from data of the automated observation stations. There are presented description of data structure and construction principle on the basis of data representation in JSON format. The peculiarities of data presentation of the monitoring systems and complexity in their processing are disclosed. It motivates the choice of Python as the programming language for implementing syntax parser project. In capacity of the advantages of this programming language the authors point out: simplicity and speed of development, a rich set of libraries and modules, crossplatform structure and openness. They substantiates the choice of additional library XlsxWriter to composite the output file in the format *.xlsx. There is explained algorithm of the syntax parser built on the implementation of the five basic functions of the program: parse_sensors() receipt of a list of sensors, parse_sensor_request(json_data) extract of the values from the JSON-formatted data, parse_data(pl, sp, interval) formation of data structure for file writing *.xlsx, sup_sub(_str) delete tags from the text, make_xlsx(_data) composition of the output file with the specified parameters.

Текст научной работы на тему «Разработка синтаксического анализатора для снятия данных о состоянии атмосферного воздуха Красноярского края с сайта krasecology. Ru»

Интернет-журнал «Науковедение» ISSN 2223-5167 http ://naukovedenie.ru/ Том 8, №3 (2016) http ://naukovedenie. ru/index.php?p=vol8-3 URL статьи: http://naukovedenie.ru/PDF/36TVN316.pdf Статья опубликована 23.05.2016. Ссылка для цитирования этой статьи:

Голубничий А.А., Босых О.С. Разработка синтаксического анализатора для снятия данных о состоянии атмосферного воздуха Красноярского края с сайта krasecology.ru // Интернет-журнал «НАУКОВЕДЕНИЕ» Том 8, №3 (2016) http://naukovedenie.ru/PDF/36TVN316.pdf (доступ свободный). Загл. с экрана. Яз. рус., англ.

УДК 004.642

Голубничий Артем Александрович

ФГБОУ ВПО «Хакасский государственный университет им. Н.Ф. Катанова», Россия, Абакан1

Ассистент кафедры «Инженерной экологии и основ производства»

E-mail: [email protected] РИНЦ: http://elibrary.ru/author items.asp?authorid=683836

Босых Олеся Сергеевна

ФГБОУ ВПО «Хакасский государственный университет им. Н.Ф. Катанова», Россия, Абакан

Студентка кафедры «Инженерной экологии и основ производства»

E-mail: [email protected]

Разработка синтаксического анализатора для снятия данных о состоянии атмосферного воздуха Красноярского

края с сайта krasecology.ru

Аннотация. В статье рассматривается алгоритм извлечения сведений о состоянии атмосферного воздуха Красноярского края из данных автоматизированных постов наблюдения. Приводится описание структуры данных и принцип построения на основании представления данных в формате JSON. Раскрываются особенности представления данных систем мониторинга и сложности при их обработке. Обосновывается выбор Python в качестве языка программирования для реализации проекта синтаксического анализатора. В качестве преимуществ данного языка программирования авторами выделяются: простота и скорость разработки, богатый набор библиотек и модулей, кроссплатформенность и открытость. Обосновывается выбор дополнительной библиотеки XlsxWriter для формирования итогового файла в формате *.xlsx. Поясняется алгоритм работы синтаксического анализатора, построенный на реализации пяти основных функций программы: parse_sensors() - получение списка датчиков, parse_sensor_request(json_data) - извлечение значений из данных формата JSON, parse_data(pl, sp, interval) - формирование структуры данных для записи в файл *.xlsx, sup_sub(_str) - удаление тегов из текста, make_xlsx(_data) - формирование итогового файла, с заданными параметрами.

Ключевые слова: мониторинг атмосферного воздуха; загрязнение воздуха; синтаксический анализатор; автоматизация сбора данных; временные ряды; свободное программное обеспечение

1 655017, Республика Хакасия, г. Абакан, ул. Ленина, д. 90 1

Введение

При мониторинге отдельных компонент окружающей среды образуется значительное количество данных о ее параметрах. Наиболее актуальными являются сведения о состоянии атмосферного воздуха. Данная составляющая окружающей среды отличается значительной подвижностью по сравнению с другими, а также обладает свойством изменения компонентного состава за относительно небольшой период времени.

Для анализа атмосферного воздуха необходим детализированный набор сведений за длительный интервал времени [1, 2]. При этом система мониторинга атмосферного воздуха, реализованная на автоматизированных постах наблюдения, построена по принципу непрерывного фиксирования значений концентраций загрязнителей с интервалом в 20 минут. При такого рода мониторинге по каждому загрязняющему веществу образуется временной ряд из 72 значений за сутки наблюдения. Набор данных по ряду веществ по одному посту наблюдения, а также изменение интервала наблюдения в большую сторону увеличивает количество данных в разы, так при фиксировании разовых концентраций загрязнителей (5 веществ) по одному посту наблюдения за интервал наблюдения в 1 год создается набор данных представленный 131 400 значениями.

Существующие в отдельных регионах России системы автоматизированного мониторинга состояния атмосферного воздуха имеют ряд недостатков для проведения исследований:

1. Временной ряд значений концентраций загрязнителей доступен за относительно небольшой период времени, при этом при получении новых данных предыдущее становятся недоступными для конечных пользователей. В зависимости от детализации и системы мониторинга такие временные ряды доступны от одного дня до одного года. При этом для исследования длительных зависимостей необходимо значительно большие значения.

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

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

Целью исследования является разработка программного обеспечения синтаксического анализатора для снятия данных о состоянии атмосферного воздуха с сайта krasecology.ru.

Объект и методы исследования

В качестве исходных данных был выбран официальный сайт краевого государственного бюджетного учреждения «Центр реализации мероприятий по природопользованию и охране окружающей среды Красноярского края» (КГБУ «ЦРМПиООС») [3]. На данном сайте содержится оперативная информация подсистем мониторинга радиационной, сейсмической обстановки, а также состоянии атмосферного воздуха Красноярского края. В качестве объекта исследования была выбрана подсистема мониторинга атмосферного воздуха, реализуемая на 6 автоматизированных постах наблюдения (АПН):

• из них АПН «Ачинск-Юго-Восточный» находится в зоне воздействия ОАО «РУСАЛ Ачинск»;

• 5 АПН - в зоне воздействия ОАО «РУСАЛ Красноярск»: «Красноярск-Березовка», «Красноярск-Кубеково», «Красноярск-Черемушки», «Красноярск-Северный», «Красноярск-Солнечный» (рисунок 1).

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

Рисунок 1. Интерфейс сайта подсистемы мониторинга атмосферного воздуха КГБУ

«ЦРМПиООС» [3]

При нажатии на один из постов отображается список датчиков доступных для данного поста. Например, для АПН «Красноярск-Кубеково» это «Углерода оксид», «Серы диоксид» и т.д. Также, доступен выбор периода, за который отображаются показания датчиков (рисунок 2).

• о

<

п

krasecology.ru

в

Ä

Министерство природных ресурсов и экологии Красноярского края Краевое государственное бюджетное учреждение «Центр реализации мероприятий по природопользованию и охране окружающей среды Красноярского кран»

Вход Регистрация

Главная

Оперативная обстановка О нас в

Нормативная база Интернет-приемная Вакансии Закупки

Краевая ведомственная

информационно-аналитическая система данных о состоянии окружающей среды Красноярского крап

Фонд данных о состоянии

окружающей среды, её загрпзнении на территории Красноярского крап

Краевая система наблюдений

@ Атмосферный воздух

® Поверхностные воды

^ Почва

@ Радиационная обстановка ¡46 Сейсмическая обстановка л ГИС «Дистанционные

©, -

ÜL ■

L£J

и

АПН «Красноярск-Кубеково» (время последнего измерения: 04.05.2016 10:00:00)

Дп

M0I В0[

Дп

пщ со;

1+J

Углерода оксид Серы диоксид Азота оксид Азота диоксид Взвешенные частицы

(ДО 10 М У. м)

Температура воздуха Атм.давление Влажность воздуха Интенс. осадков _Роза в&тров

День

Неделя

Год

ПДКмр

1

к—

■ Взвешенные частицы (до 10 мкм}, разовые значения

Н i q hrhirrs. rein

га х

Ч т О m

щ

х га о:

а ^

га со

Рисунок 2. Пример представления данных в подсистеме мониторинга (АПН «Красноряск-Кубеково», параметр «взвешенные частица до 10 мкм») [3]

Для получения данных от сервера используется технология AJAX [4]. Так, при нажатии на датчик в браузере выполняется скрипт на языке JavaScript, который отправляет запрос серверу и получает данные в формате JSON [5]. При этом не происходит перезагрузка (обновление) страницы.

Таким образом, для получения списка постов, датчиков, а также данных от датчиков необходимо эмулировать запросы к серверу, как если бы это был загружаемый браузером скрипт. Задача состоит в отправке GET и POST запросов к серверу с определенными заголовками и параметрами.

Используя инструменты разработчика, доступные в большинстве браузеров, на основании анализа данных из консоли было определено, что для получения информации о датчиках отправляется GET запрос вида:

http://krasecology.ru/Main/GetAirSensorList/номер поста от 1 до 6

ответ от сервера поступает в формате JSON, так для рассматриваемого ранее поста «Красноярск-Кубеково» номер поста равен 6, ответ будет выглядеть следующим образом (рисунок 3):

Интернет-журнал «НАУКОВЕДЕНИЕ» Том 8, №3 (май - июнь 2016)

http://naukovedenie.ru [email protected]

ИИ = krasecology.ru й Ш 3

I {"code":376, "id": EEi 6FQC-492 :-9008- -аа <" -g<>:: , "нате" ; "Углерода оксид", "PDKDay" t э , л: , "postid" :6, "unit "г "мгУ

iac5D63334ZA","visible"itrue,"SensorType"!1,"AveragePeriod"¡0,"Enabled"!false}Л"code"!3TT,"Id":"33569802-9D73-4432-8aF5-

iac5D63334ZA" , "visible" :true, "SensorType" :4 , "AveragePeriod" :0 , "Enabled": false) Л "code": 378, "Id": "E7A5 3CIEE-CBF7-4543-9562-

18C5D633 34EA","visible":tгае,"SensorType":2,"AveragePeriod"¡0,"Enabled"!false}Л"code"!379,"Id";"B60F2F3S-5B2S-4C10-A5 62-

18C5D633 34EA","visible":tгае,"SensorType"!3,"AveragePeriod"¡0,"Enabled"!false}Л"code"!362, "Id": "15AF7C13-A561.-4FE4-9D04-10595заВЕЕ9Э","name";"Взвешенные чостицы (до 10 мкм)","PDKDay";0.06,"PDKHour":О.Э,"postid":6,"unit";"мг/

18C5D63334EA","visible":trae,"SensorType"!10,"AveragePeriod":fl,"Enabled":false},{"code"!367,"Id"!"6с004ае6-4675-4воа-Йаа1-

воздухп" , "PDKDay" : 0.0, "PDKHour":0 .0, "Postid" :6 , "unit" : "C", "color": "¡fBSlCAD", "oNegative" :true, "stationld": "F5 4EA69F-202F-421F-9fiAl-iac5D63334IA","visible":true,"SensorType"!14,"AveragePeriod";0,"Enabled":false),{"code"!363,"Id"!"07C3BEFC-C4D8-4913-94D4-

давление","PDKDay":0.0,"PDKHour"!0.0,"Postid";6,"unit":"MM.рт.ст.","color":"#9 6E042","o^egative":false,"stationld";"F54EA69F-202F-421F-96Al-iac5D633 34ZA","Visible":true,"SensorType":5,"AveragePeriod">0,"Enabled":false}Л"code":3 65,"Id":"FD571S51-219A-4 3 09-A0BE-

воздуха","PDKDay"¡0.0,"PDKHour":0-0,"Postid","unit";"i"color":"#098D93","oNegative"¡false,"stationld":"F54EAe9F-202F-421F-96Al-iac5D63334EA","visible"itrue,"sensorType":6,"AveragePeriod"¡0,"Enabled":false}Л"code":390,"Id";"2C2A1A1E-USD0-45 63-B0 3A-

18C5D633 34EA","visible":traeSensorType":8,"AveragePeriod"¡0,"Enabled":false}Л"code"!10000,"Id"¡null,"wame":"Роза

ветров","PDKDay": 0-0,"PDKHour":0 . 0, "Postid" :6,"unit"¡null,"color":null,"oNegative"¡false,"stationld"i null,"visible"i false,"SensorType

Рисунок 3. Пример представления данных в формате JSON о датчиках поста наблюдения (на примере АПН «Красноярск-Кубеково») (составлено авторами)

Ответ содержит данные о посте наблюдения, датчиках и другую служебную информацию. Зная перечень датчиков и сопутствующую информацию можно извлечь необходимые нам сведения, так для дальнейшего анализа нам необходимо фиксировать два параметра: код датчика, содержащийся в поле «Code», и соответствующее ему соответствие наименование датчика. Так для рассматриваемого выше примера данные о содержании взвешенных веществ по посту Кубеково будут выглядеть следующим образом «Code»:382 наименование «Name»: «Взвешенные частицы (до 10 мкм)».

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Соответствующий GET запрос браузеру при просмотре конкретного датчика будет иметь следующий вид:

http://krasecology.ru/Main/GetAirSensorData/параметр1?timelap=параметр2

где: параметр1 - код датчика (в рассматриваем случае 382); параметр2 - временной интервал (значение day или week).

Таким образом, для получения данных за неделю запрос будет иметь следующий вид:

http://krasecology.ru/Main/GetAirSensorData/382?timelap=week

Ответ от сервера будет содержать JSON-данные вида (рисунок 4):

« « • .JJL ю — krasecology.ru ÛI Й s с

{"Data :[(■ у":0.054,"х": 1461777600000},{ У" 0.04 7,"х": 14617783 00000},{ 'у" : 0.047,"х": 1461780000000 },

Г у" о 04, х": 1461781200000} , { "у"¡0.043, х" 1461782 4ÛOOOO}, "у":0.043, 'x" i 14617836 00000}, "у" ; 0.044, 'х" 14617В4800000},

Г у" 0 046 "х" 1461786000000}, "у" 0. 04, х" 1461787200000}, "у" :0 .045, 'х" 1461788400000}, "у" : 0.053, 'х" 1461799600000},

{"у" 0 066 "х" 1461790 600000}, "у" о.овз " X ! 1461792000000} Гу" 0.064 " X 1 ! 1461793200000} Гу' ¡0.075 " X ! 1461794400000},

{„у„ 0 046 "х" 1461795600000}, "у" 0, 062 " X : 1461796300000} Г у" 0.051 "х1 : 1461798000000} Г у' ! 0.058 " X : 1461799200000},

Гу" 0 091 "х" 1461800400000}, "у" 0.146 " X ! 1461801600000} Гу" 0.131 "х1 ! 1461802800000} Гу' ! 0.142 " X ! 1461904000000},

Г1 у" 0 134 "х" 1461805200000}, ■у" 0.139 " X ; 1461806400000} Гу" О.ОВЗ "х1 ! 1461807600000} Гу' : 0.023 " X ; 1461908900000},

{"у" 0 02, х" : 1461510000000},{ у":0.023. х" 1461В11200000}, "у"10.011, 'х" 1461912400000}, "у" : 0.012, 'х" 1461613600000},

ГУ" 0 022 "х" 1461814BDOO00}, "У" 0. 022 " X ! 1461816000000} Г у" 0. 022 " X 1 ! 1461817200000} Гу' ! 0.021 " X ! 1461918400000},

Су" 0 01, x":1461919600000},{ у":0.013. х" 1461В20ЭООООО}, "у":0.01, " ï":1461322000000},i у":0 .007," х":1461823200000}.

Г1 у" 0 007 V 1461824400000}, "у" 0. 005 11X ! 1461825600000} Гу" 0.005 "х1 ! 1461826800000} Гу' ! 0.004 11 х ! 1461928000000},

Г1 у" 0 005 "х" 1461823200000}, -у" O.0Û7 " X : 1461630400000} Гу" 0.01, 'х" 1461631600000}, "у" : 0.01," х":14б1832800000}.

ГУ" 0 003 "х" 1461834000000}, "у" О.003 " X ! 1461835200000} Г у" 0.004 " X 1 ! 1461836400000} Гу' ! 0.004 " х : 1461937600000} ,

{"у" 0 005 "х" 1461833 500000}, "у" 0.006 " X : 1461840000000} Гу" 0.009 "х1 : 1461841200000} Гу' :0.01, 'х" 1461В42 400 ООО}г

("у" 0 011 "х" 1461843 600000}, "у" 0. 019 " X ! 1461844300000} Гу" 0.016 "х1 ! 1461846000000} {"у' ! 0.017 " X ! 1461947200000},

Г1 у" 0 025 "х" 146184940000Û}, »у» 0. 02, х" 1461В49600000}, "у":0.057, 'х" 1461950800000}г "у" : 0.011, 'х" 1461652000 000},

ГУ" 0 016 "х" 1461853200000}, "у" О.018 " X ! 1461854400000} Г У" 0.015 " X 1 ! 1461855600000} Гу' ! 0.021 " X ! 1461956900000},

{"у" 0 016 "х" 1461858000000}, "у" 0, 019 " X : 1461859200000} ГУ" 0.024 "х1 : 1461860400000} Гу1 ! 0.021 " X : 1461961600000}г

ГУ" 0 018 "х" 1461862ВООООО}, "у" 0. 019 " X ! 1461864000000} Гу" 0.03, 'x" i 1461965200000}, "у" : 0.071, 'х" 1461866400 000},

Г1 у" 0 03, x" : 1461967600000},( у":0.029, х" 1461668800000}, "у":0.023, 'x" Î 1461970000000}г "у" : 0.021, 'х" 1461671200 000},

Гу" 0 017 "х" 1461872400000}, "у" О.018 " X ! 1461873600000} Гу" 0.044 "х1 ! 1461874800000} Гу' ! 0.04, 'х" 1461676000000},

Гу" 0 034 "х" 1461877200000}, "у" 0. 034 " X : 1461873400000} Г у" 0.032 "х1 : 1461879600000} Гу' ! 0.034 " X : 1461980300000}(

Гу" 0 036 "х" 14 61882 00000 0}, "у" 0. 045 " X ! 1461883200000} Г у" 0.054 "х1 ! 1461884400000} Гу' ! 0.058 " X ! 1461985600000},

Г1 у" 0 051 V 1461886B0000D}, »у» 0.058 11X ! 1461888000000} Гу" 0.06, 1461989200000}, "у"; 0.062, 'х" 1461690400 000},

Г1 у" 0 0 64 "х" 1461891600000}, »у» О.066 " X :1461692900000} Гу" 0.073 "х1 ! 1461894000000} Гу" : 0.019 " X : 1461995200000},

Гу" 0 013 "х" 1461896400000}, "у" 0. 012 " X ! 1461897600000} Г у" 0.014 "х1 ! 1461898800000} Гу' : 0.015 " X : 1461900000000} ,

Гу" 0 012 "х" 1461901200000}, "у" 0.013 " X : 1461902400000} Гу" 0.011 "х1 : 1461903600000} Гу' : 0. 0 08 " X : 1461904300000},

Г1 у" 0 011 V 1461906000000}, »у» 0.01, х" 1461907200000}, "у"îO.014, 1461908400000}, "у"; 0.009, 'х" 1461909600 000},

Г1 у" 0 011 "х" 1461910 ВООООО}, »у» O.Ö11 " X : 1461912000000} Г у" 0.012 "х1 г 14 61913 200000} Гу" ¡0.011 " X : 1461914400000} ,

Гу" 0 013 "х" 1461915600000}, "у" 0. 023 " X ! 1461916900000} Г у" 0.017 "х1 ! 1461918000000} Гу' ! 0.017 " X : 1461919200000},

Г у" 0 013 "х" 1461920400000}, "у" 0.013 " X : 1461921600000} Гу" 0.014 "х1 : 1461922800000} {"у' ! 0.045 " X : 1461924000000}г

Гу" 0 022 "х" 1461925200000}, "у" 0. 029 " X ! 1461926400000} Г у" 0.02, 'x" i 1461927600000}, "у" ; 0.042, 'х" 1461928800 000},

Г1 у" 0 028 "х" 14 61930 000000}, »у» 0. 028 " X : 1461931200000} Г у" 0.029 "х1 ! 1461932400000} Гу" : 0.067 " X : 1461933600000} ,

Гу" 0 039 "х" 1461934 600000}, "у" 0. 042 " X ! 1461936000000} Гу" 0.029 "х1 ! 1461937200000} ГУ' ! 0.036 " X ! 1461938400000} ,

Рисунок 4. Пример представления данных в формате JSON о содержании концентрации загрязнителя (на примере АПН «Красноярск-Кубеково») (составлено авторами)

Запись в JSON-данных будет содержать время (параметр x) и соответствующее значение концентрации вещества (параметр y). Особенность параметра x заключается в представление данных в формате UNIX, так параметр x соответствует точной дате и времени, как количество секунд, прошедшее с даты отсчета в формате UNIX - 01.01.1970 0:00 [6].

Выбор программного обеспечения для реализации проекта

В качестве языка программирования был выбран Python.

Python - это высокоуровневый объектно-ориентированный язык программирования общего назначения с динамической типизацией, ориентированный на повышение производительности разработчика и читаемости кода [7]. Выбор данного языка программирования обусловлен следующими критериями:

1. Простота и скорость разработки. Так разработка программного обеспечения на языке Python применительно к небольшим программам с графическим интерфейсом и скриптам гораздо эффективнее и требует меньше ресурсов чем применение таких языков (сред) как С, С++, С#, Java. Перечисленные языки являются языками более низкого уровня чем Python и применяются в основном в областях, требующих высокой производительности и масштабируемости, в то время как Python отлично подходит для быстрой разработки и прототипирования относительно небольших проектов.

2. Богатый набор открытых библиотек и модулей. За время существования Python было разработано большое количество сторонних библиотек и надстроек, как для работы с файлами, так и сетевого взаимодействия, работы с БД и многого другого. Таким образом, имеется богатый функционал, который может быть применен при разработке конкретного проекта.

3. Кроссплатформенность. Одна и та же программа, разработанная на языке Python при соблюдении определенной стилистики и правил написания кода может без каких-либо изменений работать как под Windows, так и под OS X или Linux. Данный факт значительно экономит ресурсы при кроссплатформенной разработке ПО и позволяет сэкономить время и силы в процессе портирования уже существующего проекта на другую платформу.

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

Для сохранения извлекаемых данных была выбрана была выбрана библиотека XlsxWriter [8], которая позволяет создавать (только в режиме записи) файлы типа *.xlsx (Excel 2007 и более поздних версий), в отличие от Openpyxl [9] библиотека XlsxWriter обладает богатым функционалом для форматирования данных.

Реализация программного продукта

Основная задача программы - это получение показаний от датчиков загрязнения по постам и представление их в удобном виде в файле типа *.xlsx.

На основе анализа объекта исследования посредством инструментов разработчиков было установлены соответствующие идентификационные номера постов от 1 до 6 для АПН:

1. Ачинск-Юго-Восточный

2. Красноярск-Северный

3. Красноярск-Березовка

4. Красноярск-Солнечный

5. Красноярск-Черемушки

6. Красноярск-Кубеково

Синтаксический анализатор работает по следующему алгоритму выполнения функций (рисунок 5):

/ parse_sensors

__II_

/ parse_sensors_request

I

/ parse_data

/sup_sub

/ make_xslx

Рисунок 5. Структура синтаксического анализатора (разработано авторами)

Функция parse_sensors() проходит по ссылкам вида

«http://krasecology.ru/Main/GetAirSensorList/номер_АПН» и получает список датчиков по каждому посту из заданных в переменной PLACES, возвращает структуру, содержащую распределение датчиков по площадкам.

Функция parse_sensor_request(json_data) из подаваемых на вход данных в формате JSON создает список вида [ [ дата_время, значение], ...].

Функция parse_data(pl, sp, interval) из перечня постов, задаваемых переменной PLACES, данных сенсоров представленных в виде структуры и соответствующих значений данных возвращает структуру для формирования файла Excel.

Для удаления из текстового содержимого тегов <sup> и <sub> применяется соответствующая функция sup_sub(_str).

Далее функция make_xlsx(_data) производит запись соответствующих данных в книгу в формате *.xlsx. Данная функция включает ряд настроек для конечного отображения необходимой информации.

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

Рисунок 6. Интерфейс работы синтаксического анализатора KrasecologyParser

(разработано авторами)

По завершению работы программы создается файл по заранее обозначенным условиям форматирования (рисунок 7).

шж

U Главна

С-

И 0 & О *1 krasecojogy.ru 05.05.2016 (12.17} (Только для чтения)

Вставка Разметка страницы Формулы Данные Рецензирование Вид

Ол Поиск на листе

Calibri (Осно... Ж К Ч •

11

Аж А. . А .

т

%

—— * * •

fx Дата сканирования: 05.05.2016 [12.17)

^ Условное форматирование т Форматировать как таблицу т ^ Стили ячеек т

и-

Ячейки

Редактирование

А в с D Е F G Н 1 J

1 Дата сканировании: 05.0512016(12.17) i

2

3 Азота диоксид Азота оксид Атм. давление Взвешенные част

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

4 время измерения мг/мЗ время измерения мг/м3 Время измерения мм.рт.ст. время измерения

5 28.04.2016 12:20 0,017 28.04.201612:20 0,001 28.04.201612:20 740,48 28.04.201612:20

б 28.04.201612:40 0,031 28.04.201612:40 0,001 23.04.201612:40 740,519 28.04.201612:40

7 28.04.2016 13:00 0,046 28.04.2016 13:00 0,001 28.04.201613:00 740,511 28.04.2016 13:00

8 28.04.2016 13:20 0,027 28.04.201613:20 0 28.04.201613:20 740,535 28.04.2016 13:20

9 28.04.2016 13:40 0,016 28.04.2016 13:40 0 23.04.201613:40 740.634 28.04.2016 13:40

10 28.04.201614:00 0,026 28.04.201614:00 0,001 28.04.201614:00 740,561 28.04.201614:00

11 28.04.201614:20 0,047 28.04.201614:20 0,001 23.04.201614:20 740,509 28.04.201614:20

12 23.04 201614:40 0,022 28.04.2016 14:40 0 28.04.201614:40 740,497 28.04 2016 14:40

13 28.04.2016 15:00 0,014 28.04.2016 15:00 0,001 28.04.201615:00 740,406 28.04.2016 15:00

14 28.04.201615:20 0,012 28.04.2016 15:20 0,001 23.04.201615:20 740,276 28.04.2016 15:20

15 28.04.2016 15:40 0,017 28.04.2016 15:40 0 28.04.201615:40 740,294 28.04.2016 15:40

16 28.04.2D16 15:00 0,013 28.04.201616:00 0 23.04.201616:00 740,285 28.04.2D16 16:00

17 28.04.201616:20 0,014 28.04.201616:20 0 28.04.201616:20 740,29 28.04.201615:20

18 28.04.201616:40 0,01 28.04.201616:40 0 28.04.201616:40 740,235 28.04.201615:40

19 28.04.201617:00 0,012 28.04.2016 17:00 0,001 23.04.201617:00 740,22 28.04.2016 17:00

20 28.04 2016 17:20 0,014 28 04.2016 17:20 0,001 28.04.201617:20 740,236 28.04 2016 17:20

21 28.04.2016 17:40 0,013 28.04.2016 17:40 0,001 28.04.201617:40 740,2 28.04.2016 17:40

22 еишта -Ж- 28.04.2016 18:00 0 28.04.2016 18:00 740,21 28.04.201618:00

Ачинск-Юго-Восточный Красноярск-Березовка Крас ноя рск-Кубеково Красноярск-Северный Красноярск-Солнечный Красноярск-Мер.:

ш -

Рисунок 7. Интерфейс формируемого программой файла (разработано авторами)

Заключение

Разработанный синтаксический анализатор позволяет автоматизировано снимать данные о состоянии атмосферного воздуха Красноярского края подсистемы мониторинга КГБУ «ЦРМПиООС» по 5 загрязнителям и 4 параметрам атмосферного воздуха всех 6 постов государственной системы наблюдения. Разработанный программный продукт имеет возможности гибкой настройки в качестве представления исходных данных и построен на принципах свободного программного обеспечения.

ЛИТЕРАТУРА

1. Golubnichiy, A.A. Autocorrelation analysis of time series of PM10 concentrations according to the data from the atmospheric monitoring subsystem of Krasnoyarsk Territory / A.A. Golubnichiy, E.A. Tuksina // On-line journal «Naukovedenie» Vol 7, No4 (2015) http://naukovedenie.ru/PDF/86TangVN415.pdf (open access). DOI: 10.15862/86TangVN415.

2. Босых, О.С. Суточные циклы концентраций монооксида азота (на примере АПН «Красноярск - Солнечный») / О.С. Босых, А.А. Голубничий // Современные научные исследования и инновации. 2016. №2 [Электронный ресурс]. URL: http://web.snauka.ru/issues/2016/02/63159 (дата обращения: 04.05.2016).

3. Подсистема мониторинга загрязнения атмосферного воздуха [Электронный ресурс]. URL: http://krasecology.ru/Air (дата обращения: 04.05.2016).

4. Ullman, C. Beginning Ajax. wrox. ISBN 978-0-470-10675-4. Archived from the original on 5 July 2008. Retrieved 24 June 2008.

5. ECMA-404, The JSON Data Interchange Format ECMA 1st edition (October 2013).

6. General Concepts The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition [Электронный ресурс]. URL: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04 _15 (дата обращения: 04.05.2016).

7. TIOBE Software Index. «TIOBE Programming Community Index Python». Retrieved 10 September 2015.

8. Creating Excel files with Python and XlsxWriter [Электронный ресурс]. URL: http://xlsxwriter.readthedocs.io (дата обращения: 04.05.2016).

9. Openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files [Электронный ресурс]. URL: http://openpyxl.readthedocs.io/en/default/ (дата обращения: 04.05.2016).

Golubnichiy Artem Aleksandrovich

Katanov Khakass state university, Russia, Abakan E-mail: [email protected]

Bosykh Olesya Sergeevna

Katanov Khakass state university, Russia, Abakan E-mail: [email protected]

Development of the syntax parser for retrieval of data on the open air state of the Krasnoyarsk region from

the krasecology.ru site

Abstract. The article describes the algorithm for retrieval of information on the open air state of the Krasnoyarsk region from data of the automated observation stations. There are presented description of data structure and construction principle on the basis of data representation in JSON format. The peculiarities of data presentation of the monitoring systems and complexity in their processing are disclosed. It motivates the choice of Python as the programming language for implementing syntax parser project. In capacity of the advantages of this programming language the authors point out: simplicity and speed of development, a rich set of libraries and modules, cross-platform structure and openness. They substantiates the choice of additional library XlsxWriter to composite the output file in the format *.xlsx. There is explained algorithm of the syntax parser built on the implementation of the five basic functions of the program: parse_sensors() - receipt of a list of sensors, parse_sensor_request(json_data) - extract of the values from the JSON-formatted data, parse_data(pl, sp, interval) - formation of data structure for file writing *.xlsx, sup_sub(_str) - delete tags from the text, make_xlsx(_data) - composition of the output file with the specified parameters.

Keywords: air monitoring; air pollution; syntax parser; data automation; time-series; free software

REFERENCES

1. Golubnichiy, A.A. Autocorrelation analysis of time series of PM10 concentrations according to the data from the atmospheric monitoring subsystem of Krasnoyarsk Territory / A.A. Golubnichiy, E.A. Tuksina // On-line journal «Naukovedenie» Vol 7, No4 (2015) http://naukovedenie.ru/PDF/86TangVN415.pdf (open access). DOI: 10.15862/86TangVN415.

2. Bosykh, O.S. Sutochnye tsikly kontsentratsiy monooksida azota (na primere APN «Krasnoyarsk - Solnechnyy») / O.S. Bosykh, A.A. Golubnichiy // Sovremennye nauchnye issledovaniya i innovatsii. 2016. №2 [Elektronnyy resurs]. URL: http://web.snauka.ru/issues/2016/02/63159 (data obrashcheniya: 04.05.2016).

3. Podsistema monitoringa zagryazneniya atmosfernogo vozdukha [Elektronnyy resurs]. URL: http://krasecology.ru/Air (data obrashcheniya: 04.05.2016).

4. Ullman, C. Beginning Ajax. wrox. ISBN 978-0-470-10675-4. Archived from the original on 5 July 2008. Retrieved 24 June 2008.

5. ECMA-404, The JSON Data Interchange Format ECMA 1st edition (October 2013).

6. General Concepts The Open Group Base Specifications Issue 7 IEEE Std 1003.1, 2013 Edition [Elektronnyy resurs]. URL: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.html#tag_04 _15 (data obrashcheniya: 04.05.2016).

7. TIOBE Software Index. «TIOBE Programming Community Index Python». Retrieved 10 September 2015.

8. Creating Excel files with Python and XlsxWriter [Elektronnyy resurs]. URL: http://xlsxwriter.readthedocs.io (data obrashcheniya: 04.05.2016).

9. Openpyxl - A Python library to read/write Excel 2010 xlsx/xlsm files [Elektronnyy resurs]. URL: http://openpyxl.readthedocs.io/en/default/ (data obrashcheniya: 04.05.2016).

i Надоели баннеры? Вы всегда можете отключить рекламу.