示例#1
3
 def create_map(self, *args):
     _, latitude, longitude, markers = args
     markers = pickle.loads(markers)
     map = MapView(zoom=12, lat=latitude, lon=longitude, size_hint=(1, .8))
     marker_layer = MarkerMapLayer()
     map.add_layer(marker_layer)
     for (lat, lon) in markers:
         # print(type(lat),type(lon))
         map.add_marker(MapMarker(lat=lat,
                                  lon=lon,
                                  source='images/mmy_marker.png'),
                        layer=marker_layer)
     return map
示例#2
0
    def draw_iss_path(self):

        # Path is drawn every 5 mins
        if self.utcnow() - self.last_path_update > 30:

            try:
                self.map.remove_layer(self.mmlayer)
            except:
                pass

            self.mmlayer = MarkerMapLayer()

            # Create markers showing the ISS's position every 5 mins
            for i in range(20):
                lat, lon = self.get_loc(datetime.now() + timedelta(0, i * 300))
                self.mmlayer.add_widget(
                    MapMarker(lat=lat, lon=lon, source=self.path_icon))

            # Update the flag so we know when next update should be run
            self.last_path_update = self.utcnow()

            # Add the layer and call the reposition function otherwise the
            # markers don't show otherwise!
            self.map.add_layer(self.mmlayer)
            self.mmlayer.reposition()
示例#3
0
    def __init__(self, walking_widget):
        super().__init__()
        self.walking_widget = walking_widget
        self.widget_layout = FloatLayout()
        self.origin_size = (1, 1)
        self.map_view = MapView(zoom=12, lat=37.5606,
                                lon=126.9790)  # gps에서 현재위치 받아서 띄우기
        self.cur_lat, self.cur_lon = 37.5606, 126.9790
        self.marker_layer = MarkerMapLayer()
        self.map_view.add_layer(self.marker_layer)
        self.positions = [(self.cur_lat, self.cur_lon)]
        self.save_button = Button(text='save',
                                  pos_hint={
                                      'x': 0.0,
                                      'y': 0.0
                                  },
                                  size_hint=(.1, .1))
        self.clear_button = Button(text='clear',
                                   pos_hint={
                                       'x': 0.1,
                                       'y': 0.0
                                   },
                                   size_hint=(.1, .1))

        self.items_bind()
示例#4
0
    def draw_rout(self, lat, lon):
        self.data_lay = MarkerMapLayer()
        self.my_map.add_layer(self.data_lay)
        lat = lat[::10]
        lon = lon[::10]

        for point in zip(lat, lon):
            self.draw_marker(*point, layer=self.data_lay)
示例#5
0
 def draw_route(self,lat,lon):#narysowanie trasy
     data_lay = MarkerMapLayer()
     self.my_map.set_zoom_at(11, 0, 0, scale=None)
     lat_ = float(np.mean(lat))
     lon_ = float(np.mean(lon))
     self.my_map.center_on(lat_, lon_)
     self.my_map.add_layer(data_lay) # my_map jest obiektem klasy MapView
     for point in zip(lat,lon):
         self.draw_marker(*point,layer = data_lay)
示例#6
0
    def draw_route(self, df):
        self.data_layer = MarkerMapLayer(
        )  #utworzenie warstwy, creating instance of class MarkerMapLayer
        self.my_map.add_layer(self.data_layer)  #dodanie warstwy do mapy

        for i in range(df.shape[0]):
            self.mark_point(lat=float((df.iloc[i, 0]) * 180 / pi),
                            lon=float(df.iloc[i, 1] * 180 / pi),
                            layer=self.data_layer)  #narysowanie trasy
示例#7
0
 def __init__(self, lat=51.5, lon=0, zoom=8, url="http://localhost/dump1090/data/aircraft.json", interval=1):
     self.aircraft_layer = MarkerMapLayer()
     self.update_in_progress = False
     self.list_of_tracked_aircraft = []
     self.aircraft_markers = []
     self.url = url
     super().__init__(lat=lat, lon=lon, zoom=zoom)
     self.add_layer(self.aircraft_layer)
     Clock.schedule_interval(self.request_update, interval)
