如何在 Python 的圆圈内包含地图上的多个坐标?

How can I include many coordinates on a map within a circle with Python?

我有一个坐标列表。我可以在地图上画一个圆圈来简单地覆盖它们吗?我正在考虑使用 folium 包并绘制一个以平均坐标为中心的圆,其半径为到最远点的距离。但是,事实证明 radius 与地图上的实际距离不对应,所以当我缩放时它不会相应改变 in/out.

import folium
import numpy as np
from geopy.distance import geodesic

points = [(39.9756783, 116.3308383),
          (39.9756649, 116.3308749),
          (39.97564, 116.3308749),
          (39.9756533, 116.3308583),
          (39.9756316, 116.3308299)]
center = (np.mean([a for a,b in points]), np.mean([b for a,b in points]))
MAP = folium.Map(location = list(center), zoom_start = 10)
folium.CircleMarker(location = list(center), 
                    radius = max([geodesic(center,point).meters for point in points]),
                    color = '#3186cc', fill = True, fill_color = '#3186cc'
                   ).add_to(MAP)
MAP

当列表太长无法精确定位每一对坐标时,我真的想粗略地说明它们属于的范围。

IIUC,您可以使用 Circle(),这让您有机会以米为单位指定半径(请注意,我将最大值乘以 10 以获得更大的圆)。

例如:

import folium
import numpy as np
from geopy.distance import geodesic

points = [(39.9756783, 116.3308383),
          (39.9756649, 116.3308749),
          (39.97564, 116.3308749),
          (39.9756533, 116.3308583),
          (39.9756316, 116.3308299)]
center = (np.mean([a for a,b in points]), np.mean([b for a,b in points]))
MAP = folium.Map(location = list(center), zoom_start = 10)

for p in points:
    folium.Marker(p).add_to(MAP)

folium.Circle(location = list(center),
                    radius = max([geodesic(center,point).meters for point in points])*10,
                    color = '#3186cc',
                    fill = True,
                    fill_color = '#3186cc').add_to(MAP)
MAP

放大你得到: