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$Pshould onLine[pts], ifPis far away from the line, the returned value should greater than 1 or less than 0. $\endgroup$