22 Сравнения Гибридных и Эталонных Методов расчета гексагонов (ГИС)

Метод Форма (0.25) Размер (0.20) Интуит. (0.20) "Внутри" (0.10) "На расст." (0.10) Произв. S2 (0.05) Произв. S1 (0.03) Сложн. реал. (0.03) Объем данных (0.02) Гибк. настр. (0.02) Общий рейтинг
Форма + Размер + Соседи Плюс (M1d) 4.5 (1.125) 4 (0.800) 5 (1.000) 5 (0.500) 4.5 (0.450) 3.5 (0.175) 2.5 (0.075) 3 (0.090) 3 (0.060) 5 (0.100) 4.375
Зона + Центр с Радиусом (H1) 4 (1.000) 4.5 (0.900) 4.5 (0.900) 5 (0.500) 4.5 (0.450) 3 (0.150) 3 (0.090) 2.5 (0.075) 3.5 (0.070) 4.5 (0.090) 4.225
Форма с Акцентом на Центр + Соседи (H2) 4.5 (1.125) 4.5 (0.900) 4 (0.800) 5 (0.500) 4.5 (0.450) 3 (0.150) 2.5 (0.075) 2.5 (0.075) 3 (0.060) 4.5 (0.090) 4.225
Точная Граница Близко + Центр Далеко (H3) 4.5 (1.125) 4 (0.800) 4 (0.800) N/A (0) 4.5 (0.450) 1.5 (0.075) 2 (0.060) 1.5 (0.045) 2 (0.040) 4.5 (0.090) 3.485
Центр + Размер (M2a) 2 (0.500) 4 (0.800) 3.5 (0.700) 1 (0.100) 4.5 (0.450) 4.5 (0.225) 3.5 (0.105) 3.5 (0.105) 4.5 (0.090) 4 (0.080) 3.160

Выводы из обновленной таблицы:

  1. "Форма + Размер + Соседи Плюс" (M1d) остается лидером. Этот "чистый" (не гибридный) метод, но в своей самой полной комплектации, очень хорошо сбалансирован по всем параметрам, критичным для "точности передачи ценности". Он отлично работает с формой, позволяет учесть размер через вес базового балла Polyfill, интуитивен, явно выделяет "внутреннюю" зону и хорошо моделирует затухание на расстоянии через k-rings с настраиваемыми функциями.

  2. "Зона + Центр с Радиусом" (H1) и "Форма с Акцентом на Центр + Соседи" (H2) делят второе место.

    • H1 силен тем, что явно комбинирует бонус за нахождение "в зоне" (Polyfill) с более классическим радиальным влиянием от "центра масс" (РТ с S_пл). Это может быть очень полезно, если эти два аспекта действительно несут разную смысловую нагрузку для пользователя.

    • H2 интересен попыткой сделать Polyfill-метод более "объемным", придав разным частям Polyfill разную исходную силу влияния в зависимости от их близости к РТ. Это может быть полезно для очень больших объектов с явным "ядром активности".

  3. "Точная Граница Близко + Центр Далеко" (H3) сильно проигрывает из-за огромной вычислительной сложности (особенно S2) и сложности реализации, несмотря на потенциально высокую точность формы вблизи.

  4. "Центр + Размер" (M2a) – хороший базовый метод, если производительность и простота важнее идеальной передачи формы сложных объектов.

Детальное сравнение этих двух фаворитов: M1d ("Форма + Размер + Соседи Плюс") и гибрида H1 ("Зона + Центр с Радиусом"). Мы рассмотрим их логику, плюсы, минусы и приведем примеры расчета влияния от нескольких объектов.

Общая цель: Оценить привлекательность (или непривлекательность) целевого H3-гексагона Hex_Target на основе влияния от окружающих объектов.


Метод 1: M1d ("Форма + Размер + Соседи Плюс")


Метод 2: H1 ("Зона + Центр с Радиусом") – Гибридный


Примеры Расчета от Нескольких Объектов