示例#8
0
    def search_location(self):  #funkcja lokalizująca obiekty
        self.data_layer = MarkerMapLayer()
        self.my_map.add_layer(self.data_layer)
        self.lati = self.my_map.lat
        self.long = self.my_map.lon

        print(self.lati)
        print(self.long)

        list_of_points = [[
            'zegar_praga.jpg', 50 + 5 / 60 + 12 / 3600,
            14 + 25 / 60 + 14 / 3600
        ], ['sagrada_familia.jpg', 50.06465009, 19.94497990000002],
                          ['sacre_coeur.jpg', 48.8863280, 2.3430490],
                          ['london_eye.jpg', 51.5007316, -0.1186893],
                          ['notre_dame.jpg', 48.8540278, 2.3473245],
                          ['koloseum.jpg', 41.8895897, 12.4940828],
                          ['fontanna.jpg', 41.9008219, 12.4830284],
                          ['eiffel_tower.jpg', 48.8583157, 2.2943230],
                          ['big_ben.jpg', 51.4995730, -0.1245830],
                          ['arc.jpg', 48.8738178, 2.2950626],
                          ['akropol.jpg', 37.9666670, 23.7166670]]
        try:
            self.my_map.remove_marker(self.marker)
        except:
            pass

        self.latitude = self.my_map.lat
        self.longitude = self.my_map.lon

        self.marker = MapMarker(lat=self.latitude, lon=self.longitude)
        self.my_map.add_marker(self.marker)
        #zmiana formatu wywietlania znakow
        self.search_lat.text = "{:5.5f}".format(self.latitude)
        self.search_long.text = "{:5.5f}".format(self.longitude)

        #użycie funkcji obliczającej odległosc
        for i in range(len(list_of_points)):
            if self.pic.source == list_of_points[i][0]:
                s = funkcja.Vincenty(self.lati * pi / 180,
                                     self.long * pi / 180,
                                     list_of_points[i][1] * pi / 180,
                                     list_of_points[i][2] * pi / 180)

        points = []
        if s > 100:
            self.tekst.text = "Odleglosc pomiedzy {} m".format(round(s, 3))
            score = 0
            points.append(score)
        else:
            self.tekst.text = "zdobywasz punkt!"
            score = 1
            points.append(score)

        sum_of_points = points.count(1)
        self.score.text = "Twoje punkty : {}".format(sum_of_points)
示例#9
0
 def __init__(self, **kwargs):
     super(Editor, self).__init__(**kwargs)
     self.marker_layer = MarkerMapLayer()
     self.current_layer = GeoJsonMapLayer()
     self.result_layer = GeoJsonMapLayer()
     self.result_layer.geojson = kwargs["geojson"]
     self.geojson_fn = kwargs["geojson_fn"]
     self.ids.mapview.add_widget(self.current_layer)
     self.ids.mapview.add_widget(self.result_layer)
     self.ids.mapview.add_widget(self.marker_layer)
示例#10
0
 def build(self):
     self.mapview = MapView(lat=51.48, lon=-3.17, zoom=11)
     self.mapLayer = MarkerMapLayer()
     for i in locations:
         locationLat = float(locations[i][0])
         locationLon = float(locations[i][1])
         marker = MapMarker(lat=locationLat, lon=locationLon)
         self.mapLayer.add_widget(marker)
     self.mapview.add_layer(self.mapLayer)
     self.add_widget(self.mapview)
示例#11
0
    def mark_boys(self):
        #
        boy = MarkerMapLayer()
        self.add_layer(boy)

        longitude = -71.979914
        latitude = 41.800495
        m1 = MapMarker(lon=longitude, lat=latitude, source=r'blue_pin.png')
        m1.bind(on_press=pop_that)
        self.add_marker(m1, layer=boy)
示例#12
0
    def mark_girls(self):
        # used to draw in all girl's changing rooms
        # change icon to pink
        girl = MarkerMapLayer()
        self.add_layer(girl)

        longitude = -72.979914
        latitude = 40.800495
        m1 = MapMarker(lon=longitude, lat=latitude, source=r'pink_pin.png')
        m1.bind(on_press=pop_that)
        self.add_marker(m1, layer=girl)
    def draw_marker(self):

        data_lay = MarkerMapLayer()
        self.my_map.add_layer(data_lay)
        for i in range(len(self.lati)):

            marker = MapMarker(lat=self.lati[i],
                               lon=self.loni[i],
                               source="dot.png")
            self.my_map.add_marker(marker, layer=data_lay)

        self.my_map.set_zoom_at(10, self.lati[1], self.loni[1], scale=None)
        self.my_map.center_on(self.lati[1], self.loni[1])
