differential-studio/urban-opengen-tiles-v1
Urban OpenGen tiles v1: the set the GAN was trained on Sixty cities, the same 10 km window and 25 × 25 grid as v2, rendered from OpenStreetMap through a Grasshopper definition at 100 × 100 px and 4 m per pixel. About 36,800 tiles present, of which 30,519 survive a 5% minimum-content filter. You probably want v2 instead. It is finer at 3.125 m per pixel, its renderer is open Python in the repository so you can extend it to any city yourself, and it carries the whole-city rasters.… See the full description on the dataset page: https://huggingface.co/datasets/differential-studio/urban-opengen-tiles-v1.
Urban OpenGen tiles v1: the set the GAN was trained on
Sixty cities, the same 10 km window and 25 × 25 grid as v2, rendered from OpenStreetMap through a Grasshopper definition at 100 × 100 px and 4 m per pixel. About 36,800 tiles present, of which 30,519 survive a 5% minimum-content filter.
You probably want v2 instead. It is finer at 3.125 m per pixel, its renderer is open Python in the repository so you can extend it to any city yourself, and it carries the whole-city rasters. v1 is here for one reason: it is the set the released GAN snapshots actually saw, so if you are reproducing that training, this is what you need.
- Renderer, models and documentation: https://github.com/differential-studio/urban-opengen
- Trained on this: urban-opengen-generator
One thing to know
São Paulo came out of the original run almost empty and was replaced afterwards with the v2 render of that city, downsampled to match. So the GAN was trained with São Paulo effectively missing. That is the one difference between what is in this download and what the model saw.
The palette
Identical to v2: black is unbuilt, grey is a building with the grey level encoding height (100 → 4 m, 255 → 100 m), red is street, (128, 255, 0) is greenery. No anti-aliasing, so every pixel is exactly one class.
Mixing tile sizes
phase0/reencode_tiles.py --size 128 resamples a mixed folder to one size, nearest for mask encoding and bilinear for signed-distance encoding, so v1 and v2 tiles can be trained on together. One caveat from our own failures: nearest-neighbour resizing from 100 to 128 px stamps a column-duplication pattern that a discriminator will find and exploit. Use the sdf encoding, which resamples the distance fields bilinearly and removes it.
Licence and attribution
ODbL 1.0, © OpenStreetMap contributors. Derived from OpenStreetMap data.
Contains information from OpenStreetMap, available under the Open Database License. Urban OpenGen tiles by Differential (differential.studio).
Known issues
- Coarser than v2 at 4 m per pixel, and fewer distinct height levels: the same tiles rendered by the v2 Python renderer carry 77 to 118 distinct height levels where these have 12 to 24.
- São Paulo, as above.
- The renderer is a Grasshopper definition rather than open code, which is why v2 exists.
