Web墨卡托投影

Web墨卡托投影（Web Mercator）是墨卡托投影的一種變體，被Web地圖應用業界普遍採納。2005年，隨著Google地圖的採用，這一標準開始嶄露頭角。幾乎所有主要的在線地圖提供商都使用這一標準，包括谷歌地圖、Mapbox、Bing地圖、OpenStreetMap、MapQuest、Esri等等。其正式的EPSG標識符是EPSG:3857，不過歷史上也曾使用過其他標識符。

## 性質

Web墨卡托是墨卡托投影地圖的一個輕微變體，主要用於基於Web的地圖程序。對於小比例尺地圖，它與標準的墨卡托用的公式一樣。但Web墨卡托在所有比例尺下都使用球面公式，但大比例尺的墨卡托地圖通常使用投影的橢球面形式。這種差異在全球比例尺下是察覺不到的，但會導致局部地區的地圖稍微偏離同一比例尺的真正的橢球面墨卡托地圖。

雖然Web墨卡托的公式是墨卡托的球面形式，但地理坐標必須得以WGS 84橢球面基準獲得。此差異會導致投影略微不符合正形投影。人們普遍對Web墨卡托與標準墨卡托的不同認識不足，導致了相當多的混亂和誤用。錯誤轉換造成的誤差在地面上可以達到40 km。

出於所有這些原因，美國國防部通過美國國家地理空間情報局宣布官方用途不可以使用這種地圖投影。

### 公式

Web墨卡托的公式與標準球面墨卡托的公式基本相同，但是在應用縮放之前，將「世界坐標」調整為使得左上角為(0, 0)，右下角為(256, 256)：

$$\begin{align} <pre> x &= \left\lfloor\frac{256}{2\pi} 2^{\text{zoom level}} (\lambda + \pi)\right\rfloor \text{ pixels}\\[5pt] y &= \left\lfloor\frac{256}{2\pi} 2^{\text{zoom level}} \left(\pi - \ln \left[\tan \left(\frac{\pi}{4} + \frac{\varphi}{2} \right) \right]\right)\right\rfloor \text{ pixels} </pre> \end{align}$$

其中 λ 是用弧度表示的經度，而 φ 是用弧度表示的大地緯度。

因為墨卡托將極點投影在無窮遠處，所以使用Web墨卡托投影的地圖無法顯示極點。Google地圖之類的服務會在南北緯85.051129°切斷覆蓋。這不會對街道地圖造成什麼影響，因為這些服務的主要目的不在於顯示完整的地球。85.051129°這個值是能讓整個投影地圖變成正方形的緯度，在 y = 0 的情況下計算為 φ 就會得到：

$$\begin{align} \varphi_{\text{max}} = \left[2\arctan(e^{\pi}) - \frac{\pi}{2}\right] \end{align}$$

### 球面與橢球面的混合

這個投影既不是嚴格的橢球面，也不是嚴格的球面，EPSG的定義說這個投影「使用橢球坐標系的球面演化」。它是建立在地球表面的WGS84橢球面模型定義的地理坐標上的，但在投影的時候卻仿佛坐標是定義在球面上的。這種做法對於小比例尺的地圖（例如整個世界）是沒有爭議的，但是在大比例尺地圖（例如城市或省份）中卻很少有先例。

### 優點和缺點

Web墨卡托是一個球面墨卡托投影，因此它具有與球面墨卡托相同的屬性: 不管在哪，北都在上方；子午線都是等距的垂直線，角度在局部是正確的（假設是球面坐標），而且面積會隨著離赤道越來越遠而膨脹，以至於極地區域被嚴重誇大。橢球面墨卡托具有同樣的屬性，但是它將地球模擬為一個橢球體。

然而，與橢球面墨卡托不同的是，Web墨卡托並不十分符合正形投影。這意味著地面上線條之間的角度，繪製到地圖中角度會發生變化，儘管它們不會偏離到肉眼可以察覺的程度。由於Web墨卡托指定了在WGS 84橢球面模型上給出的測量坐標，因此會有偏離。通過將測量坐標投影到球面上，角度關係會發生輕微的變化，就像在一個球面上測量一樣。這是標準球面墨卡托投影法的標準做法，但與Web墨卡托不用的是，球面墨卡托通常不用於局部區域的地圖，例如街道地圖，因此繪圖所需的位置精度通常小於使用球面公式引起的角偏差。Web墨卡托的好處在於，球面形式的計算比橢球面形式的計算簡單得多，因此只需要一小部分計算資源。

## 識別碼

由於EPSG註冊通過遲緩，Web墨卡托有了好幾個不同的空間參考系識別碼（SRID），包括EPSG:900913、EPSG:3785和EPSG:3857。

### EPSG:900913

該投影坐標參考系最初缺少一個官方的SRID，OGP的地理資訊學委員會（又名EPSG）的大地測量小組委員會拒絕提供一個SRID，並稱「我們已經審查了微軟、谷歌等公司使用的坐標參考系統，並認為它在技術上有缺陷。我們不會為了收錄這些不適當的大地測量和製圖，而降低EPSG數據集的價值。」非官方的代碼「EPSG:900913」（Google轉寫為數字）開始被使用。它最初由Christopher Schmidt在他的Technical Ramblings部落格中定義，並在OpenLayers 2中進行了編碼，從技術上講，它將使OpenLayers成為SRID權威。

### EPSG:3785

2008年，EPSG提供了官方識別碼EPSG:3785，其官方名稱為「Popular Visualisation CRS / Mercator」，但指出「它不是一個正式的大地測量系統」。該定義使用了地球的球面（而非橢球面）模型。

### EPSG:3857

當年晚些時候，EPSG提供了一個更新的識別碼EPSG:3857，其正式名稱為「WGS 84 / Pseudo-Mercator」。該定義轉換為使用WGS84橢球面（EPSG:4326），而不是使用球面。

雖然這一投影與Google密切相關，但在EPSG的標準里，把微軟列為了「資訊來源」。

### 其他識別碼

其他使用過的識別碼有ESRI:102113、ESRI:102100和OSGEO:41001。

ESRI:102113對應於EPSG:3785，而ESRI:102100對應於EPSG:3857。

## WKT定義

該投影覆蓋了經度從−180°到180°，南北緯85.05°之間的地球。使用坐標參考系的知名文本表示（well-known text representation of coordinate reference systems，簡稱WKT），EPSG:3857定義如下：

```
PROJCS["WGS 84 / Pseudo-Mercator",
    GEOGCS["WGS 84",
        DATUM["WGS_1984",
            SPHEROID["WGS 84",6378137,298.257223563,
                AUTHORITY["EPSG","7030"]],
            AUTHORITY["EPSG","6326"]],
        PRIMEM["Greenwich",0,
            AUTHORITY["EPSG","8901"]],
        UNIT["degree",0.0174532925199433,
            AUTHORITY["EPSG","9122"]],
        AUTHORITY["EPSG","4326"]],
    PROJECTION["Mercator_1SP"],
    PARAMETER["central_meridian",0],
    PARAMETER["scale_factor",1],
    PARAMETER["false_easting",0],
    PARAMETER["false_northing",0],
    UNIT["metre",1,
        AUTHORITY["EPSG","9001"]],
    AXIS["X",EAST],
    AXIS["Y",NORTH],
    EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext  +no_defs"],
    AUTHORITY["EPSG","3857"]]
```