So, if the street were approximately equal to the width as shown in the figure below,
it would be possible to use this customizable geo tool
(for my example, the width of the street is 40 meters),
Configure and run the script:
WITH
tbla AS (SELECT ST_ExteriorRing(geom) geom FROM (SELECT ((ST_Dump(geom)).geom) geom FROM street) foo),
tblb AS (SELECT ((ST_Dump(geom)).geom) geom FROM street),
tblc AS (SELECT ((ST_DumpPoints(geom)).geom) geom FROM street),
tbld AS (SELECT ST_Centroid(ST_UnaryUnion(Unnest(ST_ClusterWithin(geom, 60)))) geom FROM tblc),
tble AS (SELECT ST_ExteriorRing((ST_Dump(ST_DelaunayTriangles(ST_Collect(geom)))).geom) geom FROM tbld),
tblf AS (SELECT ST_MakeLine(pt1, pt2) geom FROM (SELECT ST_PointN(geom, generate_series(1, ST_NPoints(geom)-1)) pt1,
ST_PointN(geom, generate_series(2, ST_NPoints(geom))) pt2 FROM tble) AS geom)
SELECT ST_Intersection (a.geom, b.geom) geom FROM tblf a JOIN tblb b ON ST_Within(a.geom, b.geom)
Result
Delete possible artifacts,
and that's all...
Edit
For your terrible data set, I would have cleaned it up and run a double process, for example:
WITH
tbla AS (SELECT ST_ExteriorRing(geom) geom FROM (SELECT ((ST_Dump(geom)).geom) geom FROM "Polygon_5") foo),
tblb AS (SELECT ((ST_Dump(geom)).geom) geom FROM "Polygon_5"),
tblc AS (SELECT ((ST_DumpPoints(geom)).geom) geom FROM "Polygon_5"),
tbld AS (SELECT ST_Centroid(ST_UnaryUnion(Unnest(ST_ClusterWithin(geom, 10)))) geom FROM tblc),
tble AS (SELECT ST_ExteriorRing((ST_Dump(ST_DelaunayTriangles(ST_Collect(geom)))).geom) geom FROM tbld),
tblf AS (SELECT ST_MakeLine(pt1, pt2) geom FROM (SELECT ST_PointN(geom, generate_series(1, ST_NPoints(geom)-1)) pt1,
ST_PointN(geom, generate_series(2, ST_NPoints(geom))) pt2 FROM tble) AS geom),
tblg AS (SELECT ST_Intersection (a.geom, b.geom) geom FROM tblf a JOIN tblb b ON ST_Within(a.geom, b.geom)),
tblh AS (SELECT ((ST_DumpPoints(geom)).geom) geom FROM tblg),
tbli AS (SELECT ST_ExteriorRing((ST_Dump(ST_DelaunayTriangles(ST_Collect(geom)))).geom) geom FROM tblh),
tblj AS (SELECT ST_MakeLine(pt1, pt2) geom FROM (SELECT ST_PointN(geom, generate_series(1, ST_NPoints(geom)-1)) pt1,
ST_PointN(geom, generate_series(2, ST_NPoints(geom))) pt2 FROM tbli) AS geom)
(SELECT ST_Intersection (a.geom, b.geom) geom FROM tblj a JOIN tblb b ON ST_Within(a.geom, b.geom))
Removed the artifacts and a bit of manual refinement...
Good luck in knowing...🙂