@@ -213,16 +213,24 @@ def _get_fitted_segments(
213
213
)
214
214
)
215
215
else :
216
- nearest_left_point , nearest_right_point = get_nearest_values (
216
+ nearest_points = get_nearest_values (
217
217
value = left_segment ['md' ], input_list = calculated_trajectory , key = lambda it : it ['md' ]
218
218
)
219
- interpolated_point = interpolate_trajectory_point (
220
- left_point = nearest_left_point ,
221
- right_point = nearest_right_point ,
222
- md = left_segment ['md' ],
223
- well = well ,
224
- measure_units = measure_units ,
225
- )
219
+
220
+ if len (nearest_points ) < 2 :
221
+ # Interpretation start MD = calculated trajectory start MD
222
+ # Otherwise (MD approximately equal or equal the last trajectory point MD) two points are found
223
+ interpolated_point = calculated_trajectory [0 ]
224
+ else :
225
+ nearest_left_point , nearest_right_point = nearest_points
226
+ interpolated_point = interpolate_trajectory_point (
227
+ left_point = nearest_left_point ,
228
+ right_point = nearest_right_point ,
229
+ md = left_segment ['md' ],
230
+ well = well ,
231
+ measure_units = measure_units ,
232
+ )
233
+
226
234
left_segment ['vs' ] = interpolated_point ['vs' ]
227
235
fitted_segments .append (left_segment )
228
236
@@ -235,17 +243,23 @@ def _get_truncated_segment(
235
243
segment_vs_length = calc_segment_vs_length (
236
244
x1 = left ['x' ], y1 = left ['y' ], x2 = right ['x' ], y2 = right ['y' ], azimuth_vs = well ['azimuth' ]
237
245
)
238
- nearest_left_point , nearest_right_point = get_nearest_values (
239
- value = left ['md' ], input_list = trajectory , key = lambda it : it ['md' ]
240
- )
241
- left_point = interpolate_trajectory_point (
242
- left_point = nearest_left_point ,
243
- right_point = nearest_right_point ,
244
- md = left ['md' ],
245
- well = well ,
246
- measure_units = measure_units ,
247
- )
248
- left_point_vs = left_point ['vs' ]
246
+ nearest_points = get_nearest_values (value = left ['md' ], input_list = trajectory , key = lambda it : it ['md' ])
247
+
248
+ if len (nearest_points ) < 2 :
249
+ # Interpretation start MD = calculated trajectory start MD
250
+ # Otherwise (MD approximately equal or equal the last trajectory point MD) two points are found
251
+ interpolated_point = trajectory [0 ]
252
+ else :
253
+ nearest_left_point , nearest_right_point = nearest_points
254
+ interpolated_point = interpolate_trajectory_point (
255
+ left_point = nearest_left_point ,
256
+ right_point = nearest_right_point ,
257
+ md = left ['md' ],
258
+ well = well ,
259
+ measure_units = measure_units ,
260
+ )
261
+
262
+ left_point_vs = interpolated_point ['vs' ]
249
263
right_point_vs = trajectory [- 1 ]['vs' ]
250
264
251
265
truncated_segment_vs_length = fabs (right_point_vs - left_point_vs )
0 commit comments