Determine the centroid of multiple points

不打扰是莪最后的温柔 提交于 2019-11-27 01:42:21

问题


I'm writing a mapping application that I am writing in python and I need to get the lat/lon centroid of N points. Say I have two locations

a.lat = 101
a.lon = 230

b.lat = 146
b.lon = 200

Getting the center of two points is fairly easy using a euclidean formula. I would like to be able to do it for more then two points.

Fundamentally I'm looking to do something like http://a.placebetween.us/ where one can enter multiple addresses and find a the spot that is equidistant for everyone.


回答1:


Have a look at the pdf document linked below. It explains how to apply the plane figure algorithm that Bill the Lizard mentions, but on the surface of a sphere.

poster thumbnail and some details http://img51.imageshack.us/img51/4093/centroidspostersummary.jpg
Source: http://www.jennessent.com/arcgis/shapes_poster.htm
There is also a 25 MB full-size PDF available for download.
Credit goes to mixdev for finding the link to the original source, and of course to Jenness Enterprises for making the information available. Note: I am in no way affiliated with the author of this material.




回答2:


Adding to Andrew Rollings' answer.

You will also need to make sure that if you have points on either side of the 0/360 longitude line that you are measuring in the "right direction"

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



回答3:


If you are averaging angles and have to deal with them crossing the 0/360 then it is safer to sum the sin and cos of each value and then Average = atan2(sum of sines,sum of cosines)
(be careful of the argument order in your atan2 function)




回答4:


The math is pretty simple if the points form a plane figure. There's no guarantee, however, that a set of latitudes and longitudes are that simple, so it may first be necessary to find the convex hull of the points.

EDIT: As eJames points out, you have to make corrections for the surface of a sphere. My fault for assuming (without thinking) that this was understood. +1 to him.




回答5:


The below PDF has a bit more detail than the poster from Jenness Enterprises. It also handles conversion in both directions and for a spheroid (such as the Earth) rather than a perfect sphere.

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




回答6:


Separately average the latitudes and longitudes.



来源:https://stackoverflow.com/questions/353684/determine-the-centroid-of-multiple-points

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!