added conopy

This commit is contained in:
2026-06-24 09:01:11 +03:00
parent d9c262cee2
commit 7ec7a51648
18 changed files with 652 additions and 34 deletions
+35 -2
View File
@@ -153,7 +153,7 @@ curl -s -X POST http://localhost:5603/api/v1/terrain/profile \
- `samples`: массив точек профиля.
- `ground_m`: высота DEM.
- `building_m`: высота здания над землёй.
- `canopy_m`: высота кроны, пока всегда `0`.
- `canopy_m`: высота кроны из `CANOPY_PATH`, если canopy raster доступен.
- `surface_m`: `ground_m + max(building_m, canopy_m)`.
- `path_geojson`: GeoJSON LineString.
@@ -263,6 +263,34 @@ curl -s -X POST http://localhost:5603/api/v1/terrain/los \
- `fresnel_lower_100pct_m` и `fresnel_upper_100pct_m` как полная первая зона Френеля.
- точки, где `clearance_m < required_clearance_m`, подсветить как нарушения.
### `POST /api/v1/terrain/fresnel-slice`
Возвращает горизонтальную GeoJSON-геометрию зоны Френеля и здания, которые
пересекают эту область. Endpoint нужен для визуального анализа потенциальных
отражающих объектов рядом с трассой.
```bash
curl -s -X POST http://localhost:5603/api/v1/terrain/fresnel-slice \
-H 'Content-Type: application/json' \
-d '{
"tx": {"lat": 59.935, "lon": 30.305, "height_agl": 30},
"rx": {"lat": 59.945, "lon": 30.325, "height_agl": 2},
"frequency_mhz": 433,
"fresnel_fraction": 0.6,
"include_buildings": true,
"include_canopy": true,
"samples": 128,
"building_limit": 5000
}' | jq '.fresnel_geojson.geometry.type, (.buildings_geojson.features | length)'
```
Ключевые поля:
- `path_geojson`: линия TX-RX.
- `fresnel_geojson`: Polygon/MultiPolygon горизонтального среза зоны Френеля.
- `buildings_geojson`: здания PostGIS, пересекающие `fresnel_geojson`, с `intersection_area_m2`.
- `profile`: тот же набор точек Френеля, что удобно использовать для вертикального графика.
## Buildings
### `POST /api/v1/buildings/query`
@@ -462,7 +490,11 @@ curl -s -X POST http://localhost:5603/api/v1/landcover/path \
### `POST /api/v1/viewshed`
Ставит async job в Celery. Viewshed считается через `gdal_viewshed` по DEM, результат — GeoJSON или GeoTIFF в `JOBS_OUTPUT_PATH`.
Ставит async job в Celery. Viewshed считается через `gdal_viewshed` по DEM,
результат — GeoJSON или GeoTIFF в `JOBS_OUTPUT_PATH`. `radius_m` остаётся
основным радиусом запроса, а опциональный `calc_radius_m` позволяет отдельно
задать радиус DEM-мозаики и параметр `gdal_viewshed -md`; если он не задан,
используется `radius_m`.
```bash
curl -s -X POST http://localhost:5603/api/v1/viewshed \
@@ -470,6 +502,7 @@ curl -s -X POST http://localhost:5603/api/v1/viewshed \
-d '{
"observer": {"lat": 59.935, "lon": 30.305, "height_agl": 30},
"radius_m": 15000,
"calc_radius_m": 20000,
"target_height_agl": 2,
"surface": "dsm",
"k_factor": 1.333,