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

Узлы графов делятся на следующие виды:

  • Входы
  • Фильтры
  • Операции
  • Шаблоны
  • Выходы

Узлы могут иметь входы и выходы двух типов:

  • Потоки объектов (темно-зеленый). Между такими выходами передаются списки гео-объектов, имеющих геометрию и теги.
  • Значения (желтый). Между такими выходами передаются числовые или строковые значения.
Узел tag_stats принимает на вход поток объектов, вычисляет числовое значение (среднее значение тега building:levels) и передает его на вход узлу фильтрации. А тот принимает объекты и значение, фильтрует список объектов и передает его дальше.

Входы

Входы - это узлы, которые генерируют начальный набор картографических объектов, например загружая их из ГИС.

OSM Input

Загружает из OSM все данные в границах указанного прямоугольника. Нажмите на кнопку на узле, чтобы открыть карту и выбрать загружаемую область.

Выбор области для импорта из OSM

FileInput

Узел загружает данные из GeoJSON файла. Файл необходимо сперва добавить в проект.

Выпадающий список содержит перечень всех загруженных в проект файлов

Загрузка, просмотр и удаление файлов осуществляется вот на этой вкладке на странице проекта:

CSV Input

Аналогичен GeoJSON входу, только берет данные из предварительно загруженного в проект CSV файла. В файле при этом должен быть заголовок с именами столбцов. В узле указывается два названия столбцов, соответствующих столбцам с широтой и долготой. Далее каждая строка в файле превращается в объект с точечной геометрией с координатами, взятыми из указанных столбцов. Все остальные столбцы становятся тегами объектов.

Первый dropdown содержит список файлов в проекте, поля ввода задают названия столбцов с широтой и долготой

Value Input

Этот узел просто выдает на выход записанное в нем произвольное значение.

Дальше этот узел можно соединить, например, с узлом фильтрации по значению тега

Input

Используется только при создании шаблонов. Соответствует входу в шаблон. Имеет один параметр - имя входа.

При добавлении узла шаблона в графы пайплайнов, у таких узлов будет столько входов, сколько было узлов Input в графе шаблона


Фильтры

Узлы-фильтры принимают на вход один или несколько потоков объектов и выдают на выход только те из них, которые удовлетворяют условию фильтра

Filter by Tag Exists

Пропускает только те объекты, у которых есть указанный тег. Значение тега при этом роли не играет.

Этот фильтр пропустит все здания, независимо от их типа

Filter by Tag Value

Пропускает только те объекты, которые имеют указанный тег и удовлетворяют условию. Условие может быть:

  • ==  значение тега равно заданному
  • != значение тега не равно заданному
  • > значение тега больше заданного
  • <, >=, <= - значение тега меньше, больше или равно, меньше или равно заданного.

Для сравнений "больше-меньше" значения сперва преобразовываются к числу. Если это получилось - сравниваются как числа, если нет - то как строки в лексикографическом порядке.

Этот фильтр пропустит только объекты, у которых указана этажность (есть тег building:levels) и они имеют 6 или более этажей

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

Выборка только дорог, у которых тег highway совпадает с одним из указанных значений

Помимо записанных в узле фиксированных значений, узел Filter_by_Tag_Value также может принимать значения на вход от других узлов. Для этого у него есть также опциональный числовой вход. Пример можно увидеть в начале этой статьи.

Filter by Area

Имеет два входа. На первый подаются объекты, на второй - области. На выход передаст только те объекты, которые пересекаются хотя бы с одной областью.

На схеме ниже этот фильтр используется для поиска дорожек в пределах парка. На первый вход (объекты) подаются все дорожки (объекты с тегом highway=footway), на второй - парки (leisure=park), на выходе будут все дорожки, которые находятся в пределах хотя бы одного парка.

Можно выбрать один из двух режимов пересечения:

  • Intersects - объекты из первого входа должны пересекаться (то есть иметь хотя бы одну общую точку) с хотя бы одним объектом из второго входа
  • Contains - объект из первого входа должен целиком содержаться внутри одного из объектов со второго входа
Ищем дорожки, пересекающиеся с парками

Filter by Geometry Type

Фильтр по типу геометрии - точка, линия, полигон. Работает в двух режимах - равенство (==) и неравенство (!=) типа заданному

Пропустит только точечные объекты

Filter by Geometry Area

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

Оставит только объекты площадью более 10 соток (1000 м2)

Outlier Filter