示例#14
0
    def __init__(self):
        super().__init__()
        self.origin_size = (1, 1)
        self.widget_layout = FloatLayout()

        #줌을 12에서 붐비는정도라는 의도에 걸맞게 zoom을 높여주기 -> ux 개선사항
        self.map_view = MapView(zoom=14, lat=37.5606,
                                lon=126.9790)  # gps에서 현재위치 받아서 띄우기

        self.cur_lat, self.cur_lon = 37.5606, 126.9790
        self.marker_layer = MarkerMapLayer()
        self.map_view.add_layer(self.marker_layer)

        self.items_bind()
示例#15
0
    def __init__(self, **kwargs):
        #super(ISSScreen, self).__init__(**kwargs)
        super(ISSScreen, self).__init__()
        self.name = kwargs["name"]

        # Set the path for the folder
        self.path = os.path.dirname(os.path.abspath(__file__))

        # Set the path for local images
        self.imagefolder = os.path.join(self.path, "images")

        # Ephem calculates the position using the Two Line Element data
        # We need to make sure we have up to date info
        tle = self.get_TLE()

        # Create an iss object from which we can get positional data
        self.iss = ephem.readtle(*tle)

        # Run the calculations
        self.iss.compute()

        # Get positon of iss and place a marker there
        lat, lon = self.get_loc()
        self.marker = MapMarker(lat=lat, lon=lon)

        # Create a value to check when we last drew ISS path
        self.last_path_update = 0

        # Create the path icon
        self.path_icon = os.path.join(self.imagefolder, "dot.png")

        # Create the world map
        #self.map = MapView(id="mpv",lat=0, lon=0, zoom=1, scale=1.5)
        self.map = MapView(lat=0, lon=0, zoom=1)
        x, y = self.map.get_window_xy_from(0, 0, 1)
        self.map.scale_at(1.2, x, y)

        # Add the ISS marker to the map and draw the map on the screen
        print("add map")
        self.map.add_widget(self.marker)
        print("add widget")
        self.add_widget(self.map)

        # Add a new layer for the path
        self.mmlayer = MarkerMapLayer()

        self.draw_iss_path()

        self.timer = None
示例#16
0
    def draw_markers(self, lats, lons, h_lat, h_lon):
        ''' Rysuj markery! I najtrudniejsze miejsce'''
        # Ale najpierw skasujmy stare markery
        self.remove_markers()
        self.data_layer = MarkerMapLayer()
        self.map_.add_layer(self.data_layer)
        # Nie chcemy za dużo punktów narysować
        if len(lats) > 50:
            print('ZA DUŻO PUNKTÓW GPS!!!!')
            co_ile = int(len(lats) / 50)
            print('Wybieramy co %d punkt aby wyświetlić  50/51 punktów')
            lats = lats[::co_ile]
            lons = lons[::co_ile]

        for lat, lon in zip(lats, lons):
            marker = MapMarker(lat=lat, lon=lon)
            self.map_.add_marker(marker, layer=self.data_layer)
        n = len(lats)
        # Ładnie centrujemy mapkę!
        self.map_.center_on(sum(lats) / n, sum(lons) / n)
        # Rysuj położenie najtrudniejszego odcinka
        marker = MapMarker(lat=h_lat, lon=h_lon, source='cluster.png')
        self.map_.add_marker(marker, layer=self.data_layer)
示例#17
0
 def draw_route(self, lon, lat):
     data_layer = MarkerMapLayer()
     self.my_map.add_layer(data_layer)
     for point in zip(lat, lon):
         self.mark_point(*point, layer=data_layer)
示例#18
0
 def draw_route(self, lat, lon):
     # utworzenie nowej warstwy i dodanie jej do mapy
     data_layer = MarkerMapLayer()
     self.my_map.add_layer(data_layer)  # my_map jest obiektem klasy MapView
     for point in zip(lat, lon):
         self.mark_point(*point, layer=data_layer)
    def draw_route(self, lat, lon):
        data_layer = MarkerMapLayer()

        for point in zip(lat, lon):

            self.mark_point(*point, layer=data_layer)