Предположим, у нас есть Hex_Target и два объекта:

  1. Парк "Большой" (Obj1): Тип "парк", S_base_initial=100, большая площадь.

  2. Завод "Дымный" (Obj2): Тип "промзона", S_base_initial=-200 (отрицательное влияние), средняя площадь.

Расчет по M1d ("Форма + Размер + Соседи Плюс"):

  1. Влияние от Парка "Большой" (Obj1) на Hex_Target:

    • S_base_actual_Парк = 100 * AreaWeightFunction_парк(Площадь_Парка) (пусть = 120).

    • Допустим, Hex_Target находится в 1-м k-ring от Polyfill Парка. DecayFunction(1) = 0.7.

    • Источник в Polyfill Парка, от которого идет это кольцо, покрыт парком на 90% (percent_coverage_source = 0.9).

    • Score_Парк_на_Hex_Target = 120 * 0.9 * 0.7 = 75.6

  2. Влияние от Завода "Дымный" (Obj2) на Hex_Target:

    • S_base_actual_Завод = -200 * AreaWeightFunction_промзона(Площадь_Завода) (пусть = -220).

    • Допустим, Hex_Target напрямую покрыт Polyfill Завода на 30% (percent_coverage = 0.3).

    • Score_Завод_на_Hex_Target = -220 * 0.3 = -66

  3. Итоговый балл для Hex_Target (пока только от этих двух типов):
    Общий_Индекс_Привлекательности_M1d = Score_Парк_на_Hex_Target + Score_Завод_на_Hex_Target
    = 75.6 + (-66) = 9.6

Расчет по H1 ("Зона + Центр с Радиусом"):

  1. Влияние от Парка "Большой" (Obj1) на Hex_Target:

    • Polyfill-часть:

      • S_base_actual_Парк_Polyfill = 100 * AreaWeightFunction_парк_polyfill(Площадь_Парка) (пусть = 110).

      • Hex_Target в 1-м k-ring, DecayFunction(1)=0.7, percent_coverage_source=0.9.

      • Score_H1_Парк_Polyfill = 110 * 0.9 * 0.7 = 69.3

    • РТ-часть:

      • S_base_actual_Парк_РТ = (другой базовый балл, например, 50) * AreaWeightFunction_парк_РТ(Площадь_Парка) (пусть = 60).

      • Radius_Парк_РТ = 2000м. Distance_to_РТ_Парк = 1500м.

      • Factor_distance_РТ_Парк = 1 - (1500/2000) = 0.25.

      • Score_H1_Парк_РТ = 60 * 0.25 = 15

    • TotalScore_Парк_на_Hex_Target = 69.3 + 15 = 84.3

  2. Влияние от Завода "Дымный" (Obj2) на Hex_Target:

    • Polyfill-часть:

      • S_base_actual_Завод_Polyfill = -200 * AreaWeightFunction_промзона_polyfill(Площадь_Завода) (пусть = -210).

      • Hex_Target покрыт на 30%.

      • Score_H1_Завод_Polyfill = -210 * 0.3 = -63

    • РТ-часть:

      • S_base_actual_Завод_РТ = (другой баз. балл, например, -80) * AreaWeightFunction_промзона_РТ(Площадь_Завода) (пусть = -90).

      • Radius_Завод_РТ = 3000м. Distance_to_РТ_Завод = 500м.

      • Factor_distance_РТ_Завод = 1 - (500/3000) = 1 - 0.167 = 0.833.

      • Score_H1_Завод_РТ = -90 * 0.833 = -74.97

    • TotalScore_Завод_на_Hex_Target = -63 + (-74.97) = -137.97

  3. Итоговый балл для Hex_Target (по H1):
    Общий_Индекс_Привлекательности_H1 = TotalScore_Парк_на_Hex_Target + TotalScore_Завод_на_Hex_Target
    = 84.3 + (-137.97) = -53.67

Сравнение результатов примера:

В этом гипотетическом примере H1 дал более сильное отрицательное влияние от завода и чуть более сильное положительное от парка. Это потому, что мы ввели отдельные параметры для Polyfill и РТ компонент, и РТ-компонента завода оказалась очень близко и с большим радиусом.

