AirLay backend

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

Properties

Methods

generateAction()

Генерация полигонов разлива по реке Алгоритм 1: 1. Ищем сегменты реки в радиусе R от датчика.

public generateAction() : void
  1. Если сегменты найдены, они инерполируются с шагов равным радиусом и полученные точки считаются центрами, иначе как "Центр" используется датчик
  2. Строим в области от "Центра" массив точек в виде сетки
  3. Находим высоту каждой точки.
  4. Выделяем точки с высотой меньше или равной высоте разлива (высота дотчика + уровень воды)
  5. Кластеризация. По границе кластеров строим полигоны. (ConcaveHull)
  6. Оставляем полигоны ближайший к гидропосту (центру сегмента)

Генерация полигонов разлива в радиусе датчика Алгоритм 2:

  1. Строим в области от "Центра" массив точек в виде сетки
  2. Находим высоту каждой точки.
  3. Выделяем точки с высотой меньше или равной высоте разлива (высота дотчика + уровень воды)
  4. Кластеризация. По границе кластеров строим полигоны. (ConcaveHull)
  5. Оставляем ближайший полигон к гидропосту
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

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>

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>

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>

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
Return values
void

Search results