コード例 #1
0
    def __create_lookat(self):
        if not len(self.server.locations):
            return ''

        begin = format_iso_time(min(self.server.locations))
        end = format_iso_time(max(self.server.locations))

        lat = [y for y, _x, _z in self.server.locations.itervalues()]
        lon = [x for _y, x, _z in self.server.locations.itervalues()]
        latMin = min(lat)
        latMax = max(lat)
        lonMin = min(lon)
        lonMax = max(lon)
        latCen = (latMax + latMin) / 2
        lonCen = (lonMax + lonMin) / 2
        dist = haversine(latMin, latMax, lonMin, lonMax)
        dist = limit(dist, 100, 50000)

        lookAt = ('\t\t<LookAt>\n'
                  '\t\t\t<latitude>{}</latitude>\n'
                  '\t\t\t<longitude>{}</longitude>\n'
                  '\t\t\t<altitudeMode>clampToGround</altitudeMode>\n'
                  '\t\t\t<range>{}</range>\n'
                  '\t\t\t<gx:TimeSpan>\n'
                  '\t\t\t\t<begin>{}</begin>\n'
                  '\t\t\t\t<end>{}</end>\n'
                  '\t\t\t</gx:TimeSpan>\n'
                  '\t\t</LookAt>\n').\
            format(latCen, lonCen, dist * 2, begin, end)

        return lookAt
コード例 #2
0
ファイル: location.py プロジェクト: har5ha/RTLSDR-Scanner
    def __create_lookat(self):
        if not len(self.server.locations):
            return ''

        begin = format_iso_time(min(self.server.locations))
        end = format_iso_time(max(self.server.locations))

        lat = [y for y, _x, _z in self.server.locations.itervalues()]
        lon = [x for _y, x, _z in self.server.locations.itervalues()]
        latMin = min(lat)
        latMax = max(lat)
        lonMin = min(lon)
        lonMax = max(lon)
        latCen = (latMax + latMin) / 2
        lonCen = (lonMax + lonMin) / 2
        dist = haversine(latMin, latMax, lonMin, lonMax)
        dist = limit(dist, 100, 50000)

        lookAt = ('\t\t<LookAt>\n'
                  '\t\t\t<latitude>{}</latitude>\n'
                  '\t\t\t<longitude>{}</longitude>\n'
                  '\t\t\t<altitudeMode>clampToGround</altitudeMode>\n'
                  '\t\t\t<range>{}</range>\n'
                  '\t\t\t<gx:TimeSpan>\n'
                  '\t\t\t\t<begin>{}</begin>\n'
                  '\t\t\t\t<end>{}</end>\n'
                  '\t\t\t</gx:TimeSpan>\n'
                  '\t\t</LookAt>\n').\
            format(latCen, lonCen, dist * 2, begin, end)

        return lookAt
コード例 #3
0
    def __create_track(self):
        if not len(self.server.locations):
            return ''

        track = ('\t\t<Placemark>\n'
                 '\t\t\t<name>Track</name>\n'
                 '\t\t\t<description>{} locations</description>\n'
                 '\t\t\t<styleUrl>#track</styleUrl>\n'
                 '\t\t\t<gx:Track>\n'
                 '\t\t\t\t<altitudeMode>clampToGround</altitudeMode>\n').\
            format(len(self.server.locations))

        with self.server.lock:
            for timeStamp in sorted(self.server.locations):
                lat, lon, alt = self.server.locations[timeStamp]
                timeStr = format_iso_time(timeStamp)
                if alt is None:
                    track += '\t\t\t\t<gx:coord>{} {}</gx:coord>\n'.\
                        format(lon, lat)

                else:
                    track += '\t\t\t\t<gx:coord>{} {} {}</gx:coord>\n'.\
                        format(lon, lat, alt)
                track += '\t\t\t\t<when>{}</when>\n'.format(timeStr)

        track += ('\t\t\t</gx:Track>\n' '\t\t</Placemark>\n')

        return track
