added formulas
This commit is contained in:
+32
-2
@@ -472,11 +472,24 @@ EIRP = P_{tx} + G_{ant}(azimuth, 0^\circ)
|
||||
$$
|
||||
|
||||
$$
|
||||
P_{rx} = EIRP - L_{path} - L_{veg} + G_{rx}
|
||||
P_{rx} = EIRP - L_{path} - L_{veg} - L_{surface} + G_{rx}
|
||||
$$
|
||||
|
||||
`L_path` выбирается по `model`: FSPL, ITM или p1812-like.
|
||||
|
||||
Surface obstruction (`L_surface`) считается через Bullington/P.526 по профилю
|
||||
`ground + max(building, canopy)`:
|
||||
|
||||
- для `fspl`: добавляется полный Bullington loss по surface profile;
|
||||
- для `itm` и `p1812`: добавляется только excess от buildings/canopy поверх
|
||||
terrain-only профиля:
|
||||
|
||||
$$
|
||||
L_{surface} = \max(0,\ L_{surface\_profile} - L_{terrain\_profile})
|
||||
$$
|
||||
|
||||
Это снижает риск двойного учёта terrain diffraction, уже входящей в ITM/p1812-like path loss.
|
||||
|
||||
Алгоритм контура:
|
||||
|
||||
1. Для каждого азимута от 0 до 360 градусов.
|
||||
@@ -484,6 +497,23 @@ $$
|
||||
3. Пока $P_{rx} \ge level\_dbm$, точка считается покрытой.
|
||||
4. Последняя покрытая точка образует радиальный контур.
|
||||
|
||||
Raster export:
|
||||
|
||||
1. Вокруг TX строится UTM-сетка с пикселем `range_step_m`.
|
||||
2. Размер bbox: $2R \times 2R$, где $R = radius_m$.
|
||||
3. Для центра каждой ячейки считается расстояние и азимут от TX.
|
||||
4. Если расстояние больше `radius_m`, пишется NoData `-9999`.
|
||||
5. Иначе в ячейку пишется $P_{rx}$ в дБм.
|
||||
|
||||
GeoTIFF хранит float32 `rx_power_dbm` с CRS/transform. PNG хранит 8-bit preview,
|
||||
масштабированный по min/max конечных значений:
|
||||
|
||||
$$
|
||||
png = 1 + \frac{P_{rx} - P_{min}}{P_{max} - P_{min}} \cdot 254
|
||||
$$
|
||||
|
||||
Нулевое значение PNG зарезервировано под NoData.
|
||||
|
||||
API: `/coverage` → Celery job → `/jobs/{id}`.
|
||||
|
||||
## 14. Viewshed
|
||||
@@ -563,7 +593,7 @@ API: `/buildings/query`, косвенно terrain/link.
|
||||
4. P.452, ITM и P.676 делегированы внешним библиотекам.
|
||||
5. `deygout()` оставлен для совместимости, но новый код использует явное `bullington_equivalent_loss()`.
|
||||
6. `link_viable` зависит только от `fade_margin_db > 0`, не от качества Френеля.
|
||||
7. Coverage строится радиальными контурами, не полноценной 2D-сеткой.
|
||||
7. Coverage с buildings/canopy требует surface profile на лучах/ячейках и может быть дорогим на мелком `range_step_m`.
|
||||
8. Viewshed не использует `k_factor`.
|
||||
9. `diffraction_db` в `/link/budget` оставлен для обратной совместимости; для новой интеграции лучше читать `propagation_excess_db` и `knife_edge_diffraction_db`.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user