Выводы из детального сравнения:

Если ваша цель – максимально точно передать, как форма и распределенное присутствие объекта влияют на окружение, M1d является очень сильным выбором.
Если же вы видите сценарии, где важно отделить бонус за "нахождение в особой зоне объекта" от более общего, дальнодействующего влияния его "центра масс/значимости", то H1 стоит рассмотреть, но с очень внимательной настройкой параметров и правил комбинации его компонент.

Разновидности M1d ("Форма + Размер + Соседи Плюс")

Основная структура M1d: Polyfill + %покрытия + S_площади_OSM + Затухание по k-rings.
Вариации возникают из-за выбора функций и параметров на каждом этапе:

  1. Способ определения Polyfill и %покрытия:

    • V1.1: Бинарный Polyfill: Ячейка либо внутри (100% считается), либо снаружи. %покрытия не используется или всегда 100% для "внутренних". (Это ближе к M1a/M1b без точного %покрытия).

    • V1.2: Точный Polyfill с %покрытия: Рассчитывается реальный процент пересечения геометрии объекта с каждой H3-ячейкой. Это предпочтительный вариант для M1d.

  2. Функция взвешивания по площади OSM (AreaWeightFunction):

    • V2.1: Без взвешивания по площади: AreaWeightFunction = 1. (Ближе к M1b).

    • V2.2: Линейная (с нормировкой): k * (Area_OSM / Typical_Area_Unit). Требует аккуратной калибровки k и Typical_Area_Unit.

    • V2.3: Логарифмическая: log(1 + Area_OSM / Unit_Area). Сглаживает влияние очень больших площадей. Часто хороший выбор.

    • V2.4: Категориальная/Ступенчатая: "Маленький" (коэф. 0.8), "Средний" (коэф. 1.0), "Большой" (коэф. 1.2).

    • V2.5: Степенная: (Area_OSM / Unit_Area) ^ p, где p < 1 (например, 0.5 для квадратного корня).

  3. Функция затухания для k-rings (DecayFunction(k)):

    • V3.1: Ступенчатая по коэффициентам: Набор фиксированных множителей для каждого кольца (k=1 -> 0.7; k=2 -> 0.4; k=3 -> 0.1).

    • V3.2: Экспоненциальная: exp(-alpha * k). alpha > 0. Плавное затухание.

    • V3.3: Обратно-пропорциональная (или ее варианты): 1 / (1 + alpha * k) или 1 / (k^p).

    • V3.4: Гауссова (Колоколообразная): Влияние сначала может даже чуть нарастать (для k=1, если объект очень большой, а ячейки H3 мелкие), а потом спадать. Редко используется для простого затухания.

    • V3.5: Линейное затухание до Max_k_rings: 1 - (k / Max_k_rings).

  4. Максимальное количество колец (Max_k_rings):

    • V4.1: Фиксированное для всех типов объектов.

    • V4.2: Разное для разных типов объектов (например, парк влияет дальше, чем маленький магазин).

    • V4.3: Динамическое, зависящее, например, от S_base_actual (более "сильные" объекты влияют дальше).

  5. Способ агрегации влияния от разных частей Polyfill (для ячеек в k-rings):

    • V5.1: Максимальное влияние: Если ячейка попадает в k-ring от нескольких исходных ячеек Polyfill, берется максимальное из рассчитанных влияний. Это самый распространенный и логичный подход.

    • V5.2: Суммирование (с осторожностью): Можно суммировать, но есть риск "двойного счета" и завышения, если k-rings от разных частей объекта сильно пересекаются. Потребует нормировки.

    • V5.3: Среднее или взвешенное среднее: Менее интуитивно.

Итого разновидностей M1d: Если перемножить основные варианты (24421 = 128), получим очень много комбинаций. На практике выбирают 1-2 варианта для каждой функции и настраивают их параметры. Ключевых "разных по духу" вариаций M1d можно выделить 5-10.


Разновидности H1 ("Зона + Центр с Радиусом")

