ClearAll[invLSC]
invLSC[pl_, p_] /; Element[p, Line @ pl] := Module[{arclengths, index,
mr = MeshRegion[pl, Line[Range[Length @ pl]]]},
index = Last @ Region`Mesh`MeshNearestCellIndex[mr, p];
arclengths = PropertyValue[{mr, 1}, MeshCellMeasure];
(Total[arclengths[[;; index - 1]]] + Norm[pl[[index]] - p]) / Total[arclengths]]
invLSC[___] := -1
Examples:
2D
Needs["GraphUtilities`"];
pts = {{0, 0}, {1, 0}, {0.6, 0.4}, {0.1, 0.5}};
{P = LineScaledCoordinate[pts, .3], invLSC[pts, P]}
{{2.37301, 6.88155}, 0.3}
{P2 = LineScaledCoordinate[pts, .8], invLSC[pts, P2]}
{{4.41186, 4.25237}, 0.8}
{SeedRandom[1]; P3 = RandomReal[1, 2], invLSC[pts, P3]}
{{0.817389, 0.11142}, -1}
SeedRandom[1];
pts = RandomReal[10, {15, 2}];
q = RandomReal[1, 10];
Grid[Prepend[{#, pt = LineScaledCoordinate[pts, #], invLSC[pts, pt]} & /@ q,
Style[#, 14] & /@ {"q", "pt = LineScaledCoordinate[pts, q]", "invLSC[pts, pt]"}],
Dividers -> All]

pl = RandomPoint[Line @ pts, 10];
Grid[Prepend[{#, s = invLSC[pts, #], LineScaledCoordinate[pts, s]} & /@ pl,
Style[#, 14] & /@ {"pt", "s = invLSC[pts, pt]", "LineScaledCoordinate[pts, s]"}],
Dividers -> All]

3D
SeedRandom[1];
pts = RandomReal[10, {15, 3}];
q = RandomReal[1, 10];
Grid[Prepend[{#, pt = LineScaledCoordinate[pts, #], invLSC[pts, pt]} & /@ q,
Style[#, 14] & /@ {"q", "pt = LineScaledCoordinate[pts, q]", "invLSC[pts, pt]"}],
Dividers -> All]

pl = RandomPoint[Line @ pts, 10];
Grid[Prepend[{#, s = invLSC[pts, #], LineScaledCoordinate[pts, s]} & /@ pl,
Style[#, 14] & /@ {"pt", "s = invLSC[pts, pt]", "LineScaledCoordinate[pts, s]"}],
Dividers -> All]

pathParameter[pts, P]
would requireElement[P,Line[pts]
? $\endgroup$P
should onLine[pts]
, ifP
is far away from the line, the returned value should greater than 1 or less than 0. $\endgroup$