Display the articles of a category by role

One option could be to have some kind of lookup table, either hard coded or as a settings page, where you map role (user group) to category (city). Then use the current user object to get city based role and use it as a key to get a category ID from the lookup table, which you use in your post query.

Pseudo-code example,

// Current user data
$current_user = wp_get_current_user();
// Get city role
$city_based_role = some_function_to_get_city_role_from_roles($current_user->roles);
// Get category id
$city_category = some_function_to_get_category_id_from_role_to_category_lookup_table($city_based_role);
// Query posts for category
$args = array(
  // some args
  'cat' => $city_category,
);
$query = new WP_Query($args);