【问题标题】:Given a lat/lng coordinate, calculate the min and max lat/lng values for a 10 km area给定一个纬度/经度坐标,计算 10 公里区域的最小和最大纬度/经度值
【发布时间】:2012-05-01 13:38:16
【问题描述】:

假设我有一个 lat lng 坐标,我想把它放在一个 10 公里宽的正方形的中心,然后得到最小 lat/lng 和最大 lat/lng。

有没有一种已经存在的简单方法来做到这一点?

【问题讨论】:

  • 您需要多精确的坐标 - 足以显示或完整的 GIS 内容?
  • 它不需要非常精确 - 如果它偏离一两公里就可以了。

标签: google-maps latitude-longitude


【解决方案1】:

如果不需要精确,这很容易:

对于纬度,1 公里是 0.009 度(遵循米的原始定义)。由于您的正方形在中心周围 5 公里,因此您只需从中心点加减 0.045 度即可。

对于经度,稍微复杂一些:将上面的值除以纬度的余弦。

在代码中:

lat_min = lat_center - 0.045;
lat_max = lat_center + 0.045;
long_min = long_center - (0.045 / Math.cos(lat_center*Math.PI/180);
long_max = long_center + (0.045 / Math.cos(lat_center*Math.PI/180);

(将度数转换为弧度需要Math.PI/180)。

注意:不能在两极附近工作。

【讨论】:

    【解决方案2】:

    正方形的方向如何?与赤道平行?如果是这样,那么只需从您的纬度/经度进行 45 度、5 公里 * sqrt(2) 距离的方位角即可获得右上角。与左下角类似,使用 225 度的方位。

    在http://www.movable-type.co.uk/scripts/latlong.html查看给定距离和方位角的目标点http://www.movable-type.co.uk/scripts/latlong.html

    【讨论】:

    • 你的意思是 10 * sqrt(2) 距离?是的,这就是我在评论中关于他需要这个有多准确的意思。在实践中,虽然实际的最大/最小纬度/经度在每个角落都会有所不同 - 最大经度值实际上是方位角 135,但如果你将它近似为一个正方形而不是为了显示它可能什么都没有.
    • 技术上,如果正方形是 10 公里宽,它应该是 5 * sqrt(2)。如果您想要其他角,只需将上面的轴承添加 90 度即可。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 2014-12-16
    • 1970-01-01
    • 2017-04-05
    • 1970-01-01
    • 2017-08-18
    相关资源
    最近更新 更多