GIS 中地理座標和螢幕座標的標準轉換方法

2021-06-23 04:42:01 字數 1593 閱讀 9466

在gis中,當你拿到乙個圖層的地理座標後,如果需要繪製到螢幕上,那麼不可避免的需要在地理座標和螢幕座標之間進行轉換,轉換的方法相信每乙個做gis的都會有自己的實現方法,本文描述的是和arcgis、wms、openlayers完全一致的座標轉換方法,當然這三個工具、標準、指令碼也是採用的相同的方法;

因為採用完全一致的座標轉換方法,因此在我自己實現的wms服務程式中提供的含透明通道的圖,可以完全和arcgis提供的圖在web客戶端進行精確的匹配;

現在來介紹座標轉換的原理,其實該原理很簡單,就是將檢視的中心點和視野的中心點進行配對,然後給定乙個地理座標根據該座標和視野中心點的偏移和比例尺來進行計算就可以獲得螢幕座標,反之亦然;

下面就是將視窗座標轉換為地理座標的**:

1

2

ptgeo.x = geo_center_.x + ( ptwnd.x - see_center_.x ) * resolution_ ;

ptgeo.y = geo_center_.y - ( ptwnd.y - see_center_.y ) * resolution_ ;

下面是將地理座標轉化為視窗座標的**:

1

2

ptwnd.x = see_center_.x + (long)( ( ptgeo.x - geo_center_.x ) / resolution_ + 0.5 );

ptwnd.y = see_center_.y - (long)( ( ptgeo.y - geo_center_.y ) / resolution_ + 0.5 );

在上面的**中,see_center_ 是螢幕座標的視窗中心、geo_center_ 是地理座標的視野中心,而 resolution_ 就是當前的比例尺;

然而最關鍵的是,當傳入的視野和視窗的比例不一致時,如何進行處理,標準的做法就是分別計算水平和垂直的比例尺,然後取其中較大的那個值作為比例尺,也就是說比例尺的調整向著地理視野更小的方向進行調整,參考如下的**:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

voidcoord_transform::reset_resolution( georect & extent , devrect & client )

在 wms 協議中,如果請求的大小和視野的寬高比不成比例時也是要求將較小的一邊增加,讓地理視野和的比例一致,然後進行繪製,最後一步將生成的進行不等比放縮到原始請求的大小,這是為了保證客戶端採用非矩形點陣的顯示裝置時能夠正常顯示地理圖;

地理 投影 座標與螢幕座標的轉換

剛接觸到這個東東,確實頭暈 什麼地理座標,投影座標,螢幕座標等等.哎.地理知識中學學過 都不知道咋學的 數學貌似n多年不用也都還給老師了 確實悲哀.唉.終於認真的研究了一下才算明白是怎麼回事了 其實不要管什麼地理座標,投影座標還是螢幕座標,搞的你是非要知道天文地理似的才能去動手去做這個東東 原理掌握...

OpenGL中的螢幕座標和世界座標的轉換

glint viewport 4 gldouble modelview 16 gldouble projection 16 glfloat winx,winy,winz gldouble posx,posy,posz glpushmatrix 變換要繪圖函式裡的順序一樣,否則座標轉換會產生錯誤 gl...

地理座標與螢幕座標轉換(VC )

在底層gis開發中,我們經常會碰到空間資料視覺化問題,當我們拿到地理資料之後,我們該怎麼把它展現在我們的計算機螢幕中呢,這或許是乙個比較簡單的問題。我們知道,地理座標系是我們使用者自定義的座標系,而顯示在計算機螢幕上的座標是基於螢幕座標來繪製的,那麼改如何轉化呢?首先,我們來熟悉幾個概念 地理座標系...