Основная структура H1: Компонент M1d-подобный (Polyfill) + Компонент M2a-подобный (РТ).
Вариации возникают из-за:

  1. Вариации Polyfill-компоненты: (аналогичны V1-V5 для M1d)

    • S_base_initial_polyfill, AreaWeightFunction_polyfill, DecayFunction_k_polyfill, Max_k_rings_polyfill, %покр_polyfill.
  2. Вариации РТ-компоненты:

    • V6.1: Тип Репрезентативной Точки (РТ):

      • Центроид геометрии OSM.

      • Representative_point() геометрии OSM.

      • Центр масс H3 Polyfill (центр всех ячеек Polyfill, взвешенных по %покр).

    • V6.2: Функция взвешивания по площади OSM для РТ (AreaWeightFunction_РТ): (аналогичны V2.2-V2.5)

    • V6.3: Функция затухания от РТ (если не простая линейная до Radius_РТ):

      • Линейная: 1 - (Distance / Radius_РТ).

      • Экспоненциальная: exp(-beta * Distance).

      • Обратно-пропорциональная расстоянию и т.д.

    • V6.4: Определение Radius_РТ:

      • Фиксированный для типа объекта.

      • Зависит от площади OSM-объекта.

  3. Способ комбинации Score_Polyfill и Score_РТ:

    • V7.1: Простое суммирование: TotalScore = Score_Polyfill + Score_РТ.

    • V7.2: Максимум: TotalScore = max(Score_Polyfill, Score_РТ). (Менее "гибридный", скорее выбор лучшего).

    • V7.3: Взвешенное суммирование: TotalScore = w1 * Score_Polyfill + w2 * Score_РТ. Коэффициенты w1, w2 могут зависеть от типа объекта или расстояния.

    • V7.4: Условное суммирование/замещение:

      • Если Hex_Target внутри Polyfill: TotalScore = Score_Polyfill_внутри (РТ-компонента игнорируется или добавляется с малым весом).

      • Если Hex_Target вне Polyfill: TotalScore = Score_Polyfill_k_ring + Score_РТ (или только Score_РТ, если k-rings закончились).

    • V7.5: Мультипликативная комбинация (с осторожностью): Если баллы нормированы (0-1), можно перемножать, но интерпретация сложнее.

    • V7.6: Нелинейная функция от обоих скоров: f(Score_Polyfill, Score_РТ). Наиболее сложный, но гибкий вариант.

Итого разновидностей H1: Здесь количество комбинаций еще больше, так как мы умножаем варианты M1d-части на варианты РТ-части и на варианты их комбинации. Ключевых "разных по духу" вариаций H1 можно выделить 10-20, в зависимости от того, на какой аспект делается упор (доминирует Polyfill, доминирует РТ, или они равноправны и по-разному взаимодействуют).

Ключевые "оси" вариативности для обоих методов:

Выбор конкретной разновидности будет зависеть от:

Детально по каждому пункту настройки метода M1d ("Форма + Размер + Соседи Плюс") и дадим рекомендации. Цель – получить максимально полезную и интуитивно понятную карту.

1. Способ определения Polyfill и %покрытия:

2. Функция взвешивания по площади OSM (AreaWeightFunction):

3. Функция затухания для k-rings (DecayFunction(k)):

4. Максимальное количество колец (Max_k_rings):

5. Способ агрегации влияния от разных частей Polyfill (для ячеек в k-rings):

Итоговый рекомендуемый "джентльменский набор" для M1d:

  1. Polyfill и %покрытия: V1.2 (Точный Polyfill с %покрытия).

  2. Взвешивание по площади OSM: V2.3 (Логарифмическая функция).

  3. Затухание для k-rings: Начать с V3.1 (Ступенчатая), стремиться к V3.2 (Экспоненциальная) или V3.3 (Обратно-пропорциональная).

  4. Макс. кол-во колец: V4.2 (Разное для разных типов объектов).

  5. Агрегация влияния от Polyfill: V5.1 (Максимальное влияние).

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