首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方位角等距投影公式

方位角等距投影公式
EN

Stack Overflow用户
提问于 2012-08-14 04:30:59
回答 2查看 2.8K关注 0票数 4

给定一个位置(lat,lng),我想在方位等距投影中得到它的坐标。这些公式被解释为这里

下面是网页的截图。

在那一页的末尾,它说

在给定任何位置(lat -Pi/2,+Pi/2,lng [0,+2pi)和投影中心(latCenter,lngCenter)的情况下,我可以计算出它在地图中的坐标(x,y),由于没有提供地图半径,x和y的值将在-1,+1或-Pi,+Pi的范围内。

我的问题是,公式中的c是什么?如果它是从(x,y)中计算出来的值,那么如何使用它来计算(x,y)?

有人能帮我理解这些公式吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-14 04:48:05

当投影从lat/long到x时,使用等式4计算c,方程7用于计算逆,即从x,y到lat/long。为了你的目的,制作一张地图,忽略等式7。

c是从投影中心(phi0,lambda0)到另一个点(phi,lambda)的大圆弧在地球中心的角。

票数 4
EN

Stack Overflow用户

发布于 2014-02-10 14:17:30

由于您没有说明您正在使用的编程语言,这里是最近的一个F#中的一个实现。

代码语言:javascript
复制
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)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11945814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档