4

場所(lat、lng)が与えられた場合、正距方位図法でその座標を取得したいと思います。式はここで説明されています。

以下は、Webページのスクリーンショットです。 数式

そのページの終わりに、それは述べています c

任意の場所(lat [-Pi / 2、+ Pi / 2]、lng [0、+ 2Pi))、および投影の中心(latCenter、lngCenter)が与えられたように見えますが、その座標(x、y)を計算できます。 )マップ内で、マップ半径が指定されていないため、xとyの値は[-1、+ 1]または[-Pi、+Pi]の範囲になります。

私の質問は、式のcは何ですか?(x、y)から計算された値の場合、(x、y)の計算にどのように使用できますか?

誰かが私がこれらの式を理解するのを手伝ってもらえますか?

4

2 に答える 2

4

c式4を使用して、緯度/経度からx、yに投影する場合の計算を行います。式7は、逆数を計算するためのものです。つまり、x、yからlat/longになります。あなたの目的のために、地図を作ることは、方程式7を無視してください。

cは、投影の中心(phi0、lambda0)から別の点(phi、lambda)までの大円の弧によって地球の中心でなす角です。

于 2012-08-14T04:48:05.293 に答える
1

ここで使用しているプログラミング言語は述べていないので、最近のブログ投稿からのF#での実装です

open System
module AzimuthalEquidistantProjection =

    let inline degToRad d = 0.0174532925199433 * d; // (1.0/180.0 * Math.PI) * d

    let project centerlon centerlat lon lat =
        // http://mathworld.wolfram.com/AzimuthalEquidistantProjection.html
        // http://www.radicalcartography.net/?projectionref
        let t:float = degToRad lat
        let l:float = degToRad lon
        let t1 = degToRad centerlat // latitude center of projection
        let l0 = degToRad centerlon // longitude center of projection
        let c = Math.Acos ((sin t1) * (sin t) + (cos t1) * (cos t) * (cos (l-l0)))
        let k = c / (sin c)
        let x = k * (cos t) * (sin (l-l0))
        let y = k * (cos t1) * (sin t) - (sin t1) * (cos t) * (cos (l-l0))
        (x, y)

その他のバージョン(測定単位付きのF#、PythonおよびJulia)

于 2014-02-10T14:17:30.053 に答える