algorithm - 如何将必应 map 四键转换为墨卡托坐标

标签 algorithm gis

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

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

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

更多上下文。我正在使用 bing map 并使用 fastcgi 从 IIS 使用 mapserver 添加我正在服务的图层。我基本上想将 256x256 瓦片的 bing map 四键请求转换为 epsg 3857 中的 mapserver wms 查询。它在 epsg 4326 (wgs84) 中工作,当我从 wgs84 转换为 epsg 3857 时也能工作。但是性能不是我想要的,因为到两阶段转换。

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

最佳答案

为了完整性,这里是我用来解决这个问题的 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

关于algorithm - 如何将必应 map 四键转换为墨卡托坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5805394/

相关文章:

c# - C#中的循环左旋转算法

algorithm - Scala 中用于链表链接的尾递归解决方案

python - 大范围图像拼接

java - WorldWind Java Google Earth Like Zoom

algorithm - 为什么 "="用于表示算法的时间复杂度而不是 "∈"?

algorithm - BruteForceMedian 算法似乎具有二次效率。 (为什么?)

java - 优化数组的分区

google-maps - 在谷歌地图上覆盖 ESRI shapefile 的最佳方法?

r - 如何在 R 中读取 .HGT 文件

php - 寻找 Jenks 优化——数据分类