}
GeometryFactory gf = new GeometryFactory();
GeometryCollection polygonCollection = gf.createGeometryCollection(geoms);
//union all of the road geometries
Geometry union = polygonCollection.buffer(0);
//make a giant square the size of the city
Geometry cityTemplateSquare = gf.createPolygon(gf.createLinearRing(new Coordinate[]{new Coordinate(-c.sizeX/2-e,c.sizeY/2+e,0), new Coordinate(c.sizeX/2+e,c.sizeY/2+e,0), new Coordinate(c.sizeX/2+e,-c.sizeY/2-e,0), new Coordinate(-c.sizeX/2-e,-c.sizeY/2-e,0), new Coordinate(-c.sizeX/2-e,c.sizeY/2+e,0)}),null);
//subtract the union from the square to find the blocks
Geometry difference = cityTemplateSquare.difference(union);
LinkedList<CityBlock> blocks = new LinkedList<CityBlock>();