Hello @tetiana, I feel like finding a raster or point cloud based method will be most efficient for the use case, however I am not sure what inputs we are working with at this time. What are your source datasets?
Can you explain what is meant by the first step 'build contours'? Are you looking to create a surface or DEM around the road? If you need to generate a surface, you can use the TINGenerator.
For adding perpendicular lines, we could maybe use a CoordinateExtractor (to find start and end of road line), and adjacent features function with addition/math in the AttributeManager to calculate a new coordinate for every 1 meter along the road. A VertexCreator can add the new point geometry. Next, 3DForcer to force height by 1 m.
To Validate intersections with the road and surface, check out the Clipper. Where the line objects intersect the surface, the height difference will be less than 1 meter. If it does not intersect or 'clip' the surface, the height difference will be greater than 1 meter. This method might require adding a unqiue ID to each of the perpendicular lines.
To examine or filter based on height, check out the Tester transformer, or for more granular filtering the TestFilter.
Please note, I have not tested any of this, so feel free to reach out if you get stuck somewhere along the way!
A good article to reference may be the viewshed analysis (eg. uses the clipper transformer in a similar fashion). Hopefully other users will chime in with alternatives for you to explore! All the best, Kailin.