1. 前言
需要了解的兩個(gè)概念:
地理坐標(biāo)系統(tǒng):GIS 描述顯示世界中的對(duì)象是通過對(duì)象的空間位置、屬性、時(shí)間來描述,而空間中的位置就是通過建立地理坐標(biāo)系,也就是經(jīng)緯網(wǎng)來進(jìn)行描述,形成的坐標(biāo)系統(tǒng)我們稱為地理坐標(biāo)系統(tǒng)。
投影坐標(biāo)系統(tǒng):我們的地球是不規(guī)則的球體,初中地理上我們都學(xué)過“兩極稍扁,赤道略鼓的不規(guī)則球體”來描述地球,所以是不能夠?qū)⒌厍蛎嫔系膬?nèi)容展示在平面上,我們必須要進(jìn)行坐標(biāo)變換,需要找到一種合理的地圖投影的方法來進(jìn)行曲面轉(zhuǎn)平面,建立一個(gè)從球面轉(zhuǎn)平面的函數(shù)關(guān)系,使地球上任意一點(diǎn)都可以在平面上所對(duì)應(yīng),這類通過投影變換后的坐標(biāo)系統(tǒng)稱為投影坐標(biāo)系統(tǒng),比如我們經(jīng)常聽到的 墨卡托、高斯克里格投影等。
2. 空間參考系統(tǒng)類
ArcGIS API?中提供"esri/SpatialReference"?類來描述空間坐標(biāo)系統(tǒng),該類最簡(jiǎn)單的實(shí)例化方式是使用由歐洲石油調(diào)查組織定義的ID?(又稱為?WKID)作為參數(shù),代碼如下:
require(["esri/SpatialReference",...],function(SpatialReference,...) {? var sr = new SpatialReference(4326);...});
上面實(shí)例化了一個(gè)?SpatialReference?對(duì)象,作用就是定義了一個(gè)"GCS_WGS_1984"?地理坐標(biāo)系統(tǒng)。其中4326?就是我們前面所說的?ID?,有關(guān)支持的空間參考的列表,可以參閱投影坐標(biāo)系統(tǒng)和地理坐標(biāo)系統(tǒng)。?
這些空間參考通常用字符串格式定義各種參數(shù),例如前面所說的"GCS_WGS_1984"?地理坐標(biāo)系統(tǒng),他的定義字符串如下:
地理坐標(biāo)系的名稱、大地基準(zhǔn)面(DATUM)、橢球體(SPHEROID)、本初子午線(PRIMEM)、單位(UNIT)
GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]]
投影坐標(biāo)系統(tǒng)的字符串格式除了包含地理坐標(biāo)系統(tǒng)要求的信息外,還包含了投影的參數(shù)信息。例如下面是ID?號(hào)為102113的WGS_1984_Web_Mercator?的投影的字符串信息:
PROJCS["WGS_1984_Web_Mercator",GEOGCS["GCS_WGS_1984_Major_Auxiliary_Sphere",DATUM["D_WGS_1984_Major_Auxiliary_Sphere",SPHEROID["WGS_1984_Major_Auxiliary_Sphere",6378137.0,0.0]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Mercator"],PARAMETER["False_Easting",0.0],PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",0.0],PARAMETER["Standard_Parallel_1",0.0],UNIT["Meter",1.0]]
可以看到上面定義橢球體時(shí),第二個(gè)參數(shù)為0,這也就是它與常規(guī)墨卡托投影的主要區(qū)別,把地球模擬為球體而非橢球體。這個(gè)只是為了計(jì)算方面簡(jiǎn)單,而它所造成的精度上的差別在0.33%?之內(nèi)。當(dāng)比例尺越大,他的誤差可以忽略,它也是WebGIS常用的坐標(biāo)系統(tǒng)。?
我們可以仿照上面的方式,自定義一種空間空間參考系統(tǒng)字符串,然后用該字符串作為參數(shù)來實(shí)例化一個(gè)自定義的空間參考系統(tǒng)。?
如果在實(shí)例化地圖類的對(duì)象時(shí),指定了投影(通過extent?的spatialReference?屬性),那么需要確保所有的圖層能使用該投影進(jìn)行繪制,對(duì)于切片圖層,必須要求其投影與地圖的投影一致,對(duì)于動(dòng)態(tài)圖層,則需要進(jìn)行相應(yīng)的投影轉(zhuǎn)換,從而影響了服務(wù)器的響應(yīng)效率。
3. 例子
下面的例子實(shí)現(xiàn)上面所說的切片圖層,動(dòng)態(tài)圖層的投影,代碼如下:
對(duì)于使用地理坐標(biāo)系統(tǒng)的地圖,也同樣要求切片圖層的空間參考與地圖的空間參考一致,對(duì)于動(dòng)態(tài)圖層則沒有這個(gè)要求。
4. 實(shí)現(xiàn)效果
效果展示:?
原文鏈接;
歡迎關(guān)注我的博客:傳送門