Mercurial > gemma
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 |