如何将 bing 地图四键转换为墨卡托坐标
Posted
技术标签:
【中文标题】如何将 bing 地图四键转换为墨卡托坐标【英文标题】:How to convert a bing maps quadkey to mercator coordinates 【发布时间】: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.上询问 【参考方案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
【讨论】:
以上是关于如何将 bing 地图四键转换为墨卡托坐标的主要内容,如果未能解决你的问题,请参考以下文章
墨卡托投影地理坐标系地面分辨率地图比例尺Bing Maps Tile System