Create page dynamically from data files?

Nothing has changed on this. Your best approach right now is to generate content files for each city based on the data. Use the content front matter to store your custom fields.