На этой странице описаны все узлы, которые можно использовать в графах пайплайнов. Перед прочтением рекомендуем сперва ознакомиться с общими принципами организации графов, описанными в этой статье.
Узлы графов делятся на следующие виды:
- Входы
- Фильтры
- Операции
- Шаблоны
- Выходы
Узлы могут иметь входы и выходы двух типов:
- Потоки объектов (темно-зеленый). Между такими выходами передаются списки гео-объектов, имеющих геометрию и теги.
- Значения (желтый). Между такими выходами передаются числовые или строковые значения.
Входы
Входы - это узлы, которые генерируют начальный набор картографических объектов, например загружая их из ГИС.
OSM Input
Загружает из OSM все данные в границах указанного прямоугольника. Нажмите на кнопку на узле, чтобы открыть карту и выбрать загружаемую область.
FileInput
Узел загружает данные из GeoJSON файла. Файл необходимо сперва добавить в проект.
Загрузка, просмотр и удаление файлов осуществляется вот на этой вкладке на странице проекта:
CSV Input
Аналогичен GeoJSON входу, только берет данные из предварительно загруженного в проект CSV файла. В файле при этом должен быть заголовок с именами столбцов. В узле указывается два названия столбцов, соответствующих столбцам с широтой и долготой. Далее каждая строка в файле превращается в объект с точечной геометрией с координатами, взятыми из указанных столбцов. Все остальные столбцы становятся тегами объектов.
Value Input
Этот узел просто выдает на выход записанное в нем произвольное значение.
Input
Используется только при создании шаблонов. Соответствует входу в шаблон. Имеет один параметр - имя входа.
При добавлении узла шаблона в графы пайплайнов, у таких узлов будет столько входов, сколько было узлов Input в графе шаблона
Фильтры
Узлы-фильтры принимают на вход один или несколько потоков объектов и выдают на выход только те из них, которые удовлетворяют условию фильтра
Filter by Tag Exists
Пропускает только те объекты, у которых есть указанный тег. Значение тега при этом роли не играет.
Filter by Tag Value
Пропускает только те объекты, которые имеют указанный тег и удовлетворяют условию. Условие может быть:
- == значение тега равно заданному
- != значение тега не равно заданному
- > значение тега больше заданного
- <, >=, <= - значение тега меньше, больше или равно, меньше или равно заданного.
Для сравнений "больше-меньше" значения сперва преобразовываются к числу. Если это получилось - сравниваются как числа, если нет - то как строки в лексикографическом порядке.
Количество значений можно увеличивать. В таком случае при проверке равенства будет применено условие ИЛИ (т.е. достаточно равенства с любым из значений), а для неравенства - И (т.е. необходимо неравенство со всеми значениями)
Помимо записанных в узле фиксированных значений, узел Filter_by_Tag_Value также может принимать значения на вход от других узлов. Для этого у него есть также опциональный числовой вход. Пример можно увидеть в начале этой статьи.
Filter by Area
Имеет два входа. На первый подаются объекты, на второй - области. На выход передаст только те объекты, которые пересекаются хотя бы с одной областью.
На схеме ниже этот фильтр используется для поиска дорожек в пределах парка. На первый вход (объекты) подаются все дорожки (объекты с тегом highway=footway), на второй - парки (leisure=park), на выходе будут все дорожки, которые находятся в пределах хотя бы одного парка.
Можно выбрать один из двух режимов пересечения:
- Intersects - объекты из первого входа должны пересекаться (то есть иметь хотя бы одну общую точку) с хотя бы одним объектом из второго входа
- Contains - объект из первого входа должен целиком содержаться внутри одного из объектов со второго входа
Filter by Geometry Type
Фильтр по типу геометрии - точка, линия, полигон. Работает в двух режимах - равенство (==) и неравенство (!=) типа заданному
Filter by Geometry Area
Фильтрует по площади, занимаемой объектом. Можно выбирать условие (больше или меньше указанной площади) и единицы измерения (метры, сотки, гектары).
Outlier Filter
Осуществляет фильтрацию выбросов по значению указанного тега. Удаляет из потока объекты, чье значение тега находится вне диапазона [Q1 - 1.5 IQR, Q3 + 1.5 IQR].
Операции
Это вспомогательные узлы, позволяющие объединять или еще как-то модифицировать поток данных
Объединение
Объединяет несколько потоков данных, на выходе будут все объекты из всех входов.
Изначально входов два, но можно добавить дополнительные с помощью кнопки.
Разность потоков
Передает на выход те объекты, которые есть в потоке на первом входе, но отсутствуют в потоке на втором входе.
Эта операция позволяет инвертировать значения фильтра. Например, если нам нужны объекты, которые НЕ пересекаются с заданными областями, мы можем инвертировать значение Area Intersection Filter таким образом:
Сперва мы выбираем все озеленение с помощью узла City Greenery. Затем отбираем те объекты, которые пересекаются с нужной нам зоной (ребро идущее слева-сверху). Затем передаем их на второй вход узла разности, а на первый передаем неотфильтрованный поток озеленения. В таком случае, на выходе мы получим объекты озеленения, которые не были на выходе Area Intersection Filter, т.е. которые НЕ пересекаются с указанной зоной.
Слияние пересекающихся
Объединяет все объекты, имеющие пересечения геометрии, в один большой объект. Теги при этом тоже объединяются. Если у исходных объектов были разные значения одного и того же тега, то у результирующего объекта будет одно из них, но какое именно - не определено.
Этот узел может использоваться, например, чтобы перенести теги с точечных объектов типа amenity на здания, в пределах которых они расположены.
Буфер
Стандартная операция построения буфера вокруг объекта. Имеет один параметр - толщину в метрах.
При отрицательном значении объекты будут "сужаться", при положительном - "утолщаться" на эту величину.
Центроид
Заменяет геометрии объектов на их центроиды - точки, представляющие собой центры масс.
Может быть полезно для дальнейшего построения круговых радиусов доступности объектов. Если строить буфер вокруг самого объекта, то форма буфера будет зависеть от формы объекта, а если сперва взять его точку-центроид, то буфер всегда будет круглым.
Для объектов сложной формы центроид может находиться за пределами геометрии объекта.
Установка тега
Устанавливает всем объектам в потоке указанное значение заданного тега
Join By Overlap
Почти то же самое, что объединение по геометрии, но объединяет только теги, а не саму геометрию.
Для каждого объекта с первого входа ищет все объекты со второго, с которыми он пересекается. Переносит теги с этих объектов на первый. Выдает дальше список объектов с первого входа с этими дополнительными тегами.
Может использоваться, например, для часто встречающейся в OSM задачи: переноса тегов с объектов (точек с тегом amenity) на здания (полигоны с тегом building, внутри которых они лежат).
Join By Tag Value
Также как и предыдущий узел переносит значения тегов из объектов со второго входа на объекты с первого. Только тут критерием является совпадение значений указанных тегов.
К примеру, такой вот узел добавит к объектам с первого входа теги всех объектов со второго таких, что значение тега id у первого совпадет со значением тега user_id у второго.
Stream Size
Простой узел, принимает на вход поток объектов и выдает число - количество объектов в потоке.
Tag Stats
Вычисляет указанную статистическую величину для значений указанного тега во входном потоке. Умеет вычислять среднее, медиану, первый и третий квартили, минимальное и максимальное значения.
Шаблоны
Шаблоны позволяют создавать сложные графы, которые затем можно вставлять в другие графы в виде одного-единственного узла. По сути это аналог подпрограмм.
Узел шаблона имеет столько входов, сколько узлов типа "Вход" имеет граф шаблона.
Так выглядит шаблон для зеленых зон, включающий несколько возможных тегов OSM:
А вот так он выглядит в виде узла при вставке в другие графы:
Шаблоны позволяют упростить обработку и выполнение типовых задач. Мы подготовили шаблоны для типовых объектов, таких как "зеленые зоны", "здания" и т.п. Так что вам не нужно самостоятельно заботиться о том, какими именно тегами в OSM описываются эти типы объектов.
Результат
Узел с результатом имеет единственный вход и не имеет выходов. Все объекты, дошедшие до этого узла, будут сохранены как результат выполнения пайплайна.
В графе может быть только один узел с результатом. Если вы хотите объединить в результат несколько групп объектов, используйте узел "Объединение".