comparison pkg/imports/bn.go @ 2563:dc4fae4bdb8f

Expose axis snapping tolerance to users
author Tom Gottfried <tom@intevation.de>
date Fri, 08 Mar 2019 19:15:47 +0100
parents 6b34d0fb4498
children 02d012272dd4
comparison
equal deleted inserted replaced
2562:ce39e9954e85 2563:dc4fae4bdb8f
28 // Bottleneck is an import job to import 28 // Bottleneck is an import job to import
29 // bottlenecks from an IFBN SOAP service. 29 // bottlenecks from an IFBN SOAP service.
30 type Bottleneck struct { 30 type Bottleneck struct {
31 // URL is the URL of the SOAP service. 31 // URL is the URL of the SOAP service.
32 URL string `json:"url"` 32 URL string `json:"url"`
33 // Tolerance used for axis snapping
34 Tolerance float64 `json:"tolerance"`
33 // Insecure indicates if HTTPS traffic 35 // Insecure indicates if HTTPS traffic
34 // should validate certificates or not. 36 // should validate certificates or not.
35 Insecure bool `json:"insecure"` 37 Insecure bool `json:"insecure"`
36 } 38 }
37 39
62 isrs_fromText($2), 64 isrs_fromText($2),
63 $3, 65 $3,
64 $4, 66 $4,
65 isrsrange(isrs_fromText($5), isrs_fromText($6)), 67 isrsrange(isrs_fromText($5), isrs_fromText($6)),
66 ISRSrange_area( 68 ISRSrange_area(
67 isrsrange(isrs_fromText($5), isrs_fromText($6)), 69 ISRSrange_axis(isrsrange(isrs_fromText($5), isrs_fromText($6)), $14),
68 (SELECT ST_Collect(CAST(area AS geometry)) 70 (SELECT ST_Collect(CAST(area AS geometry))
69 FROM waterway.waterway_area)), 71 FROM waterway.waterway_area)),
70 $7, 72 $7,
71 $8, 73 $8,
72 $9, 74 $9,
160 } 162 }
161 163
162 return resp.Export_bn_by_isrsResult.BottleNeckType, nil 164 return resp.Export_bn_by_isrsResult.BottleNeckType, nil
163 } 165 }
164 166
165 return storeBottlenecks(ctx, fetch, importID, conn, feedback) 167 return storeBottlenecks(ctx, fetch, importID, conn, feedback, bn.Tolerance)
166 } 168 }
167 169
168 func storeBottlenecks( 170 func storeBottlenecks(
169 ctx context.Context, 171 ctx context.Context,
170 fetch func() ([]*ifbn.BottleNeckType, error), 172 fetch func() ([]*ifbn.BottleNeckType, error),
171 importID int64, 173 importID int64,
172 conn *sql.Conn, 174 conn *sql.Conn,
173 feedback Feedback, 175 feedback Feedback,
176 tolerance float64,
174 ) (interface{}, error) { 177 ) (interface{}, error) {
175 start := time.Now() 178 start := time.Now()
176 179
177 bns, err := fetch() 180 bns, err := fetch()
178 if err != nil { 181 if err != nil {
200 203
201 var nids []string 204 var nids []string
202 205
203 for _, bn := range bns { 206 for _, bn := range bns {
204 if err := storeBottleneck( 207 if err := storeBottleneck(
205 ctx, importID, conn, feedback, bn, &nids, 208 ctx, importID, conn, feedback, bn, &nids, tolerance,
206 hasStmt, insertStmt, trackStmt); err != nil { 209 hasStmt, insertStmt, trackStmt); err != nil {
207 return nil, err 210 return nil, err
208 } 211 }
209 } 212 }
210 if len(nids) == 0 { 213 if len(nids) == 0 {
226 importID int64, 229 importID int64,
227 conn *sql.Conn, 230 conn *sql.Conn,
228 feedback Feedback, 231 feedback Feedback,
229 bn *ifbn.BottleNeckType, 232 bn *ifbn.BottleNeckType,
230 nids *[]string, 233 nids *[]string,
234 tolerance float64,
231 hasStmt, insertStmt, trackStmt *sql.Stmt, 235 hasStmt, insertStmt, trackStmt *sql.Stmt,
232 ) error { 236 ) error {
233 237
234 tx, err := conn.BeginTx(ctx, nil) 238 tx, err := conn.BeginTx(ctx, nil)
235 if err != nil { 239 if err != nil {
276 country, 280 country,
277 revisitingTime(bn.Revisiting_time), 281 revisitingTime(bn.Revisiting_time),
278 limiting, 282 limiting,
279 bn.Date_Info, 283 bn.Date_Info,
280 bn.Source, 284 bn.Source,
285 tolerance,
281 ).Scan(&nid) 286 ).Scan(&nid)
282 if err != nil { 287 if err != nil {
283 feedback.Warn("Failed to insert '%s' into database", bn.OBJNAM) 288 feedback.Warn("Failed to insert '%s' into database", bn.OBJNAM)
284 feedback.Warn(handleError(err).Error()) 289 feedback.Warn(handleError(err).Error())
285 return nil 290 return nil