【问题标题】:How to convert Distance(miles) to degrees?如何将距离(英里)转换为度数?
【发布时间】:2012-12-29 22:24:24
【问题描述】:

我正在开发一个包含空间数据的应用程序。在这里,我需要找到从质心到一点的距离。可以知道如何在 Java 中将英里转换为度数吗?

【问题讨论】:

  • 在什么纬度?在地球上?
  • 是的。我需要知道如何在 Java 中将英里转换为度数。
  • 您可能会在 GIS 网站上找到可以在 java 中实现的算法 - gis.stackexchange.com
  • 如果您要查找以纬度/经度表示的两个质心之间的距离(以英里为单位?),那么您实际上是在寻找计算两个纬度/经度之间距离的公式职位,不是吗?
  • @Zoltan,我正在寻找将英里转换为度数的公式(在 Java 中)..

标签: java geometry gis


【解决方案1】:

dwight-degroff 的回答很好(谢谢,它帮助了我),但包含一个错误类型,这当然是非常不重要的。如果您想更正确(例如,您正在根据来自源的外部数据准备测试,带有许多小数位),那么它应该是

纬度:1 公里 = 1 度/110.574 公里

代替:

纬度:1 公里 = 1 度/110.54 公里

因此纬度是:

    Integer latTraveledMiles = 100;
    Double latTraveledKM = 100 * 0.621371;
    Double latTraveledDeg = (1 / 110.574) * latTraveledKM;

实际上,经度是 111.319 而不是 111.320,所以:

    Double currentLat = 74.0064;
    Integer longTraveledMiles = 100;
    Double longTraveledKM = 100 * 0.621371;
    Double longTraveledDeg = (1 / (111.319 * Math.cos(currentLat))) * longTraveledKM;

但是,这两种修正都可以忽略不计。

【讨论】:

    【解决方案2】:

    最终编辑:查看 Great Circle DistanceGeodesics 以发现您在这个问题中真正提出的问题的复杂性。诚然,这完全符合我对数学的熟悉程度。

    [出于历史原因留下原始建议。虽然文章可能对您有所帮助,但它们不会直接回答您的问题。]

    有关此问题的答案,请参阅https://stackoverflow.com/a/1253545/1964221

    纬度:1 度 = 110.54 公里

    经度:1 度 = 111.320*cos(纬度) 公里

    换个方向,我想知道我们是否可以这样做(我的代数生锈了):

    纬度:1 公里 = 1 度/110.54 公里
    经度:1 km = 1 deg / (111.320*cos(latitude) km)

    应用程序

    您的距离总是严格的东西向还是南北向?如果是这样,您应该可以说:

    Integer latTraveledMiles = 100;
    Double latTraveledKM = 100 * 0.621371;
    Double latTraveledDeg = (1 / 110.54) * latTraveledKM;
    

    Double currentLat = 74.0064;
    Integer longTraveledMiles = 100;
    Double longTraveledKM = 100 * 0.621371;
    Double longTraveledDeg = (1 / (111.320 * Math.cos(currentLat))) * longTraveledKM;
    

    您很可能需要知道南北和东西方向的距离(并将其带入“不直接”的领域。您可以查看Pythagorean Theorem。您知道三角形的“长边”(c^2),可以计算出经度(a^2)和纬度(b^2)。

    您应该能够应用我之前的代码 sn-ps 的部分内容来弄清楚
    c = sqrt(a^2 + b^2)。

    祝你好运。

    【讨论】:

      【解决方案3】:

      如果这真的是一个直截了当的问题,我们应该忽略纬度和经度,只看两点的半径之间的角度,使得它们之间的距离,沿着包含这两个点的大圆,是 m 英里。

      为了保持直截了当,我们应该假设地球是球形的,因此答案与位置无关。我使用的平均半径为 3,958.761 英里。

      一个弧度是 3,958.761 英里长的线的角度,因此 m 英里长的线的角度是 m/3,958.761 弧度。如果您想要以度为单位的角度,请使用 Math.toDegrees。

      【讨论】:

      • 根据给出的信息,将其视为抽象球面角而不是纬度/经度问题似乎是唯一的方法。
      【解决方案4】:

      用度数表示距离是不正确的方法,因为在地球上的所有位置上,度数所代表的距离并不相等,而且纬度和经度的表示方式也不同。

      示例: 赤道上的 1° 经度约为 70 英里,而在北极附近则为几英尺。

      纬度不会在地球表面发生变化,但是不沿着子午线或平行线的距离呢?您会代表哪些指标?

      【讨论】:

      • 感谢 Zoltan 的回复。我们有任何用于该转换的算法吗?英里到度数。
      • @RakeshGourineni 我认为您需要进一步定义问题。特别是,如果两点之间的线不是沿子午线或平行线,您想要什么结果。这会影响您的结果。
      • 我认为我的问题是直截了当的。将英里转换为度数。
      • @RakeshGourineni 不,你的问题甚至不是直接的。
      • 同意,这个问题和如何将里程兑换成美元一样有意义。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-18
      相关资源
      最近更新 更多