1. 程式人生 > >Web墨卡託投影座標系

Web墨卡託投影座標系

Web墨卡託投影座標系

以整個世界範圍,赤道作為標準緯線,本初子午線作為中央經線,兩者交點為座標原點,向東向北為正,向西向南為負。

X軸:由於赤道半徑為6378137米,則赤道周長為2*PI*r = 2*20037508.3427892,因此X軸的取值範圍:[-20037508.3427892,20037508.3427892]。

Y軸:由墨卡託投影的公式可知,同時上圖也有示意,當緯度φ接近兩極,即90°時,y值趨向於無窮。

這是那些“懶惰的工程師”就把Y軸的取值範圍也限定在[-20037508.3427892,20037508.3427892]之間,搞個正方形。

眾所周知,事先切好靜態圖片,提高訪問效率云云。俺只是告訴你為什麼會是這樣子。因此在投影座標系(米)下的範圍是:最小(-20037508.3427892, -20037508.3427892 )到最大 (20037508.3427892, 20037508.3427892)。

//經緯度轉Wev墨卡託
dvec3 CMathEngine::lonLat2WebMercator(dvec3  lonLat)
{
    dvec3  mercator;
    double x = lonLat.x *20037508.34/180;
    double y = log(tan((90+lonLat.y)*PI/360))/(PI/180);
    y = y *20037508.34/180;
    mercator.x = x;
    mercator.y = y;
    return mercator ;
}
//Web墨卡託轉經緯度
dvec3 CMathEngine::WebMercator2lonLat( dvec3   mercator )
{
    dvec3 lonLat;
    double x = mercator.x/20037508.34*180;
    double y = mercator.y/20037508.34*180;
    y= 180/PI*(2*atan(exp(y*PI/180))-PI/2);
    lonLat.x = x;
    lonLat.y = y;
    return lonLat;
}

經緯度

地球是一個橢球,Datum是一組用於描述這個橢球的資料集合。最常用的一個Datum是WGS84(World Geodetic System 1984),它的主要引數有:

  • 座標系的原點是地球質心(center of mass);
  • 子午線(meridian),即零度經線,位於格林威治子午線Royal Observatory所在緯度往東102.5米所對應的的經線圈;
  • 橢球截面長軸為a=6378137米;
  • 橢圓截面短軸為b=6356752.3142米,可選引數;
  • 扁平比例(flattening)f=(a−b)/a=1/298.257223563;
  • geoid,海平面,用於定義高度,本文從略。

通過以上引數設定,我們才能對地球上的任意一個位置用經度、緯度、高度三個變數進行描述。所以當我們獲取一組經緯度資訊時,首先要弄明白這組資訊對應的Datum。

投影

地圖是顯示在平面上的,因此需要將球面座標轉換為平面座標,這個轉換過程稱為投影。最常見的投影是墨卡託(Mercator)投影,它具有等角性質,即球體上的兩點之間的角度方位與平面上的兩點之間的角度方位保持不變,因此特別適合用於導航。

Web墨卡託投影(又稱球體墨卡託投影)是墨卡託投影的變種,它接收的輸入是Datum為WGS84的經緯度,但在投影時不再把地球當做橢球而當做半徑為6378137米的標準球體,以簡化計算。

Web墨卡託投影有兩個相關的投影標準,經常搞混:

  • EPSG4326:Web墨卡託投影后的平面地圖,但仍然使用WGS84的經度、緯度表示座標;
  • EPSG3857:Web墨卡託投影后的平面地圖,座標單位為米。