FloodGenerationTask
extends AirlayTask
in package
Table of Contents
- EARTH_RADIUS = 6371000
- HEIGHT_ERROR = 0.5
- RADIUS = 5000
- $dbscan : DBSCAN
- $flags : Flags
- $floodDataSet : DataSetEntity|null
- $floodDataSetId : string|null
- $gaugesDataSetId : string|null
- $precision : int
- $radius : int
- $riversCollection : FeaturesCollection|null
- $withRivers : bool
- generateAction() : void
- Генерация полигонов разлива по реке Алгоритм 1: 1. Ищем сегменты реки в радиусе R от датчика.
- initialize() : void
- mainAction() : void
- abortWorkWithMessage() : never
- getDataSetTitle() : string
- parseFlagsFromParams() : void
- Parse command line arguments from array. Output default values if --help or -h argument specified.
- requestConfirm() : bool
- buildFloodPolygon() : GeosObject|null
- buildHeightGrid() : array<string|int, mixed>
- filterHighPoints() : array<string|int, mixed>
- findProjection() : string|null
- findRiverSegments() : array<string|int, GeosObject>
- fixPolygonsIntersections() : GeosObject
- generateFloodPolygon() : array<string|int, mixed>
- getCenters() : array<string|int, mixed>
- getHeight() : array<string|int, mixed>
- getRiverCentersHeights() : array<string|int, mixed>
- getRiversCenters() : array<string|int, mixed>
- interpolateRiver() : array<string|int, GeosObject>
- linspace() : array<string|int, mixed>
- meshgrid() : array<string|int, mixed>
- offsetCoordinates() : Geometry
- validateDataSet() : void
Constants
EARTH_RADIUS
private
mixed
EARTH_RADIUS
= 6371000
HEIGHT_ERROR
private
mixed
HEIGHT_ERROR
= 0.5
RADIUS
private
mixed
RADIUS
= 5000
Properties
$dbscan
private
DBSCAN
$dbscan
$flags
private
Flags
$flags
$floodDataSet
private
DataSetEntity|null
$floodDataSet
$floodDataSetId
private
string|null
$floodDataSetId
$gaugesDataSetId
private
string|null
$gaugesDataSetId
$precision
private
int
$precision
$radius
private
int
$radius
$riversCollection
private
FeaturesCollection|null
$riversCollection
$withRivers
private
bool
$withRivers
= \false
Methods
generateAction()
Генерация полигонов разлива по реке Алгоритм 1: 1. Ищем сегменты реки в радиусе R от датчика.
public
generateAction() : void
- Если сегменты найдены, они инерполируются с шагов равным радиусом и полученные точки считаются центрами, иначе как "Центр" используется датчик
- Строим в области от "Центра" массив точек в виде сетки
- Находим высоту каждой точки.
- Выделяем точки с высотой меньше или равной высоте разлива (высота дотчика + уровень воды)
- Кластеризация. По границе кластеров строим полигоны. (ConcaveHull)
- Оставляем полигоны ближайший к гидропосту (центру сегмента)
Генерация полигонов разлива в радиусе датчика Алгоритм 2:
- Строим в области от "Центра" массив точек в виде сетки
- Находим высоту каждой точки.
- Выделяем точки с высотой меньше или равной высоте разлива (высота дотчика + уровень воды)
- Кластеризация. По границе кластеров строим полигоны. (ConcaveHull)
- Оставляем ближайший полигон к гидропосту
Return values
void —initialize()
public
initialize() : void
Return values
void —mainAction()
public
mainAction() : void
Return values
void —abortWorkWithMessage()
protected
abortWorkWithMessage(string $message) : never
Parameters
- $message : string
Return values
never —getDataSetTitle()
protected
getDataSetTitle(array<string|int, mixed>|DataSetEntity $dataSet) : string
Parameters
- $dataSet : array<string|int, mixed>|DataSetEntity
Return values
string —parseFlagsFromParams()
Parse command line arguments from array. Output default values if --help or -h argument specified.
protected
parseFlagsFromParams(Flags $flags[, array<string|int, mixed> $params = [] ]) : void
Parameters
- $flags : Flags
- $params : array<string|int, mixed> = []
Return values
void —requestConfirm()
protected
requestConfirm(string $message) : bool
Parameters
- $message : string
Return values
bool —buildFloodPolygon()
private
buildFloodPolygon(GeosObject $gauge, array<string|int, GeosObject> $filteredGrid) : GeosObject|null
Parameters
- $gauge : GeosObject
- $filteredGrid : array<string|int, GeosObject>
Return values
GeosObject|null —buildHeightGrid()
private
buildHeightGrid(GeosObject $center, int $radius) : array<string|int, mixed>
Parameters
- $center : GeosObject
- $radius : int
Return values
array<string|int, mixed> —filterHighPoints()
private
filterHighPoints(array<string|int, mixed> $grid, float $waterLevel, string|null $projection) : array<string|int, mixed>
Parameters
- $grid : array<string|int, mixed>
- $waterLevel : float
- $projection : string|null
Return values
array<string|int, mixed> —findProjection()
private
findProjection(FeatureEntity $feature) : string|null
Parameters
- $feature : FeatureEntity
Return values
string|null —findRiverSegments()
private
findRiverSegments(FeatureEntity $gauge[, string|null $projection = null ]) : array<string|int, GeosObject>
Parameters
- $gauge : FeatureEntity
- $projection : string|null = null
Return values
array<string|int, GeosObject> —fixPolygonsIntersections()
private
fixPolygonsIntersections(GeosObject $polygonA, GeosObject $polygonB) : GeosObject
Parameters
- $polygonA : GeosObject
- $polygonB : GeosObject
Return values
GeosObject —generateFloodPolygon()
private
generateFloodPolygon(array<string|int, GeosObject> $centers, float $waterLevel, int $dangerLevel) : array<string|int, mixed>
Parameters
- $centers : array<string|int, GeosObject>
- $waterLevel : float
- $dangerLevel : int
Return values
array<string|int, mixed> —getCenters()
private
getCenters(FeatureEntity $feature) : array<string|int, mixed>
Parameters
- $feature : FeatureEntity
Return values
array<string|int, mixed> —getHeight()
private
getHeight(array<string|int, mixed> $coordinates) : array<string|int, mixed>
Parameters
- $coordinates : array<string|int, mixed>
Return values
array<string|int, mixed> —getRiverCentersHeights()
private
getRiverCentersHeights(array<string|int, mixed> $centers) : array<string|int, mixed>
Parameters
- $centers : array<string|int, mixed>
Return values
array<string|int, mixed> —getRiversCenters()
private
getRiversCenters(array<string|int, GeosObject> $rivers, FeatureEntity $gauge) : array<string|int, mixed>
Parameters
- $rivers : array<string|int, GeosObject>
- $gauge : FeatureEntity
Return values
array<string|int, mixed> —interpolateRiver()
private
interpolateRiver(GeosObject $river, int $interpolateDistance) : array<string|int, GeosObject>
Parameters
- $river : GeosObject
- $interpolateDistance : int
Return values
array<string|int, GeosObject> —linspace()
private
linspace(int $mini, int $maxi, int $n) : array<string|int, mixed>
Parameters
- $mini : int
- $maxi : int
- $n : int
Return values
array<string|int, mixed> —meshgrid()
private
meshgrid(array<string|int, mixed> $axX, array<string|int, mixed> $axY) : array<string|int, mixed>
Parameters
- $axX : array<string|int, mixed>
- $axY : array<string|int, mixed>
Return values
array<string|int, mixed> —offsetCoordinates()
private
offsetCoordinates(GeosObject $center, float $xOffset, float $yOffset) : Geometry
Parameters
- $center : GeosObject
- $xOffset : float
- $yOffset : float
Return values
Geometry —validateDataSet()
private
validateDataSet(string|null $id) : void
Parameters
- $id : string|null