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

2021-06-06 23:42:30 字數 2104 閱讀 2706

在底層gis開發中,我們經常會碰到空間資料視覺化問題,當我們拿到地理資料之後,我們該怎麼把它展現在我們的計算機螢幕中呢,這或許是乙個比較簡單的問題。

我們知道,地理座標系是我們使用者自定義的座標系,而顯示在計算機螢幕上的座標是基於螢幕座標來繪製的,那麼改如何轉化呢?

首先,我們來熟悉幾個概念:

地理座標系,通常原點在左下角,x軸的方向是向右遞增,y軸的方向是向上遞增。

螢幕座標系,通常它的原點在左上角,x軸的方向向右遞增,y軸的方向是向下遞增的。正好與地理座標系相反。

第一種方法:

中心點配對法,將檢視的中心和地理空間的中心點匹配

,然後給定乙個地理座標根據該座標和視野中心點的偏移和比例尺來進行計算就可以獲得螢幕座標,反之也是如此;

關於這種方法,可以參考其他的資料。

其實這種方法也很簡單,像arcgis等gis軟體就是基於這種轉換方式進行的。其**如下:

地理座標轉螢幕座標

ogrpoint ptcenter = getmapcenter();		//地圖中心點

point pt;

pt.x = draw->m_screenwidth/2 + (long)((popoint->getx()-ptcenter.getx())*draw->m_scale+0.5);

pt.y = draw->m_screenheigh/2 - (long)((popoint->gety()-ptcenter.gety())*draw->m_scale+0.5);

return pt;

螢幕座標轉地理座標

ogrpoint ptcenter = getmapcenter();		//地圖中心點

point pt;

pt.x = draw->m_screenwidth/2 + (long)((popoint->getx()-ptcenter.getx())*draw->m_scale+0.5);

pt.y = draw->m_screenheigh/2 - (long)((popoint->gety()-ptcenter.gety())*draw->m_scale+0.5);

return pt;

下過如下圖所示:

第二種方法:利用相似比(完整顯示地圖)

通常情況下,我們取x和y方向比例因子較大的作為比例因子,即

double xscale = rect.width()/width;		//x方向的比例係數

double yscale = rect.height()/height; //y方向的比例係數

double scale = max(xscale,yscale);

從而地理座標轉換為螢幕座標的**如下:

pts[index].x = (int)((popoint->getx()-minx)*scale);

pts[index].y = (int)(rect.height()-(popoint->gety()-miny)*scale);

在gdi裝置描述表(device context,dc)包含了特定的顯示裝置的資訊、影象的顯示屬性及特定的顯示視窗等資訊,用gdi程式設計的第一步必須獲取當前的裝置描述表的控制代碼(hdc),然後將該控制代碼作為引數呼叫gdi提供的api函式。我們在繪圖時,通常是各個地理實體分別繪製,以線串為例:

//以下**是根據直線的方法繪製

for (int index = 0; index < numpoints - 1; index ++)

這只是在這方面的初步探索,還有就是現實效率不高,當元素特別多時,就顯得非常慢,在以後會逐步加入空間索引機制,加快圖形搜尋和顯示效率,下面是執行結果的截圖,

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

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

投影轉換 AE地理座標與投影座標轉換

是將wgs84地理座標轉換為wgs84utm投影座標,如果要轉換為西安80或北京54座標,則引數是 北京54座標 地理座標列舉值為 esrisrgeocstype.esrisrgeocs beijing1954 投影座標列舉值為 西安80座標 地理座標列舉值為 esrisrgeocs3type.es...

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

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