python——输入多个经纬度坐标,找出中心点

简介

根据多个经纬度坐标计算中心点;在stackoverflow中发现了一个解决方法。需要将经纬度进行转化,将角度化为弧度就需用角度乘以π/180,反之就除以(π/180)。
在Python提供了角度弧度转化的函数 :
radians():转换角度为弧度的 。
degrees()方法:从弧度转换到角度。

JAVA实现方式: http://www.jianshu.com/p/c566903e44d0

代码

# -*- coding: utf-8 -*-
# @Time    : 2017/12/8 
# @Author  : fc.w
# @File    : center_point_of_coordinates.py
from math import cos, sin, atan2, sqrt, radians, degrees


class CenterPointFromListOfCoordinates:

    def center_geolocation(self, geolocations):
        """
        输入多个经纬度坐标,找出中心点
        :param geolocations: 集合
        :return: 
        """
        x = 0
        y = 0
        z = 0
        length = len(geolocations)
        for lon, lat in geolocations:
            lon = radians(float(lon))
            lat = radians(float(lat))
            x += cos(lat) * cos(lon)
            y += cos(lat) * sin(lon)
            z += sin(lat)

        x = float(x / length)
        y = float(y / length)
        z = float(z / length)

        return (degrees(atan2(y, x)), degrees(atan2(z, sqrt(x * x + y * y))))

if __name__ == '__main__':
    centerObj = CenterPointFromListOfCoordinates()
    list = [(112.977324, 28.178376), (112.975782, 28.172258)]
    print(centerObj .center_geolocation(list))

参考文献

[1]From stackoverflow

你可能感兴趣的:(python——输入多个经纬度坐标,找出中心点)