示例#1
0
文件: tktogpx2.py 项目: peletiah/poab
def writeTracks(tkfiles, outputFile, usetimezone):
    """
    Write track data.
    
    @param tkfiles: A list of TK files with track data.
    @param outputFile: The file to write to.
    """
    # pylint: disable-msg=R0914
    trackNumber = 0
    for tkfile in tkfiles:
        for track in tkfile.tracks():
            previousPoint = None
            trackNumber += 1
            minutes, seconds = divmod(track.getTrackDuration(), 60)
            hours, minutes = divmod(minutes, 60)
            values = {"track": trackNumber, "trackpoints": track.getTrackPointCount(), "hours": hours,
                      "minutes": minutes, "seconds": seconds, "distance": track.getTrackLength()}
            outputFile.write(TRACK_HEADER % values)
            for point in track.trackpoints():
                speed = 0
                bearing = 0
                if previousPoint:
                    distance, bearing = calculateVincentyDistance(previousPoint.getLatitude(),
                                                                  previousPoint.getLongitude(),
                                                                  point.getLatitude(), point.getLongitude())
                    timedelta = point.getDateTime() - previousPoint.getDateTime()
                    time = timedelta.days * 24 * 60 * 60 + timedelta.seconds
                    if time != 0:
                        speed = distance / (time / float(60 * 60))
                if tkfile.getLogVersion() != 2.0:
                    temppressure = ""
                else:
                    temppressure = TEMPERATURE_PRESSURE % ({"extensiontype": "TrackPoint",
                                                            "temperature": point.getTemperature(),
                                                            "pressure": point.getAirPressure(),})
                if usetimezone: 
                    timezone = datetime(2000, 1, 1, 0, 0, 0, tzinfo = track.getTimezone()).strftime(", TZ=%z")
                else:
                    timezone = ""
                values = {"lat": point.getLatitude(), "lon": point.getLongitude(),
                          "datetime": point.getDateTime().strftime('%Y-%m-%dT%H:%M:%SZ'), "ele": point.getAltitude(),
                          "speed": speed, "bearing": bearing + 0.5, "temppressure": temppressure, "timezone": timezone}
                if previousPoint:
                    outputFile.write(TRACKPOINT % values)
                else:
                    outputFile.write(FIRST_TRACKPOINT % values)
                previousPoint = point
            outputFile.write(TRACK_FOOTER)
示例#2
0
文件: tktogpx2.py 项目: peletiah/poab
def writeWaypoints(tkfiles, outputFile, usetimezone):
    """
    Write waypoints.
    
    @param tkfiles: A list of TK files with track data.
    @param outputFile: The file to write to.
    """
    # pylint: disable-msg=R0914
    pushPoint = 0
    for tkfile in tkfiles:
        previousPoint = None
        for track in tkfile.tracks():
            for point in track.trackpoints():
                if point.isLogPoint():
                    pushPoint = pushPoint + 1
                    speed = 0
                    bearing = 0
                    if previousPoint:
                        distance, bearing = calculateVincentyDistance(previousPoint.getLatitude(),
                                                                      previousPoint.getLongitude(),
                                                                      point.getLatitude(),
                                                                      point.getLongitude())
                        timedelta = point.getDateTime() - previousPoint.getDateTime()
                        time = timedelta.days * 24 * 60 * 60 + timedelta.seconds
                        if time != 0:
                            speed = distance / (time / float(60 * 60))
                    if tkfile.getLogVersion() != 2.0:
                        temppressure = ""
                    else:
                        temppressure = TEMPERATURE_PRESSURE % ({"extensiontype": "Waypoint",
                                                                "temperature": point.getTemperature(),
                                                                "pressure": point.getAirPressure()})
                    if usetimezone: 
                        timezone = datetime(2000, 1, 1, 0, 0, 0, tzinfo = track.getTimezone()).strftime(", TZ=%z")
                    else:
                        timezone = ""
                    values = {"lat": point.getLatitude(), "lon": point.getLongitude(),
                              "datetime": point.getDateTime().strftime('%Y-%m-%dT%H:%M:%SZ'), "pushpoint": pushPoint,
                              "ele": point.getAltitude(), "speed": speed, "bearing": bearing + 0.5,
                              "temppressure": temppressure, "timezone": timezone}
                    outputFile.write(WAYPOINT % values)
                
                previousPoint = point