确定多个点的质心

时间:2008-12-09 18:06:35

标签: math google-maps geometry geolocation

我正在编写一个我在python中编写的映射应用程序,我需要得到N个点的lat / lon质心。 假设我有两个位置

a.lat = 101
a.lon = 230

b.lat = 146
b.lon = 200

使用欧几里德公式获得两点的中心相当容易。我想要 能够做到超过两点。

从根本上说,我希望做一些像http://a.placebetween.us/这样的事情,在那里可以输入多个地址并找到一个对每个人都等距的地方。

6 个答案:

答案 0 :(得分:7)

查看下面链接的pdf文档。它解释了如何应用the plane figure algorithm that Bill the Lizard提及,但是在球体的表面上。

poster thumbnail and some details http://img51.imageshack.us/img51/4093/centroidspostersummary.jpg
来源:http://www.jennessent.com/arcgis/shapes_poster.htm
还有25 MB full-size PDF可供下载 信用转到mixdev以查找原始来源的链接,当然还有Jenness Enterprises提供的信息。注意:我与本资料的作者没有任何关系。

答案 1 :(得分:3)

添加到Andrew Rollings的回答。

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

Is the center of (0,359) and (0, 1) at (0,0) or (0,180)?

答案 2 :(得分:3)

如果你是平均角度并且必须在0/360之间处理它们,那么将每个值的sin和cos相加然后平均值= atan2(正弦之和,余弦之和)更安全 (注意你的atan2函数中的参数顺序)

答案 3 :(得分:1)

如果点形成plane figure,则数学非常简单。但是,不能保证一组纬度和经度都那么简单,因此可能首先需要找到convex hull点。

编辑:当eJames指出时,你必须对球体表面进行修正。我有理由假设(没有想到)这是理解的。 +1给他。

答案 4 :(得分:0)

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

Converting between 3-D Cartesian and ellipsoidal latitude, longitude and height coordinates

答案 5 :(得分:-2)

分别平均纬度和经度。