Программирование и анализ больших данных в почвоведении (2021)

Авторский архив научных публикаций по почвоведению и наукам о Земле
Ответить
Аватара пользователя
Ortstein
Администратор форума
Сообщения: 84
Зарегистрирован: Сб фев 23, 2013 5:28 pm

Программирование и анализ больших данных в почвоведении (2021)

Сообщение Ortstein »

Код: Выделить всё

Долгинова В. А., Рыбальский Н. Н., Хомюк С. В. Программирование и анализ больших данных в почвоведении // Использование и охрана природных ресурсов в России. — 2021. — № 4. — С. 22–30.
УДК 631.4, 004.43

ПРОГРАММИРОВАНИЕ И АНАЛИЗ БОЛЬШИХ ДАННЫХ В ПОЧВОВЕДЕНИИ

В.А. Долгинова, к.б.н., Научно-аналитический центр "Агропрогноз"
Н.Н. Рыбальский, к.б.н., факультет почвоведения МГУ им. М.В. Ломоносова
С.В. Хомюк, AT&T Inc. (USA)

Аннотация. В статье представлена схема анализа структурированных и больших данных в почвоведении. Актуализированы приоритетные направления анализа больших данных. Приведен стек технологий для работы с большими данными. Выделены библиотеки и фреймворки языков Python и R, использующиеся почвоведами. Проведена оценка эффективности работы разных языков программирования в приложении к большим данным. Разработаны рекомендации по выбору ИТ-инструментария для почвоведов.

Ключевые слова: почвоведение, большие данные, язык программирования, программирование, база данных, почвенная информационная система, информационные технологии, ИТ, python, R, C, Java, Scala, Koltin, Go, Julia, PHP, Javascript, анализ данных, инфраструктура почвенных данных.


Введение

Современная наука во многом опирается на массивы разнородных данных, накопленных за долгие годы исследований. С развитием информационных технологий с конца 1990-х мы вошли в новую эру — глобального информационного анализа и синтеза, основанного на базах данных (БД) и геоинформационных системах (ГИС), нейросетях и машинном обучении, виртуальной и дополненной реальности, а также на специализированных программах доступа и взаимодействия с ними, реализуемых посредством языков программирования, фреймворков и онлайн сервисов.

Как отмечают многие почвоведы по всему миру, с начала 2000-х все более популярным становится вывод информации о почвах непосредственно из "сырых" данных с использованием вычислительных инструментов и методов моделирования; это связано в первую очередь с разработкой почвенных БД и новых алгоритмов, таких как машинное обучение [1, 2]. Этот программный инструментарий нужен в первую очередь для решения задач, связанных с поддержанием продовольственной безопасности при изменении глобальных природных и социо-экономических компонент (климат, численность населения, "зеленая энергетика" и др.) [3].


Объекты и система почвенных данных

Первоначально перед специалистами по информатизации почвоведения стояла задача формализации понятий предметной области и создания гармонизированных БД в формате почвенных информационных систем [4] (например, Всемирная гармонизированная база почвенных данных [5]). Далее на основе полученных материалов разрабатываются стандартизированные системы институциональных механизмов, технологий, документаций и протоколов доступов к БД через интернет, которые обеспечивают эффективное совместное использование информации (например, Инфраструктура пространственных данных в Европе [6] и система результатов совместных сельскохозяйственных исследований AgCROS в США [7]). В результате проделанной работы становится возможен полноценный открытый анализ почвенных данных (рис. 1):

soil-big-data.png
soil-big-data.png (8.17 КБ) 2434 просмотра
Рис. 1. Алгоритм структурирования и подготовки исходных почвенных данных к открытому анализу

Как разработчики программного обеспечения могут придерживаться принципа "open source" и выкладывать программный код в открытый доступ, так и в научном сообществе принцип открытости данных может базироваться на инфраструктуре почвенных данных. Все более важно понимать, как именно организовать большое количество данных в базах и других элементах инфраструктуры, чтобы любой исследователь мог эффективно делать запросы и получать необходимую информацию.