Осуществляет фильтрацию выбросов по значению указанного тега. Удаляет из потока объекты, чье значение тега находится вне диапазона [Q1 - 1.5 IQR, Q3 + 1.5 IQR].


Операции

Это вспомогательные узлы, позволяющие объединять или еще как-то модифицировать поток данных

Объединение

Объединяет несколько потоков данных, на выходе будут все объекты из всех входов.

Изначально входов два, но можно добавить дополнительные с помощью кнопки.

Объединяем выборку по зданиям, природным и развлекательным объектам

Разность потоков

Передает на выход те объекты, которые есть в потоке на первом входе, но отсутствуют в потоке на втором входе.

Эта операция позволяет инвертировать значения фильтра. Например, если нам нужны объекты, которые НЕ пересекаются с заданными областями, мы можем инвертировать значение Area Intersection Filter таким образом:

Сперва мы выбираем все озеленение с помощью узла City Greenery. Затем отбираем те объекты, которые пересекаются с нужной нам зоной (ребро идущее слева-сверху). Затем передаем их на второй вход узла разности, а на первый передаем неотфильтрованный поток озеленения. В таком случае, на выходе мы получим объекты озеленения, которые не были на выходе Area Intersection Filter, т.е. которые НЕ пересекаются с указанной зоной.

Слияние пересекающихся

Объединяет все объекты, имеющие пересечения геометрии, в один большой объект. Теги при этом тоже объединяются. Если у исходных объектов были разные значения одного и того же тега, то у результирующего объекта будет одно из них, но какое именно - не определено.

Этот узел может использоваться, например, чтобы перенести теги с точечных объектов типа amenity на здания, в пределах которых они расположены.

Буфер

Стандартная операция построения буфера вокруг объекта. Имеет один параметр - толщину в метрах.

При отрицательном значении объекты будут "сужаться", при положительном - "утолщаться" на эту величину.

Центроид

Заменяет геометрии объектов на их центроиды - точки, представляющие собой центры масс.

Может быть полезно для дальнейшего построения круговых радиусов доступности объектов. Если строить буфер вокруг самого объекта, то форма буфера будет зависеть от формы объекта, а если сперва взять его точку-центроид, то буфер всегда будет круглым.

Для объектов сложной формы центроид может находиться за пределами геометрии объекта.

Установка тега

Устанавливает всем объектам в потоке указанное значение заданного тега

Установит всем объектам тег test_tag=1234

Join By Overlap

Почти то же самое, что объединение по геометрии, но объединяет только теги, а не саму геометрию.

Для каждого объекта с первого входа ищет все объекты со второго, с которыми он пересекается. Переносит теги с этих объектов на первый. Выдает дальше список объектов с первого входа с этими дополнительными тегами.

Может использоваться, например, для часто встречающейся в OSM задачи: переноса тегов с объектов (точек с тегом amenity) на здания (полигоны с тегом building, внутри которых они лежат).  

Join By Tag Value

Также как и предыдущий узел переносит значения тегов из объектов со второго входа на объекты с первого. Только тут критерием является совпадение значений указанных тегов.

К примеру, такой вот узел добавит к объектам с первого входа теги всех объектов со второго таких, что значение тега id у первого совпадет со значением тега user_id у второго.  

Stream Size

Простой узел, принимает на вход поток объектов и выдает число - количество объектов в потоке.

Tag Stats

Вычисляет указанную статистическую величину для значений указанного тега во входном потоке. Умеет вычислять среднее, медиану, первый и третий квартили, минимальное и максимальное значения.

Узел вычислит и выдаст среднее значение этажности зданий во входном потоке объектов

Шаблоны

Шаблоны позволяют создавать сложные графы, которые затем можно вставлять в другие графы в виде одного-единственного узла. По сути это аналог подпрограмм.

Узел шаблона имеет столько входов, сколько узлов типа "Вход" имеет граф шаблона.

Так выглядит шаблон для зеленых зон, включающий несколько возможных тегов OSM:

Так выглядит шаблон для зеленых зон

А вот так он выглядит в виде узла при вставке в другие графы:

Узел шаблона в графе

Шаблоны позволяют упростить обработку и выполнение типовых задач. Мы подготовили шаблоны для типовых объектов, таких как "зеленые зоны", "здания" и т.п. Так что вам не нужно самостоятельно заботиться о том, какими именно тегами в OSM описываются эти типы объектов.


Результат

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

В графе может быть только один узел с результатом. Если вы хотите объединить в результат несколько групп объектов, используйте узел "Объединение".

Результат - единственный в графе узел, не имеющий выходов