Your problem is a degree tougher than the "duplicate candidate". The "duplicate candidate" is a lucky special case which makes it elementary. Its solution was to draw two paths along the left and right edges of the road. Then to make intermediate lines between the edges with blending in Illustrator or Path interpolation in Inkscape. Both fitted well in that case. But it's useless in your case.
In your case the camera isn't in the middle of the road. The other edge of the road is substantially further than the nearest edge. Your colored stripes cannot be equally wide, the nearest must be wider than the most distant. That's true only in the foreground, the difference should be reduced as the distance from the observer grows.
I cannot tell any easy procedure to fit your rainbow to the road so that the two-way perspective becomes true. You can try the following trial & error method.
At first draw the needed stripes as aligned horizontal rectangles. Drag it to he brushes collection and define it to be artistic brush, stretched to the needed length:
Draw with the pen a stroke with the smallest possible number of nodes which is enough for the wanted road bends. I guess you need only one intermediate node. Apply the new brush to it. For further adjustability insert with the path width tool width handles at the ends, not in the middle.
Here the brush has been applied and the distant end has been made narrow only to show what the width tool does. The original path is in the right for reference.
Apply Effects > 3D > Rotate. Add perspective and try to find proper viewing angle and perspective angle for right foreshortening. Have your photo as locked below all.
There's plenty of variables:
- path node handles for right bends
- 3D Rotate settings for right viewing angle and perspective
- path width handles for the right road width and also cheating the distant contraction. I guess it's needed.
You can recall the 3D Rotate dialog by clicking it in the appearance panel.
You can fix the 3D effect with Object > Expand Appearance. To separate one stripe for ex. for recoloring you must make ungrouping. Often with 3D effects there are several group levels and clipping masks generated, but in this case there will be only a group which contains deformed stripes and the equivalent envelope distortion polygon.
But does it work in practice? So many variables and totally unorthodox method. I bet quite rare if any believe it. Here's a test:
Google Map photo and the map itself for easy drawing the raw path (=red) - fortunately one thing less to guess than in your case.
After some tweaks - the width tool was needed, too - I got the next result:
The 3D rotate dialog shows that it's seen nearly sideways. One degree viewing angle steps are far too coarse, one must cheat with Bezier curve node handles and width handles. But it can be plausible enough.