我正在编写一个我在python中编写的映射应用程序,我需要得到N个点的lat / lon质心。 假设我有两个位置
a.lat = 101
a.lon = 230
b.lat = 146
b.lon = 200
使用欧几里德公式获得两点的中心相当容易。我想要 能够做到超过两点。
从根本上说,我希望做一些像http://a.placebetween.us/这样的事情,在那里可以输入多个地址并找到一个对每个人都等距的地方。
答案 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)
分别平均纬度和经度。