示例#20
0
    def analyse_file(self):
        filename = self.txt1.text  #wczytanie pliku
        lat, lon, lat1, lat2, lon1, lon2, el, dates, elstart, elstop, datesstop, datesstart, delta, sekundy, sumdates, lat1wyk, lon1wyk = biblio.wczytaj_plik(
            filename)

        #---------------------HAVERSINE------------------------------------------------

        def haversine(origin, destination):
            lat1, lon1 = origin
            lat2, lon2 = destination
            radius = 6371000  # m

            dlat = np.radians(lat2 - lat1)
            dlon = np.radians(lon2 - lon1)

            a = np.sin(dlat/2) * np.sin(dlat/2) + np.cos(np.radians(lat1)) \
            * np.cos(np.radians(lat2)) * np.sin(dlon/2) * np.sin(dlon/2)
            c = 2 * np.arctan2(np.sqrt(a), np.sqrt(1 - a))
            d = radius * c

            return d

#------------------rysowanie poczatku trasy------------------------------------

        self.data_lay = MarkerMapLayer()
        self.my_map.add_layer(self.data_lay)
        marker = MapMarker(lat=lat[0], lon=lon[0], source="dot.png")
        self.my_map.add_marker(marker, layer=self.data_lay)

        #-----------------------obliczenia---------------------------------------------

        dist_part = haversine((lat1, lon1), (lat2, lon2))  # m
        sumdist = sum(dist_part)  #długosć całkowita trasy - pozioma
        alt_part = (elstop - elstart)  #przwyższenia na odcinkach trasy

        def przewyzszenie_dodatnie(alt_part):  #całkowite przewyższenie w górę
            dodatnie = []
            for przewyzszenie in alt_part:
                if przewyzszenie >= 0:
                    dodatnie.append(przewyzszenie)
            return dodatnie

        def przewyzszenie_ujemne(alt_part):  #całkowite przewyższenie w dół
            ujemne = []
            for przewyzszenie in alt_part:
                if przewyzszenie < 0:
                    ujemne.append(przewyzszenie)
            return ujemne

        altsum = sum(alt_part)  #całkowite przewyższenie na trasie
        odl3D = np.sqrt((dist_part**2 + alt_part**2))  #odległosć skosna
        sum3D = sum(odl3D)  #całkowita odleglosc skosna trasy

        #------------------predkosci---------------------------------------------------
        if sekundy > 0:
            v = dist_part / sekundy  #m/s
            vavg = sum(v) / len(v)
            p7 = str(round(vavg, 3))
        else:
            v = 0
            vavg = 0
            p7 = str('Brak')


#-------------wyswietlanie statystyk-------------------------------------------

        p1 = str(round(sumdist, 3))
        p2 = str(round(sum3D, 3))
        p3 = str(round(altsum, 3))
        p4 = str(round(sum(np.array(przewyzszenie_dodatnie(alt_part))), 3))
        p5 = str(round(sum(np.array(przewyzszenie_ujemne(alt_part))), 3))
        p6 = str(sumdates)
        p8 = str(round(max(el), 3))
        p9 = str(round(min(el), 3))

        self.txt2.text = 'Statystyki:'
        self.txt2.text += '\nCałkowita odległość (długość) pozioma [m]    '
        self.txt2.text += p1
        self.txt2.text += '\nCałkowita odległość skośna [m]    '
        self.txt2.text += p2
        self.txt2.text += '\nCałkowite przewyższenie [m]    '
        self.txt2.text += p3
        self.txt2.text += '\nw tym: w górę / w dół    '
        self.txt2.text += p4
        self.txt2.text += '  /  '
        self.txt2.text += p5
        self.txt2.text += '\nCzas [h:m:s]    '
        self.txt2.text += p6
        self.txt2.text += '\nSrednia predkość [m/s]    '
        self.txt2.text += p7
        self.txt2.text += '\nMaksymalna wysokość [m]    '
        self.txt2.text += p8
        self.txt2.text += '\nMinimalna wysokość [m]    '
        self.txt2.text += p9
示例#21
0
 def draw_route(self, lat, lon):  #rysowanie trasy
     data_lay = MarkerMapLayer()
     self.my_map.add_layer(data_lay)  # my_map jest obiektem klasy MapView
     for point in zip(lat, lon):
         self.draw_marker(*point, layer=data_lay)