OpenLayers 投影的概念

投影,地球大家都知道不是正圓形的球體,他是一個不規則的橢圓體,所以如果我們把把展開在桌面上,發現地圖都會和實際有出入。

所以人們發明了各種各樣的方式來縮小失真的程度,這種方式就是投影

那到底該如何選擇投影呢

主要要考慮這三種情況   面積,距離,形狀。我們要根據自身的需求,來使用投影。因爲我們的瀏覽地圖的絕大部分需求是,量算面積和距離,和觀察某個地區在哪,這就要我們能正確的區分每個圖形代表的區域。

什麼是球面墨卡託投影?

球面墨卡託投影在OpenLayerscommunity版本和其他OSGcommunity版本中都有使用。GoogleMaps,微軟VirtualEarth,YahooMaps和其他商業地圖API的提供者都使用該投影。該投影是將地球當作一個球體而不是橢球體,然後應用墨卡託投影的方法,將地圖投影到一個地圖平面上。

爲了正確的在商業地圖API上疊加地圖數據,就必須使用該投影。最基本的是在商業地圖API上顯示柵格瓦片地圖——例如TMS,WMS以及其他類似的瓦片。

爲了更好的使用商業地圖API,基於GoogleMaps的數據生成人員也需要使用該投影。最基本的例如OpenStreetMap,柵格地圖瓦片都是使用的“球面墨卡託投影”。

GIS中,通常用“EPSG”的代碼來表示一種地圖投影。最常用的“EPSG:4326”,在地圖上將經緯度直接當作X/Y對待。球面墨卡託投影在官方指定的代碼爲EPSG:3785。但是在官方發佈之前,很多軟件已經使用了EPSG:900931代碼來表示該投影,OpenLayers仍然使用這個非官方的代碼。看到“EPSG:4326”字符,就是經緯度座標的描述,看到“EPSG:900931”則是用“米”做單位的x/y座標的描述。

如果我們不指定特別的投影,OpenLayers的默認投影爲

ESPG:4326

MaxExtent:-180,-90,180,90

MaxResolution:1.40625

OpenLayers中的投影對象

my_prj = new OpenLayers.Projection('EPSG:4326',{});

第一個參數爲  EPSG值

第二參數爲可選對象

 

投影類的方法

getCode                獲取投影code

getUnits                獲取投影的單位,度or 米,這取決於我們使用的投影

addTransform(from,to,method)       座標系轉換

transform(point,source,destination)       

座標轉換

這裏我們將使用Proj4js

我們利用以前的例子,

創建兩個投影對象

var proj_4326 = new OpenLayers.Projection('EPSG:4326');

var proj_900913 = new OpenLayers.Projection('EPSG:900913'); 

再創建一個點

var  Point_to_transform=newOpenLayers.LonLat(-79,42);

開始轉換

Point_to_transform.transform(proj_4326,proj_900913);

打印結果

console.log(point_to_transform);

The Proj4js library

這是一個座標系轉換的類庫,OpenLayer只支持EPSG:4326到EPSG:900913之間的轉換

但這個類庫,可以幫助OpenLayers完成大多數的座標系之間的轉換。

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章