tl;dr Breath of the World map!
Last week, I made a Legend of Zelda: Breath of the Wild inspired map of The Noland Trail. This week I decided to take it a step further, and create a set of vector tiles for the world with ArcGIS Pro.
To replicate the great design of the Breath of the Wild map, I’d need global data, rather than data from my Open Noland Trail site. For vectors, I decided to use Natural Earth Data, it’s a free global dataset that’s designed just for uses like this. In particular, I used:
- Country Labels (10m_admin_0_countries_lakes)
- State Labels (10m_admin_1_states_provinces)
- Bathymetry (10m_bathymetry (J,K,L))
- Ocean Labels (10m_geography_marine_polys)
- Graticules (10m_graticules (1,10))
- Parks (10m_parks_and_protected_lands)
- Roads (10m_roads)
- Coastline (50m_coastline)
- Lakes (50m_lakes)
- Populated Places (50m_populated_places)
- Background (50m_wgs84_bounding_box)
For land elevation, I looked into ETOPO 1, the one arc-minute global relief model of Earth’s surface. Since I cannot integrate the raster into the vector tiles I would need to extract both elevation polygons and contours. I ran some focal statistics on the raster to smooth it out a bit, then created both contour line and polygon outputs. For display, I grouped the polygons into elevations of 0, 100, 200, 300, 400, 500, 1000, 2000, and 3000 and above. I used the same grouping for the contours, but made the group breaks thicker lines and elevations between the breaks thinner ones.
Here’s an animation of all the layers/groups in ArcGIS Pro before publishing as vector tiles.
After creating a tile index for the world, I published the vector tiles up to ArcGIS Online. The first vector tile package (vtpk) I published were 119mb, so I went back and did some dissolves, line simplifications, and generalizations on the data, which resulted in a 39mb publish size the second time. This is where it gets a bit tricky - I’m guessing there’s some disconnect between labeling in Pro and the vector tile specification. Label stacking seems to get dropped, I’ve seen offsets applied when there were none, and a few other smaller issues.
Below you can see a comparison of zoom level 4:
The overall published result is not that bad but it could be better. I still need to make changes, which is always part of the cartographers process, but it would be nice to start with what I think I’ve published. To clean these issues up, I decided to use the Beta Vector Style Editor - only because I had a good idea of the edits I would be making and this tool allows me to isolate layers by name and zoom level.
Screenshot of the Beta Vector Style Editor
You can see all the changes I made in this commit where I first uploaded the original
json then updated the edited
Exmaple of adding label properties back into the style.
Overall, I’ve had good success creating tiles with textures, customized zoom levels, local projections, and an array of complex symbology.