【问题标题】:How to convert a bing maps quadkey to mercator coordinates如何将 bing 地图四键转换为墨卡托坐标
【发布时间】:2011-04-27 14:04:08
【问题描述】:

如何将 bing 地图四键(例如“03200320023”)转换为墨卡托虚拟地球 (epsg 3857) 坐标系中的坐标?

我有一个算法可以转换为经纬度坐标(例如,上面的四键是“-84.19921875,33.7243385314941,-84.0234375,33.8704147338867”)。然后我可以将经纬度转换为墨卡托坐标,但这在处理能力上听起来太贵了。

鉴于上述四键,我正在寻找的墨卡托虚拟地球结果是:“-9373014,4011415,-9353446,4030983”

更多上下文。我正在使用 bing 地图并使用 fastcgi 从 IIS 中的 mapserver 添加我正在服务的图层。我基本上想将 256x256 瓷砖的 bing maps quadkey 请求转换为 epsg 3857 中的 mapserver wms 查询。它适用于 epsg 4326 (wgs84) 以及当我从 wgs84 转换为 epsg 3857 时。但是性能不是我想要的到两阶段转换。

我也在gis.stackexchange.com上问过这个问题,现在已经回答了

【问题讨论】:

  • 您的算法已经将其转换为墨卡托坐标系中的坐标。你有什么问题?
  • 算法将其转换为 wgs84 中的纬度 - 还是我弄错了?
  • 我已将问题编辑为墨卡托虚拟地球 (epsg 3857)
  • IMO mercantor 投影并不那么昂贵,你有从 Mercantor 转换为 quadkey 的算法吗?
  • 没有自动迁移的选项,但您可以考虑在GIS StackExchange.上询问

标签: algorithm gis


【解决方案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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-26
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多