Как преобразовать quadkey карт bing в координаты меркатора - PullRequest
1 голос
/ 27 апреля 2011

Как преобразовать четырехугольный ключ карт Bing, например "03200320023", в координаты в системе координат Mercator Virtual Earth (EPSG 3857)?

У меня есть алгоритм для преобразования в координаты по широте и долготе(например, приведенный выше четырехугольный ключ означает «-84.19921875,33.7243385314941, -84.0234375,33.8704147338867»).Затем я мог бы преобразовать широту в долготу в координату Меркатора, но это пахнет слишком дорого в вычислительной мощности.

Результат виртуальной земли Меркатора, который я ищу, учитывая приведенный выше квадрик: "-9373014,4011415, -9353446,4030983 "

Еще немного контекста.Я использую карты Bing и добавляю слои, которые я обслуживаю, используя mapserver из IIS, используя fastcgi.Я в основном хочу преобразовать запрос quadkey bing maps для плиток 256x256 в wms-запрос mapserver в epsg 3857. Он работает в epsg 4326 (wgs84), а также при преобразовании из wgs84 в epsg 3857. Однако производительность не такова, как мне хотелось бы.к двухэтапному преобразованию.

Я также задал вопрос на gis.stackexchange.com , на который теперь дан ответ

1 Ответ

1 голос
/ 28 апреля 2011

Для полноты вот код 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...