Tienes razón, esto parece faltar en la API, tanto en QgsGeometry y en QgsGeos
QGIS utiliza GEOS como motor de geometría, y parece que esta opción no existe.
Puedes solucionarlo iterando sobre los segmentos de línea, contando sus longitudes. Cuando llegues al segmento que interseca tu punto, añade la longitud desde el inicio de la línea hasta tu punto y sal del bucle.
En este caso, he configurado una forma geométrica simple que comienza con dos líneas de longitud sqrt(2), y he hecho el punto a mitad de camino a lo largo del 2º segmento. El resultado es el esperado, 1.5*sqrt(2)
# your point
point_x = 2.5
point_y = 1.5
# your line
gLine = QgsGeometry.fromPolyline([QgsPoint(1, 1), QgsPoint(2, 2),QgsPoint(3,1),QgsPoint(6,1)])
gPoint = QgsGeometry.fromPoint(QgsPoint(point_x,point_y))
lineGeom = gLine.asPolyline()
# step through line segments
total_len = 0
for seg_start, seg_end in zip(lineGeom, lineGeom[1:]):
line_start = QgsPoint(seg_start)
line_end = QgsPoint(seg_end)
segment = QgsGeometry.fromPolyline([line_start,line_end])
print segment.exportToWkt()
if gPoint.intersects(segment):
to_point = QgsGeometry.fromPolyline([line_start, QgsPoint(point_x,point_y)])
total_len += to_point.length()
break
else:
total_len += segment.length()
print total_len
Ese código da la distancia acumulada a lo largo de la línea desde el primer vértice, pero podría ajustarse para dar resultados similares a la función postgis, que da una distancia normalizada a lo largo de la línea de 0.0 - 1.0
crédito a Gene por el código de iteración del segmento ici