annotate pkg/models/surveys.go @ 5520:05db984d3db1

Improve performance of bottleneck area calculation Avoid buffer calculations by replacing them with simple distance comparisons and calculate the boundary of the result geometry only once per iteration. In some edge cases with very large numbers of iterations, this reduced the runtime of a bottleneck import by a factor of more than twenty.
author Tom Gottfried <tom@intevation.de>
date Thu, 21 Oct 2021 19:50:39 +0200
parents 5e7fca6ef935
children 1222b777f51f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1017
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
1 // This is Free Software under GNU Affero General Public License v >= 3.0
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
2 // without warranty, see README.md and license for details.
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
3 //
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
4 // SPDX-License-Identifier: AGPL-3.0-or-later
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
5 // License-Filename: LICENSES/AGPL-3.0.txt
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
6 //
2129
8f6345ad5f13 Extend /surveys/ endpoint to include reference gauge
Bernhard Reiter <bernhard@intevation.de>
parents: 1332
diff changeset
7 // Copyright (C) 2018, 2019 by via donau
1017
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
8 // – Österreichische Wasserstraßen-Gesellschaft mbH
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
9 // Software engineering by Intevation GmbH
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
10 //
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
11 // Author(s):
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
12 // * Sascha Wilde <sascha.wilde@intevation.de>
a244b18cb916 Added GNU Affero General Public License.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 812
diff changeset
13
812
98a7776100fb Added end point lo list available surveys for a given bottleneck.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
14 package models
98a7776100fb Added end point lo list available surveys for a given bottleneck.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
15
98a7776100fb Added end point lo list available surveys for a given bottleneck.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
16 type (
98a7776100fb Added end point lo list available surveys for a given bottleneck.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
17 Survey struct {
5405
5e7fca6ef935 When listing surveys tell survey type as well.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2152
diff changeset
18 BottleneckID string `json:"bottleneck_id"`
5e7fca6ef935 When listing surveys tell survey type as well.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2152
diff changeset
19 DateInfo string `json:"date_info"`
5e7fca6ef935 When listing surveys tell survey type as well.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2152
diff changeset
20 DepthReference string `json:"depth_reference"`
5e7fca6ef935 When listing surveys tell survey type as well.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2152
diff changeset
21 ReferenceGauge string `json:"gauge_objname"`
5e7fca6ef935 When listing surveys tell survey type as well.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2152
diff changeset
22 SurveyType SurveyType `json:"survey_type"`
5e7fca6ef935 When listing surveys tell survey type as well.
Sascha L. Teichmann <sascha.teichmann@intevation.de>
parents: 2152
diff changeset
23 WaterLevelValue *int64 `json:"waterlevel_value,omitempty"`
812
98a7776100fb Added end point lo list available surveys for a given bottleneck.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
24 }
98a7776100fb Added end point lo list available surveys for a given bottleneck.
Sascha Wilde <wilde@intevation.de>
parents:
diff changeset
25 )