[GIS] Sub-dividing a polygon into smaller polygons

mapwindowopenstreetmappolygonqgisvector-grid

In OpenStreetMap data, some large areas are tagged with a residential=yes tag. Actually within this large polygon there are multiple smaller (rectangular) houses (which are actually not drawn as yet). I would like to 'slice' the large polygon into smaller rectangular polygons. Or looking at it another way, I would like to or auto-generate as many fixed size rectangles (houses) into the larger area. I would like to achieve this either using QGIS or MapWindow, as I do not have ArcGIS. Is there any way to do this?

Best Answer

It won't look terribly realistic without taking into account roads. I suggest you'll need to work out a few classes of population density / urbanization, and build separate models for how you'd populate each one. A very simplistic low-population suburban model may look like:

  • Split road lines into the segments that exist between intersection nodes
  • Calculate length of road segments
  • Divide road segment lengths by 100m and modulo by 1 to get N
  • Divide road segment lengths by N to get H
  • Every H meters along a road segment, create a 201m-long line centered on the road, perpendicular to the road
  • Buffer all roads by 100m
  • Split those buffers by the perpendicular line layer to create initial lots
  • Split those initial lots by the road segment layer to make a final lots layer
  • Establish centroids for those final lots
  • Paste a house model in a random orientation (or pointed towards the nearest road if you can figure out how) at each final lot

This should give you, very roughly, something like this, albeit without the cul-de-sac effect: Suburban subdivision

Related Question