Below I present a way to get an InterpolatingFunction and a comparison of @kglr's and @Akku14's solutions:
Data = Join[Most@data1, data2]; (* Probably should do for BSplineFunction, too *)
gIF = Interpolation[
MapIndexed[{(#2 - 1.)/(Length@Data - 1), #1} &, Data],
PeriodicInterpolation -> True
]
Below one can see that the InterpolatingFunction and linear BSplineFunction pass through the data points. One can also see that the InterpolatingFunction and regular BSplineFunction are curved instead of polygonal (no surprise). Which to use depends on the application.
bsF = BSplineFunction[Data] (* @kglr *)
bsF1 = BSplineFunction[Data, SplineDegree -> 1] (* @Akku14 *)
ParametricPlot[{gIF[t], bsF1[t], bsF[t]}, {t, 0, 0.01},
AspectRatio -> 1, PlotRange -> All, Epilog -> {Red, Point@Data},
PlotLegends -> "Expressions"]
ParametricPlot[{gIF[t], bsF1[t], bsF[t]}, {t, 0.245, 0.255},
AspectRatio -> 1, PlotRange -> All, Epilog -> {Red, Point@Data},
PlotLegends -> "Expressions"]

bsF=BSplineFunction[Data];and thenParametricPlot[bsF[t], {t,0,1}]? – kglr Apr 29 '20 at 03:33SplineDegree -> 1, – Akku14 Apr 29 '20 at 07:46Interpolationis trying to evaluate a function, what you have is actually 2 functions (upper and lower half circles). Can you clarify what you are trying to do ? – A.G. Apr 29 '20 at 08:12