About OneSoil Map_OneSoil blog_cover

60 миллионов полей и 27 культур. Как мы делали OneSoil Map

Месяц назад мы запустили интерактивную карту, с помощью которой можно получить информацию о любом поле в США и Европе. Про карту написали десятки изданий, а на Product Hunt она собрала беспрецедентные для продукта из агросектора полторы тысячи лайков. Мы разрабатывали карту два месяца — рассказываем, как это было.

Что такое OneSoil Map

Как и все продукты OneSoil, интерактивная карта работает на алгоритмах машинного обучения и спутниковых снимках. В ней собрана информация о 60 миллионах полей и 27 культурах в 44 странах Европы и США. Все данные представлены за три года. При помощи карты можно как отслеживать тенденции на уровне стран и регионов, так и наблюдать за развитием конкретного поля. Например, вы можете узнать, сколько площадей было занято кукурузой в США в 2016 году (49,1 миллионов гектаров) или в каком регионе Бельгии больше всего пшеничных полей (Валлония).
OneSoilMap_USA
Так в OneSoil Map выглядит Европа на минимальном зуме
При помощи OneSoil Map можно узнать информацию и по отдельному полю: его размер, культуру, график развития и комплексный показатель Field Score. Он рассчитывается по индексу NDVI, климатическим показателям и относительной урожайности поля. В любой момент вы можете посмотреть, как развивается свекла на вашем поле или какую площадь под бобовые отвел сосед в прошлом году. Помимо всего прочего, OneSoil Map — это красиво. Мы сделали кнопку «случайные красивые поля»: она перемещает вас по 35+ местам по всему миру, каждое из которых похоже на произведение абстрактного искусства.

Идея создания такой карты появилась ещё в июле этого года. Нам не хватало инструмента, который позволил бы наглядно продемонстрировать все технологические возможности OneSoil. В августе вся команда вплотную приступила к разработке.

Данные: собрать, обработать, сжать

При разработке OneSoil Map мы использовали снимки спутника Sentinel-2 проекта Copernicus. Всего для Европы и США было обработано порядка 250 терабайт информации. На первом этапе мы делали препроцессинг снимков: чистили облака, тени, снег, выполняли компрессию данных. Затем на получившихся 50 терабайтах запустили процесс поиска границ полей и классификации культур на наших моделях машинного обучения. На выходе мы получили около 250 гигабайт векторных карт, содержащих геометрии полей и культуры.

Затем все эти данные перешли к back-end разработчику Евгению Воронцу. «Для обработки данных и просчёта статистики я использовал базу данных PostgreSQL c расширением PostGIS. После экспорта исходных векторных данных я получил базу, в которой было около 180 миллионов записей о геометрии полей, а также более миллиарда записей дополнительной атрибутивной информации о самих полях за три года», — рассказывает Женя. На таком объеме данных мы просчитывали статистику, рейтинги, определяли популярность разных культур в регионах мира — всё то, что на карте отображается в левой колонке и интерактивных подсказках.
Мы хотели быстро рассчитывать и отображать агрономические показатели по полю, а также визуализировать график развития растений за сезон. Для этого мы использовали собственный подход к кэшированию и компрессии спутниковых данных. Это позволило сократить размер хранилища данных в 100−200 раз, а скорость получения информации по полю уменьшить до 1 секунды.

Также в эту версию OneSoil Map мы добавили комплексный показатель Field Score, который позволяет быстро оценить рейтинг поля. «Field Score это первый шаг в направлении прогнозирования урожайности, над которым наша команда сейчас работает, — объясняет data scientist Александр Калиновский. — Карта делалась в сжатые сроки, потому пришлось много оригинальных решений изобретать „на ходу“. Но все новые разработки мы применяем в работе над нашим основным продуктом, платформой OneSoil».

Карта: выбрать формат и подготовить данные

Для того, чтобы визуализировать данные, мы в итоге использовали сервис Mapbox. Существует два подхода к созданию карты, мы опробовали оба. Первый предполагает создание растровой карты. «В этом случае мы делим карту на квадраты, которые рендерим в картинки и храним на сервере. Браузер загружает несколько картинок и двигает их, когда пользователь перемещается по карте», — рассказывает front-end разработчик Дима Кабак. Этот подход позволяет отобразить все поля, не нужно ничего фильтровать. Это красиво, минус в том, что карта получается статичной, плюс растровые картинки много весят.

