Zoom levels
Difference of longitudes |
Actual distances | |||
---|---|---|---|---|
at 0° lat. | at 30° lat. | at 60° lat. | at 87.5° lat. | |
0.01 | °~ 1 000 m | ~ 870 | m~ 500 | m~ 43.62 m |
0.001 | °~ | 100 m~ | 87 m~ | 50 m~ | 4.36 m
0.000 1 | °~ | 10 m~ | 8.7 m~ | 5 m~ | 0.44 m
0.000 01 ° | ~ | 1 m~ | 0.87 m~ | 0.5 m~ | 0.04 m
Level | # Tiles | Tile width (° of longitudes) |
m / pixel (on Equator) |
~ Scale (on screen) |
Examples of areas to represent |
---|---|---|---|---|---|
0 | 1 | 360 | 156 543 | 1:500 million | whole world |
1 | 4 | 180 | 78 272 | 1:250 million | |
2 | 16 | 90 | 39 136 | 1:150 million | subcontinental area |
3 | 64 | 45 | 19 568 | 1:70 million | largest country |
4 | 256 | 22.5 | 9 784 | 1:35 million | |
5 | 1 024 | 11.25 | 4 892 | 1:15 million | large African country |
6 | 4 096 | 5.625 | 2 446 | 1:10 million | large European country |
7 | 16 384 | 2.813 | 1 223 | 1:4 million | small country, US state |
8 | 65 536 | 1.406 | 611.496 | 1:2 million | |
9 | 262 144 | 0.703 | 305.748 | 1:1 million | wide area, large metropolitan area |
10 | 1 048 576 | 0.352 | 152.874 | 1:500 thousand | metropolitan area |
11 | 4 194 304 | 0.176 | 76.437 | 1:250 thousand | city |
12 | 16 777 216 | 0.088 | 38.219 | 1:150 thousand | town, or city district |
13 | 67 108 864 | 0.044 | 19.109 | 1:70 thousand | village, or suburb |
14 | 268 435 456 | 0.022 | 9.555 | 1:35 thousand | |
15 | 1 073 741 824 | 0.011 | 4.777 | 1:15 thousand | small road |
16 | 4 294 967 296 | 0.005 | 2.389 | 1:8 thousand | street |
17 | 17 179 869 184 | 0.003 | 1.194 | 1:4 thousand | block, park, addresses |
18 | 68 719 476 736 | 0.001 | 0.597 | 1:2 thousand | some buildings, trees |
19 | 274 877 906 944 | 0.0005 | 0.299 | 1:1 thousand | local highway and crossing details |
20 | 1 099 511 627 776 | 0.00025 | 0.149 | 1:5 hundred | A mid-sized building |
- The "# Tiles" column indicates the number of tiles needed to show the entire world at the given zoom level. This is useful when calculating storage requirements for pre-generated tiles.
- The "° Tile width" column gives the map width in degrees of longitude, for a square tile drawn at that zoom level.
- Values listed in the column "m / pixels" gives the number of meters per pixel at that zoom level for 256-pixel wide tiles. These values for "m / pixel" are calculated with an Earth radius of 6372.7982 km and hold at the Equator; for other latitudes the values must be multiplied by the cosine (approximately assuming a perfect spheric shape of the geoid) of the latitude.
- "~ Scale" is only an approximate size comparison and refers to distances on the Equator. In addition, the given scales assume that 256-pixel wide tiles are rendered and will be dependent on the resolution of the viewing monitor: these values are for a monitor with a 0.3 mm / pixel (85.2 pixels per inch or PPI). Such scale is typically used for the kind of area to represent on a single tile (Note that when rendering on the web, the standard CSS pixel size is defined at 96 PPI, browsers will rescale the images when needed but only by integer factors on PNG images to avoid making the rendered text or icons too fuzzy; if the screen has a lower resolution, the rendered images may be larger; and it's possible for a renderer to create image with other resolutions than 256 pixels at 96 PPI to better fit the expected sizes, and for a web interface to automatically select other available resolutions for Hi-DPI screens, but this requires more storage and computing resources on the server; as well the zoom level in the formulas above do not necessarily need to be integers, and this may be used to get intermediate scales with tiles having more pixels).
Distance per pixel math
The horizontal distance represented by each square tile, measured along the parallel at a given latitude, is given by:
- Stile = C ∙ cos(latitude) / 2 zoomlevel
where C means the equatorial circumference of the Earth (40 075 016.686 m ≈ 2π ∙ 6 378 137.000 m for the reference geoid used by OpenStreetMap).
As tiles are 256-pixels wide, the horizontal distance represented by one pixel is:
- Spixel = Stile / 256 = C ∙ cos(latitude) / 2 (zoomlevel + 8)
- For example on the equator and at zoom level 0, we get 40 075 016.686 / 256 ≈ 156 543.03 (in meters per pixel).
Make sure your calculator is in degrees mode, unless you want to express latitude in radians for some reason. C should be expressed in whatever scale unit you're interested in (miles, meters, feet, smoots, whatever).
This formula assumes that the Earth is perfectly spheric, but since the Earth is actually ellipsoidal there will be a slight error in this calculation, which does not take into account the flattening (with a slight reduction of radius for the best-fitting sphere passing at geographic poles at average sea level). But this error is very slight: it is null on the reference Equator, then grows to an absolute maximum of 0.3% at median latitudes, then shrinks back to zero at high latitudes towards poles.
The error also does not take into account additional differences caused by variation of the altitude on ground, or by the irregular variations of the geographic polar axis, and other errors caused by celestial tidal effects and climatic effects on the average sea level, or by continent drifts, major earthquakes, and magmatic flows below the crust).
Mapbox GL
Mapbox GL–based libraries uses 512×512-pixel tiles by default, so Mapbox GL zoom levels are one fewer than the zoom levels described above that are used by other tools.
See also
- Slippy map tilenames#Resolution and Scale – better formulas and a table
- Tile Disk Usage – How zoom levels effect the disk requirements for our tile server
- Precision of coordinates
- Accuracy of GPS data