6

我正在编写一个用 python 编写的映射应用程序,我需要获取 N 个点的纬度/经度质心。假设我有两个位置

a.lat = 101
a.lon = 230

b.lat = 146
b.lon = 200

使用欧几里得公式很容易获得两点的中心。我希望能够做到两点以上。

从根本上说,我想做一些类似http://a.placebetween.us/的事情,一个人可以输入多个地址并找到一个对每个人都等距的地点。

4

6 回答 6

7

看看下面链接的 pdf 文档。它解释了如何应用Bill the Lizard提到的平面图形算法,但在球体的表面上。

海报缩略图和一些细节 http://img51.imageshack.us/img51/4093/centroidspostersummary.jpg
来源: http: //www.jennessent.com/arcgis/shapes_poster.htm
还有一个25 MB 全尺寸 PDF可用下载。感谢 mixdev
找到原始来源的链接,当然还有 Jenness Enterprises 提供的信息。注意:我与本材料的作者没有任何关系。

于 2008-12-09T18:44:20.840 回答
3

添加到安德鲁罗林斯的答案。

您还需要确保如果您在 0/360 经线的任一侧有点,您正在“正确的方向”测量

Is the center of (0,359) and (0, 1) at (0,0) or (0,180)?
于 2008-12-09T18:20:18.407 回答
3

如果您正在平均角度并且必须处理它们穿过 0/360,那么将每个值的 sin 和 cos 相加然后 Average = atan2(sum of sines,sum of cosine) 会更安全
(注意参数顺序在您的 atan2 函数中)

于 2008-12-09T18:56:24.667 回答
1

如果这些点形成一个平面图形,则数学非常简单。但是,不能保证一组经纬度就这么简单,因此可能首先需要找到这些点的凸包

编辑:正如eJames指出的那样,您必须对球体的表面进行校正。我的错是假设(不假思索地)这是被理解的。给他+1。

于 2008-12-09T18:17:21.127 回答
0

下面的 PDF 比 Jenness Enterprises 的海报更详细。它还处理两个方向的转换以及球体(例如地球)而不是完美球体的转换。

在 3-D 笛卡尔和椭球纬度、经度和高度坐标之间转换

于 2011-11-11T21:38:11.110 回答
-2

分别平均纬度和经度。

于 2008-12-09T20:34:36.467 回答