Второй подход — создание векторной карты. «Браузер загружает векторные данные и уже на стороне клиента анимирует их. Так работают современные карты Google и Yandex. Данные весят меньше, чем картинки, и позволяют изменять дизайн любого элемента», — поясняет Дима. Такую карту позволяет сделать сервис Mapbox, в частности, их библиотека Mapbox GL это инструмент с открытым исходным кодом для отображения карт в вебе. Среди прочего, Mapbox предоставляет платный сервис хранения картографических данных. Можно вручную загрузить свои данные на их серверы, а Mapbox будет быстро распределять информацию, обеспечивая чёткую работу карты. Это существенная часть работы, и благодаря тому, что Mapbox берёт ее на себя, задача команды OneSoil сильно упростилась.
При работе с векторным данными есть условное ограничение: чем больше информации ты хочешь отобразить на карте, тем медленнее всё будет работать. Для решения этой проблемы мы использовали утилиту от Mapbox под названием Tippecanoe. «На основании выбранных нами алгоритмов она определяла, на каком зуме те или иные поля будут видны, а какие нет, и невидимые векторные объекты убирала из слоя», — поясняет Женя. Всего в Tippecanoe более 20 алгоритмов фильтрации, мы опробовали все и выбрали пару основных. Подготовленные таким образом данные мы сжали при помощи технологии mbtiles от Mapbox до 50 гигабайт, и затем загружали на серверы компании.

Ещё больше ускорить работу OneSoil Map позволило использование фреймворка Next JS, который выполняет серверный рендеринг страницы. Большинство приложений в современном мире рендерятся целиком на стороне клиента: при открытии окна в браузере отображается пустая hmtl-страница и скрипт, который загружает всю информацию. «Фреймворк Next JS делает все на сервере, и это делает загрузку приложения быстрой для клиента», — поясняет Дима.

Карта: настроить визуал и придумать «волшебную кнопку» за ночь до релиза

По словам продуктового дизайнера Ивана Уварова, Mapbox стал для него приятным открытием. «Это упростило задачу, потому что я смог визуализировать данные без привлечения front-end разработчика», – объясняет он. Со стороны может показаться, что раскрасить поля в готовом интерфейсе легко, но есть много нюансов. «У нас 27 культур, и подобрать для них цвета было непросто. Для популярных культур нужны контрастные цвета, для менее популярных – менее контрастные, и все они должны быть хорошо различимы на разных зумах», – уточняет Ваня. В OneSoil Map много вложенностей и интерактивных подсказок, и по словам дизайнера, самым сложным было продумать логику переходов на разных уровнях. «У меня была куча деталей пазла, которые нужно было соединить в одну цельную картину», – вспоминает он.

За ночь до релиза мы поняли, что на карту и цифры хоть и интересно смотреть, но этим не хочется поделиться в социальных сетях. Поэтому решили добавить кнопку "random beautiful fields", которая перекидывает пользователей между разными местами планеты. Всем офисом мы искали красивые места, за час нарисовали кнопку и всё заверстали. Утром потестили – и запустили. «Мне кажется, что именно эта функция дала нам такой большой охват. Иначе никто бы не обратил внимание на то, что поля похожи на абстрактные картины», – комментирует Иван. Эту функцию оценил российский дизайнер Артемий Лебедев: после того, как он сделал пост в своих соцсетях, к нам хлынул поток новых пользователей. На пике посещаемости карту одновременно изучали 1300 человек. Не стоит недооценивать силу решений, принятых в последнюю минуту.
Ещё одну функцию мы добавили в OneSoil Map уже после запуска. Мы знали, что иногда распознаем поля и культуры на карте не совсем точно, и фидбек со стороны пользователей позволяет улучшать наши алгоритмы. После релиза фермеры начали присылать сообщения о неточностях в распознавании культур: «У меня на поле растет подсолнечник, а у вас указана кукуруза». Чтобы решить этот вопрос, мы добавили в карточку поля кнопку, которая отправляет нам уведомления об ошибках. Собранную информацию мы используем для повышения точности наших моделей распознавания культур.

По итогу

За время своей разработки концепция OneSoil Map многократно усложнилась. Если сначала мы планировали сделать простую визуализацию полей и культур по всему миру, то финальный продукт получился намного более комплексным. Но карта стоила затраченных на неё усилий. После релиза нам написали сотни инвесторов, фондов и научных исследователей. Часть технологических решений, например, фреймворк Next JS и утилиту Tippecanoe, мы будем использовать в дальнейшей работе над платформой OneSoil.

Мы стали первыми, кто нанес на карту все поля США и Европы за три года. «Данные, которые мы получили, – уникальны. Уже сейчас мы знаем про поля больше, чем любая компания или государство. А статистика, которую мы получаем при помощи алгоритмов машинного обучения, часто более точная, чем та, что была собрана вручную. Мы сделали первый шаг к тому, чтобы автоматически распознать поля во всём мире – это наш план на ближайшее будущее», – резюмирует Head of Product Александр Яковлев.
OneSoilMap_Statistics_OneSoilblog
И немного статистики по OneSoil Map напоследок
Нравится этот пост?
Статьи по теме
Оставьте комментарий
Made on
Tilda