Intersection of Particles in a Hair Particle System
I'm not sure there's a way to avoid particle overlapping (except maybe with the help of this tuto?), but you can:

Create several buildings, texture them. Put them into a collection called Buildings:



Create a plane (let's call it Generator) and give it a Particle System &gt; Hair, activate the Advanced option,  choose the collection you've created as particle, give it an Emission &gt; Number of 20:



In the Modifier panel &gt; Particle Settings, click on Convert. It will generate instances, reorganize them so that they don't overlap, select all, make the objects single users and join them with J to create an object:



Come back to your Generator plane, generate a new combination, vary the Emission &gt; Seed and the Render &gt; Use Count settings so that it differs from the previous combination. Do the same as before in order to create a second object. Do it again several times, put all these objects in a collection called Master.

Create a new plane, subdivide it for example 10 times, give it a Particle &gt; Hair, activate the Advanced option, choose Master as its particle, give it an Emission &gt; Number as high as you have faces on this plane. In Emission &gt; Source, deactivate Random Order, choose Particles/Face = 1.