2012-11-15 115 views
0

我有兩個向量點,當散點圖繪製時給我以下路徑:(每個顏色只是路徑的一個不同部分 - 一些線段是直的並且構建了一些線段通過採取一些半徑的圓的一定弧長)將線性座標系框架映射到Google地球的球形座標系

s

我想然後抓住這些點並畫出他們使用谷歌地球的JavaScript API爲使地球的表面上:

// Create the placemark 
var lineStringPlacemark = ge.createPlacemark(''); 

// Create the LineString; set it to extend down to the ground 
// and set the altitude mode 
var lineString = ge.createLineString(''); 

lineStringPlacemark.setGeometry(lineString); 
lineString.setExtrude(true); 
lineString.setAltitudeMode(ge.ALTITUDE_RELATIVE_TO_GROUND); 

// Add LineString points 
lineString.getCoordinates().pushLatLngAlt(200, 300); 
lineString.getCoordinates().pushLatLngAlt(200.50505051, 300); 

... all points ... 

ge.getFeatures().appendChild(lineStringPlacemark); 

所以我基本上把它們當作經度和緯度 - 並不介意這個時候地球上出現的路徑。當我這樣做時,我會得到一條循環的路徑,我認爲這是因爲地球是球形的。

enter image description here

我認爲谷歌地球處理任何類型的一行投影到地球表面!我可以採取什麼樣的轉變來阻止/實現期望的路徑?原始點來自x = [0,500]和y = [0,500]的座標框架,我試圖獲得該框架中的點,到達地球上的經度和緯度!

+0

這渲染看起來是正確的。你到底期待什麼?你希望結果如何?嘗試將你想要的東西繪製成像乒乓球那樣的球形表面,並從那裏計算出不同部分的角度。有可能,你只是在全球範圍內把它拉得太大。簡單地縮小它可能會產生更接近你期望的結果。請記住,在一個球體上,平行線總是相交兩次。 – slebetman

+0

我該如何執行縮放?原始點來自x = [0,500]和y = [0,500]的座標,並且我試圖獲取該幀中的點,以緯度和長度 – Diego

+0

第一次嘗試將所有座標數減半。所以x/2,y/2映射到緯度經度。那麼如果這太大,嘗試將它分到四分之一,如果它太小,請嘗試乘以0.55和0.99之間的數字。試用比例因子,直到得到你想要的結果。 – slebetman

回答

0

問題在於經度和緯度都被包裹着。

緯度表示爲赤道北部或南部的度數(0度)。數值範圍從-90度到90度。

經度是相對於本初子午線的角度距離,以度爲單位。子午線以西的範圍從-180到0度。子午線以東的值從0到180度。

您遇到的問題是給定範圍[-90,90]和[-180.180]之外的值被包裝。這意味着例如+150的緯度實際上在-60處繪製。 +500的經度將在+140處繪製。

爲了保持圖形在框架內,您必須將緯度限制在[-90,90]範圍內(北極和南極之間),您的經度需要限制爲相同的數量,因爲您只能看到一半地球,[-90,90]。

要實現由5.6值這個簡單劃分所有的角度 - 這將在框架內保持你的行500/5.6 = 89.28