19. Методы вычисления весов полигональных объектов в ГИС для способа репрезентативных точек

№ п/п Способ обработки Точность представл. (0.176) Сложность реализ. (S1) (0.118) Производит. (S1) (0.50) Объем данных (0.059) Пригодность для S2 (тек.) (0.147) Общий рейтинг
1 Использование pyosmium для вычисления репрезентативных точек 4 (0.704) 3 (0.354) 5 (2.500) 5 (0.295) 5 (0.735) 4.588
2 Использование osmium export для получения центроидов (вкл. relation) 3.5 (0.616) 3 (0.354) 4 (2.000) 5 (0.295) 4.5 (0.662) 3.927
3 Репрезентативная точка way (representative_point()) 4 (0.704) 4 (0.472) 4 (2.000) 5 (0.295) 4 (0.588) 3.859
4 Центроид геометрии way (текущий для полигонов) 2 (0.352) 5 (0.590) 5 (2.500) 5 (0.295) 3 (0.441) 3.737
5 Игнорирование relation, обработка только way как отдельных объектов 1 (0.176) 5 (0.590) 5 (2.500) 5 (0.295) 3 (0.441) 3.561
6 Обработка relation (мультиполигон) -> репрезент. точка (Python/XML) 3 (0.528) 2 (0.236) 2 (1.000) 5 (0.295) 4 (0.588) 2.647
7 Извлечение геометрии relation/way и взятие точек всех вершин 3 (0.528) 3 (0.354) 3 (1.500) 2 (0.118) 2 (0.294) 2.440
8 Сегментация линий (way для дорог, рек) на N точек 3 (0.528) 3 (0.354) 3 (1.500) 2 (0.118) 2 (0.294) 2.440
9 Присвоение атрибута объекту всем H3-гексагонам, которые он покрывает 5 (0.880) 2 (0.236) 1 (0.500) 1 (0.059) 1 (0.147) 1.822

Представьте, что у нас есть огромная карта OpenStreetMap. Нам не нужны все объекты, а только некоторые: школы, дороги, парки, берега моря.

ТОП-3 Способа найти "главную точку" (из нашей таблицы):

  1. Супер-умный помощник pyosmium (Способ 1 в таблице):

    • Мы используем специальный Python-инструмент (pyosmium), который очень быстро читает карту OSM.

    • Мы ему говорим: "Найди все школы, парки и т.д."

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

    • Плюсы: Очень быстро, очень точно (даже для сложных объектов).

    • Минусы: Чуть сложнее научить этого помощника всем трюкам.

  2. Внешний эксперт osmium-tool (Способ 2 в таблице):

    • Мы просим другую программу (osmium-tool): "Эй, эксперт, найди все школы и дай мне для каждой её главную точку. Сделай то же для парков и т.д."

    • Этот эксперт сам разбирается со сложными фигурами и выдает нам готовый список объектов с их "главными точками".

    • Плюсы: Эксперт делает сложную работу за нас, это довольно быстро.

    • Минусы: Мы должны точно объяснить эксперту, что нам нужно, и он может дать точку не совсем так, как мы бы хотели в редких случаях.

  3. Улучшенный старый метод (Способ 3 в таблице):

    • Мы сначала просим osmium-tool просто вырезать нам все школы, парки и т.д. в отдельные маленькие карты (в формате XML).

    • Потом наш Python-скрипт смотрит на эти маленькие карты.

    • Если это простое здание школы (одна фигура) или простая дорога (одна линия), он находит для них "представительную точку".

    • Проблема: Если парк очень сложный (много отдельных кусочков, островов) или больница из многих корпусов, этот метод может запутаться и не найти хорошую "главную точку" для всего сложного объекта целиком. Он хорошо работает только для простых фигур.

Шаг 2: Оцениваем влияние объектов на разные места (Скрипт 2)

Теперь у нас есть список "главных точек" для всех интересующих нас школ, парков, участков дорог и т.д. Мы хотим понять, как они влияют на разные шестиугольные участочки земли (наши H3-гексагоны).

  1. Берем один шестиугольник на карте.

  2. Смотрим, какие "главные точки" объектов (школ, парков) находятся рядом с ним.

    • Например, рядом со шестиугольником есть "главная точка" школы и "главная точка" парка.
  3. Для каждого объекта рядом оцениваем его влияние:

    • Расстояние: Чем ближе "главная точка" объекта к нашему шестиугольнику, тем сильнее влияние.

    • Тип объекта: Школа может влиять по-своему (например, хорошо для семей), парк – по-своему (хорошо для отдыха). У каждого типа объекта есть свой "базовый балл влияния" и "радиус действия".

    • Сила влияния: Если "главная точка" школы очень близко, её влияние на шестиугольник будет почти максимальным. Если она на границе "радиуса действия", влияние будет слабым. Если дальше радиуса – влияния нет.

  4. Суммируем: Складываем баллы влияния от всех объектов (одного типа), которые влияют на наш шестиугольник.

    • Пример: Если на шестиугольник влияют две школы, их баллы сложатся. Отдельно посчитаем влияние от парков.

Примеры:

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

Главное, что точность всего этого зависит от того, насколько хорошо мы на Шаге 1 смогли представить каждый реальный объект (особенно большой или сложный) одной-единственной "главной точкой". И самые продвинутые способы (1 и 2 в нашей таблице) делают это лучше всего.