我希望有人能给我提供一个方程来计算给定点周围 1 公里的正方形(X 从 a.aaa 到 b.bbb,Y 从 c.ccc 到 c.ccc),例如
lat = 53.38292839
和 lon = -6.1843984
?我还需要围绕一个点 2 公里、5 公里和 10 公里的正方形。
我尝试用谷歌搜索无济于事...现在已经是深夜了,希望在我深入研究三角函数之前有人可以快速修复...
我将在 Javascript 中运行所有这些,尽管任何语言都可以。
根据基本三角学,如果世界是一个完美的球体......
世界上任何地方的纬度都具有相同的直线距离,因为所有纬线的大小都相同。因此,1 度纬度等于地球周长的
1/360
,即 1/360
40,075
公里。
经线的长度取决于纬度。纬度 l 处的经线将为
cos(l) × 40,075
公里。经度的 1 度将是经度的 1/360
。
所以你可以从那开始倒推。假设您想要非常接近一平方公里的区域,您将需要
1 × (360/40075) ≈ 0.008983
度的纬度。
在您的示例纬度为
53.38292839
时,经度线将为 cos(53.38292839) × 40075 ≈ 23903.297
公里长。所以 1 公里是 1 × (360/23903.297) ≈ 0.015060
度。
实际上,地球并不是一个完美的球体,赤道处更厚。上面的内容为世界上大多数有用的区域提供了一个非常好的答案,但在两极附近很容易变得有点奇怪(其中长/纬度的矩形看起来不再像地球上的矩形)。例如,如果您在一根杆子上,则假设的经度线为
0
公里长。因此,您如何处理计算学位的需要取决于您想要这些数字的原因。
这是我笔记中的一些内容,可在带有十进制 GPS 的 Android 上使用。
经纬度: 纽约市 40N 47 73W 58 40.783333 73.966667
清洗直流 38N 53 77W 02 38.883333 77.033333
产量 = 209 英里!非常接近
距离(英里)(x) = 69.1 (lat2-lat1) 距离(英里)(y)= 53.0(长2 - 长1) 乌鸦飞 sqrt (x2 + y2) ... 呃!@
Delta(LAT) / 英里 = .014472 增量(长)/英里 = .018519
使用盒子作为近似值 寻找 100 英里(北纬 100 英里/南 100 英里,东经 100 英里/西 100 英里)内的某人 从 0,0 -14.472 / + 14.472 , -18.519 / 18.519
在给定中心的情况下生成 GPS 正方形的一种更简单的方法是使用间接 Vincenty 算法。此处的 Javascript 代码展示了如何执行此操作 http://www.movable-type.co.uk/scripts/latlong.html 。 使用圆形创建正方形并不难。正方形到每个点的距离相等。因此,给定中心点、距中心的距离,根据正方形的旋转将方位角从 0 或任何数字更改为 90 度或 PI/2 弧度。每次增加 90 度,您将在圆形空间中得到一个正方形。
我自己用它来生成给定距离的中心点周围的 GPS 点 .---. --/- --0-- -/-- .---.
10 km
= 从某个 0.08999
开始的 geopoint
半径。此计算仅基于纬度值,并且仅适用于具有 WGS84 投影的地理点。
如果您想要更准确的答案,您必须通过构建某种函数来计算它。但它仍然不能保证,因为人们甚至为错误的程度而争论。考虑海拔高度、是否墨卡托等因素
上面的值只是一个经验法则,所以不要将其用于关键应用程序。
GIS StackExchange,如何计算给定距离和纬度/经度的边界框,由澳大利亚开发者David 回答