コード例 #4
0
def export_gpx(filename, locations, name):
    handle = open(filename, 'wb')

    header = ('<?xml version="1.0" encoding="UTF-8" standalone="no" ?>\n'
              '<gpx xmlns="http://www.topografix.com/GPX/1/1" creator="{}" version="1.1">\n'
              '\t<trk>\n'
              '\t\t<name>{}</name>\n'
              '\t\t<trkseg>\n').format(name, 'test name')
    handle.write(header)

    for location in sorted(locations.items()):
        timeStamp = format_iso_time(location[0])
        lat = location[1][0]
        lon = location[1][1]
        alt = location[1][2]
        point = ('\t\t\t<trkpt lat="{}" lon="{}">\n'
                 '\t\t\t\t<ele>{}</ele>\n'
                 '\t\t\t\t<time>{}</time>\n'
                 '\t\t\t</trkpt>\n').format(lat, lon, alt, timeStamp)
        handle.write(point)

    footer = ('\t\t</trkseg>\n'
              '\t</trk>\n'
              '</gpx>\n')
    handle.write(footer)
    handle.close()
コード例 #5
0
ファイル: main_window.py プロジェクト: har5ha/RTLSDR-Scanner
    def __scan_start(self, isCal=False):
        if self.isNewScan and self.__save_warn(Warn.SCAN):
            return False

        if not self.threadScan:
            self.__set_control_state(False)
            samples = calc_samples(self.settings.dwell)
            if self.isNewScan:
                self.spectrum.clear()
                self.locations.clear()
                self.graph.clear_plots()

                self.isNewScan = False
                self.status.set_info("", level=None)
                self.scanInfo.set_from_settings(self.settings)
                self.scanInfo.time = format_iso_time(time.time())
                self.scanInfo.lat = None
                self.scanInfo.lon = None
                self.scanInfo.desc = ""

            self.stopAtEnd = False
            self.stopScan = False
            self.threadScan = ThreadScan(self, self.sdr, self.settings, self.settings.indexRtl, samples, isCal)
            self.filename = "Scan {0:.1f}-{1:.1f}MHz".format(self.settings.start, self.settings.stop)
            self.graph.set_plot_title()

            self.__start_gps()

            return True
コード例 #6
0
    def __scan_start(self, isCal=False):
        if self.isNewScan and self.__save_warn(Warn.SCAN):
            return False

        if not self.threadScan:
            self.__set_control_state(False)
            samples = calc_samples(self.settings.dwell)
            if self.isNewScan:
                self.spectrum.clear()
                self.locations.clear()
                self.graph.clear_plots()

                self.isNewScan = False
                self.status.set_info('', level=None)
                self.scanInfo.set_from_settings(self.settings)
                self.scanInfo.time = format_iso_time(time.time())
                self.scanInfo.lat = None
                self.scanInfo.lon = None
                self.scanInfo.desc = ''

            self.stopAtEnd = False
            self.stopScan = False
            self.threadScan = ThreadScan(self, self.sdr, self.settings,
                                         self.settings.indexRtl, samples,
                                         isCal)
            self.filename = "Scan {0:.1f}-{1:.1f}MHz".format(
                self.settings.start, self.settings.stop)
            self.graph.set_plot_title()

            self.__start_gps()

            return True
コード例 #7
0
ファイル: location.py プロジェクト: har5ha/RTLSDR-Scanner
    def __create_track(self):
        if not len(self.server.locations):
            return ''

        track = ('\t\t<Placemark>\n'
                 '\t\t\t<name>Track</name>\n'
                 '\t\t\t<description>{} locations</description>\n'
                 '\t\t\t<styleUrl>#track</styleUrl>\n'
                 '\t\t\t<gx:Track>\n'
                 '\t\t\t\t<altitudeMode>clampToGround</altitudeMode>\n').\
            format(len(self.server.locations))

        with self.server.lock:
            for timeStamp in sorted(self.server.locations):
                lat, lon, alt = self.server.locations[timeStamp]
                timeStr = format_iso_time(timeStamp)
                if alt is None:
                    track += '\t\t\t\t<gx:coord>{} {}</gx:coord>\n'.\
                        format(lon, lat)

                else:
                    track += '\t\t\t\t<gx:coord>{} {} {}</gx:coord>\n'.\
                        format(lon, lat, alt)
                track += '\t\t\t\t<when>{}</when>\n'.format(timeStr)

        track += ('\t\t\t</gx:Track>\n'
                  '\t\t</Placemark>\n')

        return track