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 |
Выводы из обновленной таблицы:
-
"Форма + Размер + Соседи Плюс" (M1d) остается лидером. Этот "чистый" (не гибридный) метод, но в своей самой полной комплектации, очень хорошо сбалансирован по всем параметрам, критичным для "точности передачи ценности". Он отлично работает с формой, позволяет учесть размер через вес базового балла Polyfill, интуитивен, явно выделяет "внутреннюю" зону и хорошо моделирует затухание на расстоянии через k-rings с настраиваемыми функциями.
-
"Зона + Центр с Радиусом" (H1) и "Форма с Акцентом на Центр + Соседи" (H2) делят второе место.
-
H1 силен тем, что явно комбинирует бонус за нахождение "в зоне" (Polyfill) с более классическим радиальным влиянием от "центра масс" (РТ с S_пл). Это может быть очень полезно, если эти два аспекта действительно несут разную смысловую нагрузку для пользователя.
-
H2 интересен попыткой сделать Polyfill-метод более "объемным", придав разным частям Polyfill разную исходную силу влияния в зависимости от их близости к РТ. Это может быть полезно для очень больших объектов с явным "ядром активности".
-
-
"Точная Граница Близко + Центр Далеко" (H3) сильно проигрывает из-за огромной вычислительной сложности (особенно S2) и сложности реализации, несмотря на потенциально высокую точность формы вблизи.
-
"Центр + Размер" (M2a) – хороший базовый метод, если производительность и простота важнее идеальной передачи формы сложных объектов.
Детальное сравнение этих двух фаворитов: M1d ("Форма + Размер + Соседи Плюс") и гибрида H1 ("Зона + Центр с Радиусом"). Мы рассмотрим их логику, плюсы, минусы и приведем примеры расчета влияния от нескольких объектов.
Общая цель: Оценить привлекательность (или непривлекательность) целевого H3-гексагона Hex_Target на основе влияния от окружающих объектов.
Метод 1: M1d ("Форма + Размер + Соседи Плюс")
-
Полное название: H3 Polyfill объекта + Учет % покрытия H3-ячейки + Взвешивание базового балла по общей площади OSM-объекта + Настраиваемые функции затухания для k-rings.
-
Концепция "по-простому":
-
"Очерчиваем" объект (например, парк) на карте из шестиугольников (H3 Polyfill).
-
Определяем, насколько "сильно" объект представлен в каждом из этих очерченных шестиугольников (учет % покрытия).
-
Общую "важность" объекта (например, большой парк важнее маленького) учитываем, корректируя его базовую силу влияния (взвешивание по площади OSM).
-
От всех "очерченных" шестиугольников пускаем "волны" влияния на соседей, причем сила этих волн и то, как они затухают, настраивается (функции затухания для k-rings).
-
-
Детальная логика расчета для одного объекта Obj на Hex_Target:
-
Подготовка данных для Obj (в Скрипте 1):
-
Obj_Geometry: Полная геометрия объекта из OSM.
-
Obj_Area_OSM: Реальная площадь объекта Obj_Geometry.
-
Obj_H3_Polyfill_Cells: Словарь, где ключ – H3 ID ячейки, покрытой объектом, значение – процент покрытия этой H3-ячейки объектом (%покр).
-
-
Определение параметров влияния для типа объекта Obj:
-
S_base_initial: Изначальный базовый балл для данного типа объекта.
-
DecayFunction(k): Функция, определяющая множитель затухания для k-го кольца соседей (например, 0.7^k или более сложная).
-
Max_k_rings: Максимальное количество колец, на которое распространяется влияние.
-
AreaWeightFunction(Area_OSM): Функция, корректирующая S_base_initial на основе площади объекта (например, log(1 + Area_OSM / typical_unit_area)).
-
-
Расчет влияния (в Скрипте 2):
-
S_base_actual = S_base_initial * AreaWeightFunction(Obj_Area_OSM) – актуальный базовый балл для конкретного объекта Obj.
-
Score_M1d = 0
-
Прямое влияние (если Hex_Target покрыт объектом):
Если Hex_Target есть в Obj_H3_Polyfill_Cells:
percent_coverage = Obj_H3_Polyfill_Cells[Hex_Target]
Score_M1d = S_base_actual * percent_coverage -
Влияние от соседей (если Hex_Target НЕ покрыт напрямую, но находится в k-ring):
Для каждого k от 1 до Max_k_rings:
Найти все ячейки h_source из Obj_H3_Polyfill_Cells, для которых Hex_Target находится в их k-ом кольце соседей (и не в меньших кольцах от других h_source).
Для каждой такой h_source:
percent_coverage_source = Obj_H3_Polyfill_Cells[h_source]
potential_score_from_h_source = S_base_actual * percent_coverage_source * DecayFunction(k)
Score_M1d = max(Score_M1d, potential_score_from_h_source) (берем максимальное влияние, если Hex_Target попадает в кольца от разных частей одного объекта).
-
-
-
Плюсы M1d:
-
Очень хорошо передает форму и распределенное присутствие объекта.
-
Учитывает размер объекта через вес базового балла.
-
Четко определяет "внутреннее" влияние с учетом степени покрытия.
-
Гибкая настройка затухания влияния на расстоянии.
-
Высокая интуитивность для пользователя.
-
-
Минусы M1d:
-
Сложнее в реализации, чем точечные методы.
-
Расчет k-rings и агрегация максимумов может быть вычислительно интенсивной для очень больших объектов с большим Max_k_rings.
-
Поле влияния "ступенчатое" по кольцам H3.
-
Метод 2: H1 ("Зона + Центр с Радиусом") – Гибридный
-
Концепция "по-простому":
-
Сначала, как в M1d, "очерчиваем" объект (парк) и смотрим, насколько наш целевой шестиугольник "внутри" него (бонус за "зону").
-
Параллельно с этим, находим "главный центр" нашего парка (репрезентативную точку) и учитываем его общую площадь. От этого "центра" идет обычное радиальное влияние, как от маяка, которое ослабевает с расстоянием.
-
Итоговый балл – это сумма бонуса за "зону" (если есть) и влияния от "центра-маяка".
-
-
Детальная логика расчета для одного объекта Obj на Hex_Target:
-
Подготовка данных для Obj (в Скрипте 1):
-
Все то же, что для M1d: Obj_Geometry, Obj_Area_OSM, Obj_H3_Polyfill_Cells.
-
Дополнительно: Obj_Representative_Point (РТ): Координаты (lat_РТ, lon_РТ).
-
-
Определение параметров влияния для типа объекта Obj:
-
Как для M1d: S_base_initial_polyfill, DecayFunction(k), Max_k_rings_polyfill, AreaWeightFunction_polyfill(Area_OSM).
-
Дополнительно для РТ-компоненты:
-
S_base_initial_РТ: Изначальный базовый балл для РТ-компоненты.
-
Radius_РТ: Радиус влияния от РТ.
-
AreaWeightFunction_РТ(Area_OSM): Функция веса по площади для РТ-компоненты.
-
-
-
Расчет влияния (в Скрипте 2):
-
Часть 1: Влияние от Polyfill/k-rings (как в M1d, назовем Score_H1_Polyfill)
Рассчитывается аналогично Score_M1d с использованием S_base_initial_polyfill, AreaWeightFunction_polyfill, DecayFunction(k) и Max_k_rings_polyfill. -
Часть 2: Влияние от Репрезентативной Точки (назовем Score_H1_РТ)
S_base_actual_РТ = S_base_initial_РТ * AreaWeightFunction_РТ(Obj_Area_OSM)
Distance_to_РТ = Расстояние(Hex_Target, Obj_Representative_Point)
Score_H1_РТ = 0
Если Distance_to_РТ <= Radius_РТ:
Factor_distance_РТ = 1.0 - (Distance_to_РТ / Radius_РТ)
Score_H1_РТ = S_base_actual_РТ * Factor_distance_РТ -
Часть 3: Комбинирование
TotalScore_H1 = Score_H1_Polyfill + Score_H1_РТ
(Можно рассмотреть другие функции комбинации, например, если объект маленький, то РТ-компонента может иметь меньший вес, или если Score_H1_Polyfill уже высокий (внутри объекта), то добавка от Score_H1_РТ может быть меньше, чтобы избежать двойного счета за одно и то же качество).
-
-
-
Плюсы H1:
-
Сочетает четкое определение "внутренней зоны" и влияния от формы (через Polyfill) с более дальнодействующим и плавным влиянием от "центра масс" (РТ).
-
Может быть полезен для объектов, где важно и непосредственное нахождение в зоне/близость к границе, и общее "присутствие" объекта в регионе.
-
Позволяет более гибко настроить разные аспекты влияния.
-
-
Минусы H1:
-
Сложнее в настройке (больше параметров).
-
Нужно тщательно продумать, как комбинируются Score_H1_Polyfill и Score_H1_РТ, чтобы это было логично и не приводило к искусственному завышению или странным артефактам. Простое суммирование – самый очевидный, но не всегда лучший вариант.
-
Точность формы для дальнодействующего влияния все еще ограничена одной РТ.
-
Примеры Расчета от Нескольких Объектов
Предположим, у нас есть Hex_Target и два объекта:
-
Парк "Большой" (Obj1): Тип "парк", S_base_initial=100, большая площадь.
-
Завод "Дымный" (Obj2): Тип "промзона", S_base_initial=-200 (отрицательное влияние), средняя площадь.
Расчет по M1d ("Форма + Размер + Соседи Плюс"):
-
Влияние от Парка "Большой" (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
-
-
Влияние от Завода "Дымный" (Obj2) на Hex_Target:
-
S_base_actual_Завод = -200 * AreaWeightFunction_промзона(Площадь_Завода) (пусть = -220).
-
Допустим, Hex_Target напрямую покрыт Polyfill Завода на 30% (percent_coverage = 0.3).
-
Score_Завод_на_Hex_Target = -220 * 0.3 = -66
-
-
Итоговый балл для Hex_Target (пока только от этих двух типов):
Общий_Индекс_Привлекательности_M1d = Score_Парк_на_Hex_Target + Score_Завод_на_Hex_Target
= 75.6 + (-66) = 9.6
Расчет по H1 ("Зона + Центр с Радиусом"):
-
Влияние от Парка "Большой" (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
-
-
Влияние от Завода "Дымный" (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
-
-
Итоговый балл для Hex_Target (по H1):
Общий_Индекс_Привлекательности_H1 = TotalScore_Парк_на_Hex_Target + TotalScore_Завод_на_Hex_Target
= 84.3 + (-137.97) = -53.67
Сравнение результатов примера:
В этом гипотетическом примере H1 дал более сильное отрицательное влияние от завода и чуть более сильное положительное от парка. Это потому, что мы ввели отдельные параметры для Polyfill и РТ компонент, и РТ-компонента завода оказалась очень близко и с большим радиусом.
Выводы из детального сравнения:
-
M1d – более "цельный" подход. Вся логика влияния объекта (форма, размер, расстояние) зашита в единый механизм Polyfill + k-rings + веса. Это может быть проще для понимания и настройки как единой системы.
-
H1 – более "модульный". Он позволяет разделить влияние на "локальное/форменное" (Polyfill) и "региональное/массовое" (РТ). Это дает больше рычагов для настройки, но и требует большего понимания, как эти компоненты взаимодействуют. Суммирование – простейший способ, но могут понадобиться более хитрые правила комбинации, чтобы избежать нежелательных эффектов (например, если РТ объекта находится вне его Polyfill, но близко к нему).
Если ваша цель – максимально точно передать, как форма и распределенное присутствие объекта влияют на окружение, M1d является очень сильным выбором.
Если же вы видите сценарии, где важно отделить бонус за "нахождение в особой зоне объекта" от более общего, дальнодействующего влияния его "центра масс/значимости", то H1 стоит рассмотреть, но с очень внимательной настройкой параметров и правил комбинации его компонент.
Разновидности M1d ("Форма + Размер + Соседи Плюс")
Основная структура M1d: Polyfill + %покрытия + S_площади_OSM + Затухание по k-rings.
Вариации возникают из-за выбора функций и параметров на каждом этапе:
-
Способ определения Polyfill и %покрытия:
-
V1.1: Бинарный Polyfill: Ячейка либо внутри (100% считается), либо снаружи. %покрытия не используется или всегда 100% для "внутренних". (Это ближе к M1a/M1b без точного %покрытия).
-
V1.2: Точный Polyfill с %покрытия: Рассчитывается реальный процент пересечения геометрии объекта с каждой H3-ячейкой. Это предпочтительный вариант для M1d.
-
-
Функция взвешивания по площади 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 для квадратного корня).
-
-
Функция затухания для 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).
-
-
Максимальное количество колец (Max_k_rings):
-
V4.1: Фиксированное для всех типов объектов.
-
V4.2: Разное для разных типов объектов (например, парк влияет дальше, чем маленький магазин).
-
V4.3: Динамическое, зависящее, например, от S_base_actual (более "сильные" объекты влияют дальше).
-
-
Способ агрегации влияния от разных частей 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-подобный (РТ).
Вариации возникают из-за:
-
Всех вариаций, присущих его M1d-компоненте (см. выше).
-
Всех вариаций, присущих его РТ-компоненте.
-
Способа комбинации этих двух компонент.
-
Вариации Polyfill-компоненты: (аналогичны V1-V5 для M1d)
- S_base_initial_polyfill, AreaWeightFunction_polyfill, DecayFunction_k_polyfill, Max_k_rings_polyfill, %покр_polyfill.
-
Вариации РТ-компоненты:
-
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-объекта.
-
-
-
Способ комбинации 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, доминирует РТ, или они равноправны и по-разному взаимодействуют).
Ключевые "оси" вариативности для обоих методов:
-
Как точно представляем исходный объект OSM? (%покр, тип РТ, учет площади OSM).
-
Как моделируем затухание влияния с расстоянием? (Тип функции затухания, максимальный радиус/число колец).
-
Как разные источники влияния (части одного объекта или разные компоненты гибрида) агрегируются для итоговой оценки? (max, sum, weighted sum).
Выбор конкретной разновидности будет зависеть от:
-
Специфики анализируемых объектов.
-
Доступных вычислительных ресурсов.
-
Желаемого уровня детализации и интуитивности карты для конечного пользователя.
-
Времени, которое вы готовы потратить на реализацию и калибровку параметров.
Детально по каждому пункту настройки метода M1d ("Форма + Размер + Соседи Плюс") и дадим рекомендации. Цель – получить максимально полезную и интуитивно понятную карту.
1. Способ определения Polyfill и %покрытия:
-
V1.1: Бинарный Polyfill.
-
V1.2: Точный Polyfill с %покрытия.
Рекомендация: V1.2 (Точный Polyfill с %покрытия)
-
Обоснование: Это значительно повышает точность на границах объекта. Представьте H3-ячейку (наш шестиугольник ~150м), которую парк "зацепил" лишь маленьким уголком (например, 10% ее площади). Если мы используем бинарный подход (V1.1), эта ячейка получит такой же полный стартовый балл влияния, как и ячейка, полностью находящаяся внутри парка. Это нелогично и может искажать картину, особенно для объектов с извилистыми границами или если разрешение H3 не идеально соответствует масштабу объектов.
-
Учет процента покрытия (%покр) делает влияние "внутренних" ячеек более пропорциональным реальному присутствию объекта в них. Это основа для более справедливого распространения влияния на соседей.
-
Сложность: Да, это чуть сложнее в реализации на этапе подготовки данных (нужно считать площади пересечений). Но библиотеки типа shapely и функции для работы с H3 могут помочь. Выигрыш в качестве карты оправдывает усилия.
-
2. Функция взвешивания по площади OSM (AreaWeightFunction):
-
V2.1: Без взвешивания.
-
V2.2: Линейная.
-
V2.3: Логарифмическая: log(1 + Area_OSM / Unit_Area).
-
V2.4: Категориальная/Ступенчатая.
-
V2.5: Степенная.
Рекомендация: V2.3 (Логарифмическая)
-
Обоснование:
-
Почему не V2.1 (Без взвешивания): Мы уже решили, что размер объекта важен. Парк площадью 100 га и сквер 0.5 га должны иметь разную "силу".
-
Почему не V2.2 (Линейная): Очень чувствительна к экстремальным значениям. Если у вас есть один объект с площадью в 1000 раз больше типичной, его влияние станет доминирующим и "забьет" все остальные. Требует тщательной нормировки и подбора Typical_Area_Unit.
-
Почему не V2.4 (Категориальная): Слишком грубо. Переход из категории "средний" в "большой" даст резкий скачок влияния, а два объекта, незначительно отличающиеся по площади, но попавшие в разные категории, будут оценены по-разному.
-
Почему не V2.5 (Степенная): Может быть хорошим вариантом, особенно с p=0.5 (квадратный корень), что тоже сглаживает большие значения, но логарифм обычно более интуитивен и чаще используется для таких задач масштабирования.
-
Преимущества V2.3 (Логарифмическая):
-
Сглаживание: Хорошо справляется с большим разбросом площадей. Разница между 1 га и 10 га будет существенной, но разница между 1000 га и 1010 га будет уже не такой заметной в итоговом коэффициенте. Это часто соответствует реальности (до определенного момента увеличение площади дает большой прирост "ценности", потом эффект насыщается).
-
Интерпретируемость: Unit_Area можно выбрать как некую "типичную" или "минимально значимую" площадь для данного типа объектов. Добавление +1 под логарифмом предотвращает log(0).
-
Гибкость: Основание логарифма (натуральный ln, десятичный log10 или log2) и Unit_Area позволяют настраивать крутизну роста коэффициента.
-
-
-
3. Функция затухания для k-rings (DecayFunction(k)):
-
V3.1: Ступенчатая по коэффициентам.
-
V3.2: Экспоненциальная: exp(-alpha * k).
-
V3.3: Обратно-пропорциональная (или ее варианты): 1 / (1 + alpha * k) или 1 / (k^p).
-
V3.4: Гауссова.
-
V3.5: Линейное затухание до Max_k_rings.
Рекомендация: Начать с V3.1 (Ступенчатая), затем перейти к V3.2 (Экспоненциальная) или V3.3 (Обратно-пропорциональная) для большей плавности.
-
Обоснование:
-
V3.1 (Ступенчатая): Самая простая для понимания и реализации. Легко объяснить: "соседи первого порядка получают 70% от базового влияния, второго – 40% и т.д.". Позволяет очень явно контролировать влияние на каждом "шаге".
-
V3.5 (Линейная до Max_k_rings): Тоже простая и понятная. Но может слишком резко обрывать влияние на Max_k_rings.
-
V3.2 (Экспоненциальная) и V3.3 (Обратно-пропорциональная): Эти функции дают более плавное и, возможно, более реалистичное затухание. Они требуют подбора одного-двух параметров (alpha, p). Экспонента дает более быстрое начальное падение, обратно-пропорциональная – более медленное. Выбор между ними зависит от того, какой характер затухания вы считаете более подходящим для большинства ваших объектов.
-
Почему не V3.4 (Гауссова): Обычно используется для других целей (например, когда пик влияния не в центре). Для простого затухания она избыточна.
-
-
Практический совет: Начните с V3.1, чтобы быстро получить работающую модель. Затем, для улучшения качества карты, попробуйте подобрать параметры для V3.2 или V3.3, которые дадут схожее с V3.1 поведение на первых нескольких кольцах, но более гладкое затухание дальше.
-
4. Максимальное количество колец (Max_k_rings):
-
V4.1: Фиксированное для всех.
-
V4.2: Разное для разных типов объектов.
-
V4.3: Динамическое.
Рекомендация: V4.2 (Разное для разных типов объектов)
-
Обоснование:
-
Почему не V4.1 (Фиксированное): Влияние огромного национального парка и маленькой районной библиотеки очевидно распространяется на разные расстояния. Устанавливать единый Max_k_rings для всех – значит либо обрезать влияние крупных объектов, либо неоправданно растягивать влияние мелких.
-
Почему не V4.3 (Динамическое): Хотя это звучит привлекательно (сильнее объект – дальше влияет), это может сильно усложнить модель и ее интерпретацию. Также, как именно "сила" (S_base_actual) должна транслироваться в количество колец – не всегда очевидно. Может привести к тому, что очень "сильные" точечные объекты начнут влиять на огромные территории, что не всегда нужно.
-
Преимущества V4.2 (Разное для типов): Это логичный компромисс. Вы на основе экспертных знаний или анализа данных решаете, что для "Парков" максимальный радиус влияния – это, скажем, 5 колец H3 (750м), а для "Кафе" – 2 кольца (300м). Это делает модель более реалистичной и управляемой.
-
-
5. Способ агрегации влияния от разных частей Polyfill (для ячеек в k-rings):
-
V5.1: Максимальное влияние.
-
V5.2: Суммирование (с осторожностью).
-
V5.3: Среднее или взвешенное среднее.
Рекомендация: V5.1 (Максимальное влияние)
-
Обоснование: Если ваш целевой шестиугольник находится рядом с парком, его привлекательность определяется ближайшей к нему частью парка или той частью парка, которая оказывает наиболее сильное воздействие (например, если разные части парка имеют разную "интенсивность" из-за %покр).
-
Почему не V5.2 (Суммирование): Представьте длинный парк, и ваш шестиугольник находится так, что он попадает в k-ring 1 одновременно от трех разных "кусочков" этого парка. Если вы просто сложите влияние от этих трех кусочков, вы искусственно завысите итоговый балл, как будто это три разных парка влияют. Это приведет к тому, что центры больших объектов или точки на "стыках" влияния от разных частей одного объекта будут получать непропорционально высокие баллы.
-
Почему не V5.3 (Среднее): Усреднение может "размыть" пики влияния. Если одна часть парка очень привлекательна и близка, а другая – менее привлекательна и дальше (но все еще в том же k-ring), среднее значение не отразит наилучшую возможность.
-
V5.1 (Максимальное): Интуитивно понятно – вас интересует наиболее выгодное или сильное влияние, которое вы можете получить от данного объекта.
-
Итоговый рекомендуемый "джентльменский набор" для M1d:
-
Polyfill и %покрытия: V1.2 (Точный Polyfill с %покрытия).
-
Взвешивание по площади OSM: V2.3 (Логарифмическая функция).
-
Затухание для k-rings: Начать с V3.1 (Ступенчатая), стремиться к V3.2 (Экспоненциальная) или V3.3 (Обратно-пропорциональная).
-
Макс. кол-во колец: V4.2 (Разное для разных типов объектов).
-
Агрегация влияния от Polyfill: V5.1 (Максимальное влияние).
Эта конфигурация обеспечивает хороший баланс между точностью, реалистичностью, гибкостью и сложностью реализации. Она позволит создать карту, которая действительно будет полезна и понятна людям.