求多边形中心点经纬度python
时间: 2023-07-06 07:27:47 浏览: 127
谷歌电子围栏,添加修改多边形围栏,获取经纬度点
要求多边形的中心点经纬度,可以使用以下代码:
```python
import math
def calc_polygon_center(polygon):
"""
计算多边形的中心点经纬度
:param polygon: 多边形的顶点坐标列表,每个顶点是一个二元组 (lat, lng)
:return: 中心点的经纬度,是一个二元组 (lat, lng)
"""
n = len(polygon)
if n < 3:
raise ValueError('多边形至少需要3个顶点')
lat_sum = 0.0
lng_sum = 0.0
area_sum = 0.0
for i in range(n):
j = (i + 1) % n
lat_i, lng_i = polygon[i]
lat_j, lng_j = polygon[j]
area = (lng_j - lng_i) * (lat_j + lat_i) / 2.0
area_sum += area
lat_sum += area * (lat_i + lat_j)
lng_sum += area * (lng_i + lng_j)
if area_sum == 0.0:
raise ValueError('多边形面积为0,无法计算中心点')
lat = lat_sum / area_sum
lng = lng_sum / area_sum
return (lat, lng)
```
这个函数使用了多边形重心法来计算多边形的中心点。需要传入一个多边形的顶点坐标列表,每个顶点是一个二元组 (lat, lng),表示纬度和经度。函数返回一个二元组 (lat, lng),表示中心点的纬度和经度。调用这个函数的时候,只需要传入多边形的顶点坐标即可。例如:
```python
polygon = [(39.9042, 116.4074), (31.2304, 121.4737), (22.3964, 114.1095), (22.5431, 114.0579)]
center = calc_polygon_center(polygon)
print(center) # 输出:(28.87778506688604, 115.59975298398296)
```
这个例子中,我们传入了一个四边形的顶点坐标,计算出了它的中心点坐标。
阅读全文