2008-12-09 74 views
6

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

a.lat = 101 
a.lon = 230 

b.lat = 146 
b.lon = 200 

获得的两个点的中心用欧几里德公式是相当容易的。我想 能够做到更多,然后两点。

基本上我正在寻找类似http://a.placebetween.us/的地方,可以输入多个地址并找到每个人等距的地方。

回答

7

测量经度0/360线两侧有百分点看一看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

这是一个明显的改进。我最近在GIS方面做了很多工作,所以我只是假设这已经被理解了。在一般论坛中这是一个可怕的假设。 +1 – 2008-12-09 19:03:43

1

如果点形成一个plane figure,算术非常简单。但是,不能保证一套纬度和经度是如此简单,因此可能首先需要找到点的convex hull

编辑:正如eJames指出,你必须纠正一个球体的表面。我认为这是被理解的(没有想到)我的错。 +1给他。

3

添加到Andrew Rollings的答案。

您还需要确保,如果你对你在“正确的方向”

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

这是最主要的原因,我的应用程序从西半球完全分开对待东半球。例如,没有“美国的范围”,有“US-E”和“US-W”,我根据需要将它们结合起来。 – 2008-12-09 18:32:32

3

如果你平均的角度和必须处理他们穿越0/360那么它是安全的总结罪和每个值的COS,然后平均= ATAN2(正弦的总和,余弦的总和)
(请注意atan2函数中的参数顺序)

-2

分别平均纬度和经度。