I am doing exactly this right now on Community Edition using a single website/store/store view.
I am using Unirgy's uMarketplace to do it, with the MicroSite Pro add-on. This allows you to do what you are asking. The module allows you to create and manage users, and give them access to their own categories. The vendors manage all their own inventory, orders, shipping methods etc using a custom interface, but they can also use the Magento backend to manage their products, the module creates a role which only gives permissions to access Catalog-> Manage Products.
They can only manage the products which are assigned to them or they have created themselves. This is all fine, but out of the box the Unirgy module does not allow each vendor to manage their own categories (they can only manage which products are assigned to which categories).
The way around this, which I fed back to them this week, is as follows;
Basically I have set up my store Categories like this;
-- Vendor 1
-- v1Cat 1
-- v1Cat 2
-- v1Cat 3
-- Cat 4
-- Vendor 2
-- v2Cat 1
-- v2Cat 2
-- Vendor 3
-- v3Cat 1
-- v3Cat 2
etc etc. You get the drift, each vendor is assigned a category set up by admin immediately below root. So the process is that you would set up a new category and then create the vendor. You assign that new vendor to the new category. The Microsite add-on will have automatically assigned that vendor to the Role of 'Dropship Vendor'. You would create a new unique role (Dropship Vendor - My New Vendor) and assign the new vendor to that instead. You would give this role slightly different permission. In addition to giving access to Catalogue-> Manage Products via System, you also allow access to Manage Categories.
Then I used this extension here;
To assign that user role to the product category that is only for that user. Bingo, the user can login to the backend and manage their own category, add new subcategories, add their products to their categories but cannot manage anyone else's category or products. Works great, there is one small conflict but you can use this very good extension from Maison du Logiciel to fix it (the recommended fix the module generates does work in this case) : http://www.boostmyshop.com/english/magento/magento-extension-conflict.html
So your only issue is to limit categories/vendors by city. I don't want to spoil all your fun, this is possible too as I've done it on another job. Have a think about how you could use Magento's Advanced Search, and bear in mind that the Unirgy system has a custom data section for each vendor;
Like Ben Marks has said. This will not be cheap, quick or easy. You will have to be creative, the Unirgy suite has Ioncubed files meaning that it's not always possible to extend things the Magento way. Also, the Unirgy documention is non-existant, but their support is excellent....treat it like Stackoverflow though. Asking vague, non-specific unresearched questions like the one you asked here won't get you any useful answers from them!