"Большие данные" (Big data) в этом контексте являются объемным набором разнообразных данных, зачастую обновляемых в реальном времени и хранящимся как в форме традиционных реляционных БД, так и в форме слабо или вовсе не структурированных данных. Формат данных при этом может быть любым — численные или текстовые, изображения, аудио, видео.

Нет какого-то численного критерия, когда данные начинают считать большими, главное — что эти данные сложно или даже невозможно анализировать привычными "реляционными" методами (имеется в виду работа с БД, основанными на реляционной модели). Так наиболее понятными примерами больших данных являются непрерывно поступающие сведения о температуре и влажности с датчика, установленного в поле. Ранее в классических почвенных БД хранили только строго формализованные и структурированные объекты, но с развитием автоматизации сенсорных технологий, виртуальной и дополненной реальности и онлайн-платформ все чаще стали появляться большие почвенные данные [8], которые могут не иметь жесткой структуры, но за счет своей актуальности и объема представляют ценность для комплексного анализа.

soil-science-big-data.png
soil-science-big-data.png (20.62 КБ) 2434 просмотра
Рис. 2. Система структурированных (сверху) и больших почвенных данных (снизу)

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

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


Актуальность и цели

Сегодня крайне важно получить возможность быстро и просто извлекать необходимые массивы данных и использовать их в аналитических и прогностических целях на разных уровнях — от локального до общемирового; результатом является превращение исходных данных в полезную информацию. Для достижения этой цели важно решить задачи систематизации имеющихся данных и приподнять технологическую завесу для работы с разнородными данными в будущем: необходимо объединить три компонента:

программирование (создание и управление БД и нейросетями);
data mining (извлечение массивов данных и поиск закономерностей);
специализация (профессиональные знания в предметной области).

Первые два компонента требуют расширения компетенций почвоведа в сторону Data science, написания программного кода и навыков построения запросов к источникам данных. Учитывая, что в ближайшие годы продолжится также развитие сельскохозяйственной робототехники, дронов, сенсорных датчиков и других технологий точного земледелия и учета [9] — их программирование для выполнения заданных операций дополнит спектр практического применения программирования в агросекторе.

Приоритетные направления анализа больших данных:

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

В результатах анализа больших данных стоит учесть риск вероятности выявления ложной корреляции при увеличении размера выборки [10]. С математической точки зрения это объясняется, например, теорией Рамсея и синергетическим методом познания почвы [11], согласно которым структура объекта при определенных условиях содержит упорядоченную подструктуру, а следовательно даже случайно сформированный достаточно объемный массив почвенных данных может обнаружить в себе некоторую имманентную упорядоченность. Это означает, что в БД может обнаружиться корреляция лишь из-за ее размера, если эти данные большие. Чтобы избежать ошибочных выводов стоит ориентироваться не только на вычисленные корреляции и паттерны, а в первую очередь на экспертные оценки при установлении причинно-следственной связи объектов и явлений.


Методы и технологии

Язык программирования — созданный человеком формальный свод правил написания компьютерной программы для работы с вычислительными устройствами при помощи специальной знаковой системы (пример — Python).

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

Фреймворк — структурированная программная среда разработки, созданная для упрощения достижения определенных целей (например, Spark для анализа и крупномасштабной обработки данных при помощи таких языков, как Java, Scala, Python, R).

Система управления версиями — программный инструмент, позволяющий хранить историю версий проекта, а также упростить совместную разработку (например, Git).

Фронтенд — часть программы, непосредственно с которой взаимодействует "клиент" (пользователь); это может быть окно браузера или приложение на телефоне (пример: связка JavaScript, HTML и CSS).

