I built something like this in Java in the past to generate whole towns/cities. I have to admit that generating things as you go along is probably more effective than generating everything up front.
It’s interesting to see what random generation comes up with.