【问题标题】:How to calculate the radius with the given North and East values c#如何用给定的北和东值计算半径c#
【发布时间】:2012-01-20 16:26:05
【问题描述】:

非常简单的问题,如果我有北和东的值,我如何使用 c# 计算半径?

例如我有East: 534497 North: 168016。现在如何计算以英里或公里为单位的半径。

编辑1: 感谢正面和负面的支持。我不知道如何计算半径或这个地理灭绝区域等,我在这里发布了我的问题,因为我被分配了一项任务来处理,因为这是我们的应用程序要求之一。我们有英国地址数据库,我们有他们的东和北格式坐标,我们在我们的应用程序中使用 MapPoint,我们允许用户在地图上选择某个区域,并根据我们需要计算半径的选择。

这就是我所知道的。如果您需要更多信息,请询问。

【问题讨论】:

  • 您的坐标代表一个点。半径是原点和点之间的一段。你的坐标系的原点是什么?
  • 你的意思是你想知道一个点和另一个点之间的距离 534497 单位以东和 168016 单位以北吗?他们在什么单位?这是在平面上还是在距离曲率足够远的地理点上?

标签: c# latitude-longitude


【解决方案1】:

使用勾股定理。你有两条边,你需要对角线。

【讨论】:

  • 勾股定理不适用于球体上足够大的距离。
【解决方案2】:

我认为这个问题甚至不是一个有效的问题。如果你想知道两点之间的距离(纬度/经度),我使用这样的方法:

    public static double Distance(Position pos1, Position pos2, DistanceType type)
    {
        double R = (type == DistanceType.Miles) ? 3960 : 6371;
        double dLat = toRadian(pos2.Latitude - pos1.Latitude);
        double dLon = toRadian(pos2.Longitude - pos1.Longitude);
        double a = Math.Sin(dLat / 2) * Math.Sin(dLat / 2) +
        Math.Cos(toRadian(pos1.Latitude)) * Math.Cos(toRadian(pos2.Latitude)) *
        Math.Sin(dLon / 2) * Math.Sin(dLon / 2);
        double c = 2 * Math.Asin(Math.Min(1, Math.Sqrt(a)));
        double d = R * c;
        return d;
    }

Position 对象是包含Latitude 和Longitude 类型的double 属性的对象。

【讨论】:

    猜你喜欢
    • 2013-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-13
    • 2023-04-06
    • 1970-01-01
    • 1970-01-01
    • 2016-08-05
    相关资源
    最近更新 更多