如何在 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
放大你得到:
我有一个坐标列表。我可以在地图上画一个圆圈来简单地覆盖它们吗?我正在考虑使用 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
放大你得到: