我上以下课。
class PlotOnMap:
def __init__(self, lat_lon_a, lat_lon_b, optimal, f_map=None):
self.lat_lon_a = lat_lon_a
self.lat_lon_b = lat_lon_b
self.optimal = optimal
self.f_map = f_map
def create_map(self):
"""
This function creates a map with folium, centered with the location of the three given points.
"""
self.f_map = folium.Map([midlat, midlon], zoom_start=12)
def plot_gdt_and_triangulation(self):
"""
This function plots the locations given by the users with markers and create an heat map of the triangulation.
"""
# plot the gdt's locations.
folium.Marker(
location=gdt1,
popup='GDT 1',
icon=folium.Icon()
).add_to(self.f_map)
folium.Marker(
location=gdt2,
popup='GDT 2',
icon=folium.Icon()
).add_to(self.f_map)
folium.Marker(
location=uav,
popup='Target Area.',
icon=folium.Icon()
).add_to(self.f_map)
# plot the triangulation (regular and optimal) area
plugins.HeatMap(data=self.lat_lon_a,
).add_to(self.f_map)
plugins.HeatMap(data=self.lat_lon_b,
).add_to(self.f_map)
plugins.HeatMap(data=self.optimal,
gradient={0.65: 'lime'}
).add_to(self.f_map)
我正在继承它:
class Plot2ndPosition(PlotOnMap):
def __init__(self, lat_lon_a, lat_lon_b, optimal):
self.plot_on_map = super().__init__(lat_lon_a, lat_lon_b, optimal)
def plot_map(self):
return self.plot_on_map.create_map()
def plot_locations(self):
return self.plot_on_map.plot_gdt_and_triangulation()
唯一的区别是,在Plot2ndPosition类中,在第二种方法中,我不想绘制gdt2和热图,我只想绘制gdt1和uav(第一个和最后一个标记)。
我在将每个变量分配给一个变量的方向上进行了思考,并在继承该方法时以某种方式忽略了它。
def plot_gdt_and_triangulation(self):
"""
This function plots the locations given by the users with markers and create an heat map of the triangulation.
"""
# plot the gdt's locations.
one = folium.Marker(
location=gdt1,
popup='GDT 1',
icon=folium.Icon()
)
one.add_to(self.f_map)
two = folium.Marker(
location=gdt2,
popup='GDT 2',
icon=folium.Icon()
)
two.add_to(self.f_map)
three = folium.Marker(
location=uav,
popup='Target Area.',
icon=folium.Icon()
)
three.add_to(self.f_map)
# plot the triangulation (regular and optimal) area
trian_plot1 = plugins.HeatMap(data=self.lat_lon_a,
).add_to(self.f_map)
trian_plot2 = plugins.HeatMap(data=self.lat_lon_b,
).add_to(self.f_map)
trian_plot3 = plugins.HeatMap(data=self.optimal,
gradient={0.65: 'lime'}
).add_to(self.f_map)
答案 0 :(得分:1)
一种选择是覆盖plot_gdt_and_triangulation()
中的Plot2ndPosition
class Plot2ndPosition(PlotOnMap):
def __init__(self, lat_lon_a, lat_lon_b, optimal):
super().__init__(lat_lon_a, lat_lon_b, optimal)
def plot_gdt_and_triangulation(self):
folium.Marker(
location=gdt1,
popup='GDT 1',
icon=folium.Icon()
).add_to(self.f_map)
folium.Marker(
location=uav,
popup='Target Area.',
icon=folium.Icon()
).add_to(self.f_map)
您也可以删除plot_map()
,只需调用create_map()
。您可以使用Plot2ndPosition
实例来调用它。而且,如果您有更多逻辑,则无需将基类另存为成员,self
def plot_map(self):
return self.create_map()