Бэкенд — серверная (внутренняя) часть программы, которая не доступна пользователю напрямую, но связана с фронтендом как часть архитектуры (популярные примеры реализации — языки Java, PHP, Python, Ruby, Go, C#).

Самыми популярными языками программирования для аналитических задач почвоведения являются Python, R, C, C++, C#, LISP. Разработка проекта обычно идет в системе управления версиями Git на GitHub. Чтобы работать с онлайн-сервисами чаще всего используются язык разметки HTML, каскадные таблицы стилей CSS, языки программирования PHP и JavaScript; для получения массивов данных из баз применяются SQL-запросы, а для неструктурированных, больших данных — нереляционные NoSQL-базы и модели программирования экосистем распределенных вычислений (такие как Apache Spark или MapReduce в Apache Hadoop). Онлайн-платформы для обработки больших данных и облачных вычислений: Amazon Web Service, Google Cloud, Microsoft Azure. Для создания аппаратно-программных систем используется Arduino.

Из языков, в последнее время наибольшую популярность набирает Python, его преимущества:

— мощный функционал при интуитивно понятном синтаксисе;
— большое количество библиотек, фреймворков и материалов;
— активное сообщество разработчиков в интернете;
— совместимость с разными платформами (Windows, Linux, Mac).

Также очень популярен в науке о данных (data science) и аналитике язык R:

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

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

1. Python: NumPy (массивы и матрицы), SciPy (математические расчеты), Pandas (обработка и анализ данных), Plotly (графики и диаграммы), Matplotlib (научная графика), matplotlib (визуализация данных), Seaborn (визуализация статистики), Bokeh (интерактивная визуализация); Chainer (глубокое обучение), Scikit-learn / Fastai / PyTorch (машинное обучение); Keras (нейросети).

2. R: tidyverse / ggplot2 / dplyr (аналитика и визуализация), dataexplorer (анализ данных), plotly (интерактивная графика), mlr / mlr3 / caret / kernlab / mboost (машинное обучение), dt (таблицы и массивы), leaflet (интерактивные карты), shiny (интерактивные веб-приложения).

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

Таблица 1. Актуальные специализированные библиотеки по почвоведению
НазваниеОписание
На языке программирования Python
rosetta-soilреализация модели функции педотрансфера Rosetta, которая прогнозирует параметры для модели гидравлических свойств ненасыщенного грунта Ван Генухтена, используя в качестве входных базовые данные о характеристиках грунта, такие как объемная плотность и процентное содержание песка, ила и глины
flagitпроцедуры контроля качества для временных рядов влажности почвы [12]
soilgridsдоступ к глобальной информации о почвах из системы SoilGrids
evspyмоделирование уплотнения при ползучести и набухании грунтов
cassavapyмодуль работы с моделью имитационного моделирования роста культур
discfitрасчет гидравлических параметров почвы
rootwaterаналитика водного режима почвы
liqupyмоделирование движения почвы
coupling-metricsаналитика метрик почва-атмосфера
edafosалгоритмы механики грунтов
smartcppмоделирование ливневых стоков в почве
pyPTFразработка педотрансферных функций
pytesmoанализ влажности почвы
soiltextureклассификации текстуры почв
earthlibспутниковое картирование
swbводный баланс почв
pylenmмашинное обучение для выполнения комплексного анализа данных о почве и грунтовых водах, а также для поддержки создания долгосрочного мониторинга
solar_radiation_modelоценка солнечной радиации на уровне почвы
soilpyфизика и механика почв
ismnэкспорт из международной БД влажности почвы
pysoilmapцифровая почвенная картография
bestiapopэкспорт климатических данных для моделирования сельскохозяйственных культур
etrmмодель эвапотранспирации с учетом почвенно-климатических данных и дистанционного зондирования
agro-met-equations-dynalogicмодель агрометеорологических расчетов
eonrрасчет нормы азота при внесении минеральных удобрений
eo-learnанализ и обработка данных мониторинга Земли для машинного обучения
agrimetscraperсбор данных о погоде AgriMet
agricolAIмодуль AI для сельскохозяйственного применения
agro-kit – API для облегчения взаимодействия с комплектом сельхоздатчиков
На языке программирования R
agroclimклиматические индексы для сельского хозяйства
AgroRстатистические анализ экспериментальных данных в сельском хозяйстве
AgroRegрегрессионный анализ в агросфере
agrostabанализ стабильности в сельском хозяйстве
DMMFмодель эрозии почвы
ISRaDинструменты и данные для Международной базы данных почвенных радиоуглеродов
LWFBrook90Rимитация испарения и влажности почвы
mapsRinteractiveадаптация и оценка цифровых почвенных карт
mpspline2почвенные сплайн-функции
ParallelDSMпараллельное цифровое картирование почв с использованием машинного обучения
RadTranперенос радона и почвенного газа в пористой среде 2D
smaprанализ данных NASA по влажности почв и грунтов
soilassessmentмодели оценки сельскохозяйственных почвенных условий и пригодности сельскохозяйственных культур
soilDBинтерфейс почвенной БД
SoilHyPгидравлические свойства почвы
soilphysicsфизический анализ почвы
SoilRмодели разложения органических веществ почвы
SoilTaxonomyсистема классификации почв
soiltextureфункции почвенной текстуры
soilwaterаналитика водных режимов почвы
pedometricsпедометрика
GeoRанализ геостатистики
gstatпространственное и пространственно-временное геостатистическое моделирование и прогноз

Для последующей экстраполяции / интерполяции почвенных данных используются следующие методы: обратно взвешенные расстояния (IDW); ближайший сосед (ступенчатая интерполяция); кригинг (минимизация дисперсии ошибок измерения); сплайн (групповая полиномиальная интерполяция); радиально-базисная функция нейросети; пространственно-временная интерполяция [13]. В анализе больших данных крайне важно учитывать и крупномасштабную вариативность (переход с глобального уровня на конкретный объект и обратно), это особенно актуально при наложении слоев пространственных данных из разных источников.


Результаты

Анализ имеющихся научно-аналитических проектов показал, что языки программирования Python и R стали стандартом традиционных научных исследований и аналитических проектов, в том числе и в области почвоведения. При выборе технологии для работы с большими почвенными данными в фокус внимания попадают разработки, аналитический блок которых основан более быстрых (скорость выполнения операций) языках программирования (например, Java [14]).

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

В качестве примера, наглядного примера приведем сравнение скорости сортировки целых чисел на Python и Java. Код на Python интерпретируется крайне медленно, что становится все более заметным при возрастании объема вычислений. При этом Java, являясь по сути изолированной виртуальной машиной (не зависит от платформы операционной системы), дает повышенную защиту и специализируется на быстрой работе с терабайтными потоковыми данными в реальном времени на базе Oracle. Если сравнить время в миллисекундах, за которое одна и та же программа, написанная на Python и на Java, отсортирует случайно сгенерированные числа, то станет понятна разница в скорости — по данным Khoirom S. и др. [15] при сравнении значений функций оценки времени исполнения операций части кода "% timeit" в Python и "Instant.now ()" в Java — виден стабильный приоритет Java по скорости (рис. 3).

soil-java-vs-python.png
soil-java-vs-python.png (14.24 КБ) 2434 просмотра
Рис. 3. Сравнительный анализ скорости операций на Python и Java.

Также в общем виде, при работе c базами через интернет и с веб-сервисами, которые все чаще выступают важнейшим элементов в аналитике больших данных, Python показывает себя медленнее, чем многие другие языки программирования, как например JavaScript (Node.js) и PHP, которые дают масштабные интерактивные возможности.

При этом Python продолжает завоевывать все большую популярность как простой и лаконичный язык, применяемый, правда, не для разработки системы "снизу доверху", а в роли языка, связывающего различные модули, каждый из которых реализован по-своему, наиболее эффективным образом. Например, данные часто удобно хранить в нереляционных БД, которые входят в состав системы в виде готовых для установки дистрибутивов. Машинное обучение, в случае массивных наборов данных, тоже чаще удобно проводить с помощью специализированных систем или библиотек. В таких случаях программа на Python играет роль интегрирующего модуля, который получает данные от БД и передает их на вход системе обучения. По завершении цикла обучения Python собирает результаты и представляет их в виде, удобном для анализа — в виде графиков и таблиц.

Слабым местом Python (по крайней мере самой распространенной его имплементации — CPython), является отсутствие у него реального параллелизма выполнения из-за глобальной блокировки интерпретатора — Global Interpreter Lock (GIL, способ синхронизации потоков). Однако, при правильной архитектуре системы, во многих случаях это перестает быть проблемой.

Другой популярный среди почвоведов язык — R. В отличие от Python, он не имеет ограничения GIL, допуская как параллельное выполнение операций в рамках конкретной системы, так и "распараллеливание" операций для выполнения на множестве компьютеров. Тем не менее, наличие "честного" параллелизма в R и его отсутствие в Python нисколько не повлияло на растущую популярность Python. Это объясняется именно тем, что модули, требующие максимальной производительности, полностью на Python никто не пишет. Вместо этого либо используют внешние модули как в случае нереляционных БД, либо интегрируют готовый внешний модуль в библиотеку Python, т.н. “package”. В последнем случае программисты берут готовый модуль/библиотеку, написанные на специализированном производительном языке (Java/С/C++/GoLang… в принципе, что угодно, вплоть до Assembler) и "оборачивают" его в код на Python, который просто "выставляет" пользователю методы или функции Python. Получается, что Python в реальности просто переправляет эти вызовы данной специализированной библиотеке; и точно также обратно, результаты работы библиотеки конвертируются в данные на Python и возвращаются пользователю.

Нужно отметить, что Java хоть и быстрый язык программирования, но вместо него зачастую используют Scala — более краткий и удобный аналог Java, упрощающий разработку и масштабирование программ, что особенно актуально для онлайн-проектов. Scala (и его младший брат — язык Kotlin) это надстройки над языком Java. "Под капотом" тексты программ на Scala и Kotlin компилируются в текст на Java, который потом компилируется в старый добрый Java Пи-код (p-code), который и выполняется на классической Java машине. Это довольно разумный подход. "Проводя" компиляцию через текст на Java, авторы Kotlin и Scala автоматически получают основное преимущество run-time Java машины – just-in-time компиляцию: когда часто выполняющиеся фрагменты p-code транслируются "на лету" в "родные" для данного процессора команды, достигая таким образом максимально возможную производительность на выбранном фрагменте кода. Собственно just-in-time компиляция и создала такую популярность языку Java в начале 2000-х. Без just-in-time язык Java был бы еще одним очень грамотным и полностью объектно-ориентированным, но слишком медленным интерпретатором.


Обсуждение результатов

Здесь стоит задать вопрос: что для почвоведа важнее — удобство и скорость разработки программного продукта или непосредственно скорость вычислений и обработки данных? От ответа на этот вопрос в первую очередь и будет зависеть выбор технологии.

У каждого языка программирования есть своя условная специализация — одни языки универсально очень быстрые (например, "ванильный" С), но усложняют процесс разработки и поддержки аналитических инструментов; другие — наиболее эффективно и быстро взаимодействуют с базами больших данных (тот же Java); есть языки программирования, ориентированные на веб-разработку и также довольно быстро оперирующие БД (например, PHP); а есть модные и популярные языки программирования, которые просты в освоении, имеют большое сообщество и пакеты специализированных научных библиотек, но по скорости заметно уступают другим языкам (Python и R; последний особенно удобен для работы с пространственными данными).

В общем случае, для почвоведов, ориентированных на работу с большими данными, наиболее актуальны языки программирования, которые обеспечивают максимальную скорость выполнения операций. Среди относительно новых разработок в этом направлении отметим многопоточный язык Go (golang), созданный Google в 2010 году для оптимизации скорости работы приложений как более современный аналог C/C++. Сегодня язык Go прочно занял свою нишу высокоэффективных скоростных программ на распределенных системах и аналитических инструментов больших данных (рис. 4).

soil-golang.png
soil-golang.png (85.05 КБ) 2434 просмотра
Рис. 4. Динамика TIOBE-индекса языка программирования Go (golang), 2010-2021 гг. [16]

Если ориентироваться на удобную разработку мобильных приложений для Android, то среди актуальных направлений стоит отметить также относительно новый (2011) язык программирования Kotlin, который специально создавался для максимально быстрого написания программного кода, которому пророчат захват рынка Java.

При необходимости вести распределенные математические вычисления, можно использовать специальный инструмент наподобие MATLAB и R — язык программирования Julia, который создавался с целью преодолеть ограничения по скорости объемных вычислений в облачных сервисах.

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


Выводы

Наиболее популярные языки программирования среди почвоведов — Python с добавлением R. Эти языки обладают множеством преимуществ, но они крайне медленные и требовательные к ресурсам. Они не подходит для того, чтобы писать программы, которые бы напрямую обращались к серьезным БД; для этого лучше использовать другие языки, например, Java, Scala, Kotlin — удобные кросс-платформенные языки с автоматическим “сборщиком мусора”. Для ресурсозатратных задач обработки Big data хорошо подойдет язык C++, а для самых масштабных вычислений, возможно, стоит использовать незаслуженно забытый почвоведами язык программирования С, который обладает наилучшей универсальной производительностью из всех языков программирования высокого уровня.

Наилучшим вариантом для любого проекта является индивидуальный выбор языка (или даже языков) программирования ровно под текущую задачу. Зачастую лучшим вариантом для масштабного научного проекта будет использование не одного конкретного языка программирования, их связки — написание каждого модуля на оптимальном для него языке программирования. Так, модули связанные с работой с текстом, пользовательским интерфейсом конечного продукта или мобильное приложение можно написать на Python; обработка и вычисление данных — на Java, C++ или Go; создание многопользовательского доступа к БД с конечной информацией для её вывода на сайте — PHP; обеспечение вывода картографической информации на сайте — JavaScript и проч.


Заключение

Инновации в сельском хозяйстве при сохранении экологических и других ресурсов — тренд будущего. Крайне актуальным становится снижение продовольственных потерь на всех уровнях агропромышленного цикла. Для решения этих задач создаются глобальные информационные системы и инфраструктуры больших данных. Сегодня в поисковой системе Google за 1 минуту выполняется 7 миллиардов запросов; это много, но если объединить все данные с систем почвенного мониторинга Земли, то там количество потоковых данных будет гораздо больше; ограничителем здесь является лишь скорость каналов передачи данных и объем памяти устройств.

Анализ все возрастающего количества структурированных и неструктурированных данных становится приоритетной задачей, для решения которой нужно повышать уровень IT-подготовки почвоведов и специалистов сельского хозяйства, включая знания в области БД и Big data, навыки программирования, машинного обучения, управления дронами и роботами, интеграции и обработки разнородных массивов. Кроме широкоиспользуемых языков программирования Python и R, почвоведам стоит также обратить внимание на более быстрые инструменты, которые позволят работать с большими данными.


Литература

1. Wadoux A.M.J.-C., Román-Dobarco M., McBratney AB. Perspectives on data-driven soil research. Eur J Soil Sci., 2021. – V.72 – P.1675-1689.
2. Kaggle Research Prediction Competition: Predict physical and chemical properties of soil using spectral measurements with machine learning, 2014. URL: https://kaggle.com/c/afsis-soil-properties
3. Долгинова В.А., Рыбальский Н.Н. Второй демографический переход и продовольственная безопасность // Использование и охрана природных ресурсов в России. — 2020. — № 3. — С. 3–11.
4. Рыбальский Н. Н., Иванов А. В. Цифровая модель почвы. — Москва: Москва, 2020. — 237 с.
5. Harmonized World Soil Database, 2021 URL: http://fao.org/soils-portal/data-hub/so ... se-v12/en/
6. Infrastructure for spatial information in Europe INSPIRE,
URL: https://inspire.ec.europa.eu/
7. Agricultural Collaborative Research Outcomes System (AgCROS), USDA-ARS, 2019-2025. URL: https://agcros-usdaars.opendata.arcgis.com/
8. Berger R. Business opportunities in precision farming: Will big data feed world in the future? // Roland Berger Strategy Consultants GmbH, 2015. URL: https://rolandberger.com/publications/p ... 150803.pdf
9. Trendov N.M., Varas S. & Zeng M. Digital technologies in agriculture and rural areas – Status report. Rome, 2019. – 140 c.
URL: http://www.fao.org/3/ca4985en/CA4985EN.pdf
10. Calude C.S., Longo G. The deluge of spurious correlations in big data. Foundations of Science, V.22, 2017. - P.595-612. URL: https://di.ens.fr/users/longo/files/Big ... oAug21.pdf
11. Долгинова В.А., Рыбальский Н.Н. Синергетический метод познания почвы // Использование и охрана природных ресурсов в России. — 2019. — № 4. — С. 22–26.
12. Dorigo, W.A. , Xaver, A. Vreugdenhil, M. Gruber, A., Hegyiova, A. Sanchis-Dufau, A.D., Zamojski, D. , Cordes, C., Wagner, W., and Drusch, M. Global Automated Quality Control of In situ Soil Moisture data from the International Soil Moisture Network. Vadose Zone Journal, 2013. — №12 — P. 3.
13. Spatially and temporally disparate data in systems agriculture // Kharel T.P., Ashworth A.J., Owens P.R., Buser M. – Issues and prospective solutions. Agronomy Journal, 2020. — V.112 — P.4498-4510.
14. Garg R., Aggarwal H. Big data analytics recommendation solutions for crop disease using Hive and Hadoop Platform. Indian Journal of Science and Technology. 2016 — Vol. 9(32) — P. 1-6. URL: https://sciresol.s3.us-east-2.amazonaws ... icle99.pdf
15. Khoirom S., Sonia M., Laikhuram B., Laishram J., Singh TD. Comparative analysis of Python and Java for beginners. Int. Res. J. Eng. Technol. 2020. — P.: 4384-4407.
16. Tiobe index, URL: https://tiobe.com/tiobe-index/go/


Код: Выделить всё

Долгинова В. А., Рыбальский Н. Н., Хомюк С. В. Программирование и анализ больших данных в почвоведении // Использование и охрана природных ресурсов в России. — 2021. — № 4. — С. 22–30.

Programming and big data analysis in soil science
V.A. Dolginova, PhD in Biology, Research Centre “Agroprognoz”
N.N. Rybalskiy, PhD in Biology, Senior Researcher at Soil geography department, Faculty of soil science Lomonosov Moscow State University
S.V. Khomyuk, Software Engineer III, AT&T Inc. (USA)

The article presents a scheme for the analysis of structured and big data in soil science. Actualized the priority areas of big data analysis. A stack of technologies for working with big data presented. Highlighted the libraries and frameworks for Python and R used by soil scientists. Estimated the efficiency of different programming languages in the application to big data. Recommendations on the choice of IT tools for soil scientists have been developed.

Keywords: soil science, big data, programming language, programming, database, soil information system, information technology, IT, Python, R, C, Java, Scala, Koltin, Go, Julia, PHP, Javascript, data analysis, soil data infrastructure.
Ответить