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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容