2011-04-27 71 views
1

如何將bing地圖四邊形關鍵字(例如「03200320023」)轉換爲mercator虛擬地球(epsg 3857)座標系中的座標?如何將bing地圖quadkey轉換爲mercator座標

我有一個算法轉換爲緯度經度座標(例如,上面的四元鍵來到「-84.19921875,33.7243385314941,-84.0234375,33.8704147338867」)。然後我可以將緯度經度轉換爲墨卡託座標,但是在處理能力方面,這樣的味道太貴了。

我找給上述quadkey墨卡託虛擬地球的結果是:「-9373014,4011415,-9353446,4030983」

一些更多的上下文。我正在使用bing地圖並添加我使用fastcgi從IIS使用mapserver提供的圖層。我基本上想要將256x256拼貼的bing地圖quadkey請求轉換爲epsg 3857中的mapserver wms查詢。它適用於epsg 4326(wgs84)以及我從wgs84轉換爲epsg 3857時。但是,性能並非我想要的到兩個階段的轉換。

我也問這個問題上gis.stackexchange.com它現在已經回答

+0

您的算法已經將其轉換爲mercator座標系中的座標。你的問題是什麼? – Bytemain 2011-04-27 14:09:47

+0

該算法將其轉換爲wgs84中的緯度 - 或者我誤會了嗎? – 2011-04-27 14:19:07

+0

我已經編輯了這個問題來說,mercator虛擬地球(epsg 3857) – 2011-04-27 14:26:25

回答

1

爲了完整起見,這裏是我用來解決這個問題的F#代碼。

let quadKeyToVE key = 
let offset,x,y = 
    key 
    |> Seq.fold (fun (offset,x,y) ch -> 
     let x',y' = 
      match ch with 
      | '0' -> x-offset,y+offset 
      | '1' -> x+offset,y+offset 
      | '2' -> x-offset,y-offset 
      | '3' -> x+offset,y-offset 
      | _ -> failwith "Invalid quadkey" 
     offset/2.0,x',y' 
     ) (InitialOffset,0.0,0.0) 

let offset = offset * 2.0 
let west = x - offset 
let north = y + offset 
let east = x + offset 
let south = y - offset 
west,south,east,north 
相關問題