Python 输入多个经纬度坐标,找出中心点
来源:互联网 发布:亚欧铁路知乎 编辑:程序博客网 时间:2024/05/24 01:51
根据工作需要,将多个坐标点的中心点找出,在stackoverflow中发现了一个解决方法,也有人提供了Python版本,但运行之后的结果却是几个带负号的小于1的小数,再观察其他版本的例子时发现需要将经纬度进行转化,将角度化为弧度就需用角度乘以π/180,反之就除以(π/180),所以在C#版本中就有
//角度转弧度var latitude = geoCoordinate.Latitude * Math.PI / 180;var longitude = geoCoordinate.Longitude * Math.PI / 180;....
//弧度转角度return new GeoCoordinate(centralLatitude * 180 / Math.PI, centralLongitude * 180 / Math.PI);
而在Python中就有角度弧度转化的函数 radians()方法:转换角度为弧度的 degrees()方法:从弧度转换到角度
所以Python版本的代码应如下,其中输入为经纬度的list,例如geolocations = ((lat1,lon1), (lat2,lon2),),输出则为中心点的经纬度(center_lon,center_lat)
#-*- coding: UTF-8 -*-from math import cos, sin, atan2, sqrt, pi ,radians, degreesdef center_geolocation(geolocations): x = 0 y = 0 z = 0 lenth = 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 / lenth) y = float(y / lenth) z = float(z / lenth) return (degrees(atan2(y, x)), degrees(atan2(z, sqrt(x * x + y * y))))if __name__ == '__main__': locations = [[116.568627,39.994879],[116.564791,39.990511],[116.575012,39.984311]] print center_geolocation(locations)参考链接
http://stackoverflow.com/questions/6671183/calculate-the-center-point-of-multiple-latitude-longitude-coordinate-pairs
2 0
- Python 输入多个经纬度坐标,找出中心点
- android 获取地图中心点的经纬度坐标
- 根据输入的地点坐标计算中心点
- 找出多边形的中心点
- python pymongo 经纬度坐标距离计算
- Polygon获取中心点坐标
- 找出输入中的一个或多个匹配的字符串
- 求多点的中心点坐标
- 求多点的中心点坐标
- 计算多个点的中心点坐标
- 获取2个经纬度坐标之间的距离
- 百度地图获取二个经纬度坐标间的距离
- 图吧地图:①得到地图上某个位置的经纬度;②显示多个坐标点;③动态显示多个坐标点;
- Python爬取全国主要城市经纬度坐标
- 输入5个数字,找出最大公约数
- iOS 获取地图视图中心点经纬度
- Python找出多个连续的空闲端口
- Python期末考试-中心点问题
- 第7节-最大间隔分类和对偶问题
- [区块链]拜占庭问题之我见
- ocaml学习随笔-1
- 1-jdbc程序
- Python常用库
- Python 输入多个经纬度坐标,找出中心点
- Scala基础3
- 7. reverse integer
- [Audacity][编译][步骤一]win10 vs2015 编译环境准备
- WSO2 ESB介绍
- P1462 通往奥格瑞玛的道路
- 模拟实现字符串操作函数
- 洛谷P3038 [USACO11DEC]牧草种植Grass Planting
- Mysql+linux安装日志.doc