TrackKit 2.4.1

TrackKit 2.4.1

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布最新版本2018年9月
SPM支持 SPM

维护者:Jelle Vandebeeck



TrackKit 2.4.1

TrackKit

CI Status Version License Platform Language Swift 3.0 Language Swift 4.0

TrackKit 允许您在 Swift 中轻松解析日志文件。

支持的格式

GPX

支持的 GPX 格式版本有 1.01.1,如1.0 的架构文档1.1 的架构文档所述。

LOC

支持的 GPX 格式版本是 1.0。没有找到此格式的架构描述,但我们研究了 Geoaching 如何使用它。

NMEA

支持的NMEA格式是版本NMEA-0183。TrackKit支持的标识符包括:

  • GPGGA
  • GPGLL
  • GPRMC
  • GPWPL

TCX

支持的TCX格式是版本2,如构架文档中所述。

TRACK

TRACK格式是由我个人创建的一个自定义格式。它看起来像是一个自定义数据文件,但当你使用文本编辑器打开一个.track文件时,你会注意到它是一个简单的JSON格式。以下是一个格式示例

[
	{
		"latitude": 10.0,
		"longitude": 20.0,
		"altitude": 120,
		"horizontalAccuracy": 10,
		"verticalAccuracy": 10, 
		"course": 30,
		"speed": 12,
		"timestamp": 123456 
	}
]

集成

通过以下行将此Pod添加到你的Podfile中:

pod 'TrackKit', '~> 2.4'

将版本号添加到pod 'TrackKit'中非常重要,这样你就可以确保下一个Pod更新不会破坏你的代码。

用法

您可以查看如何使用此Pod的不同规范。但就现在而言,我将简短地描述一下它可以如何使用。

GPX

以下是一个包含一些数据的示例 GPX 文件。

<gpx version='1.1' creator='TrackKit'>
  <metadata>
    <name>Jelle Vandebeeck</name>
    <desc>A GPX file</desc>
    <time>2016-03-10T10:05:12+02:00</time>
    <keywords>hiking, forest, wild</keywords>
  </metadata>
</gpx>

您需要确保将 GPX 文件的全部内容转换到一个名为Data的结构中。拥有这个结构之后,您可以轻松地将其解析为一个File

let content: String = '...'
let data = content.data(using: .utf8)
let file = try! TrackParser(data: data, type: .gpx).parse()

LOC

以下是一个包含一些数据的示例 LOC 文件。

<loc version='1.0'>
  <waypoint>
    <name id='GC54AMF'><![CDATA[Mortsel]]></name>
    <coord lat='51.16215' lon='4.456933'/>
    <type>Geocache</type>
    <link text='Details'>http://www.geocaching.com</link>
  </waypoint>
</loc>

您需要确保将 LOC 文件的全部内容转换到一个名为Data的结构中。拥有这个结构之后,您可以轻松地将其解析为一个File

let content: String = '...'
let data = content.data(using: .utf8)
let file = try! TrackParser(data: data, type: .loc).parse()

NMEA

以下是一个包含一些数据的示例 NMEA 文件。

$GPRMC,134732.000,A,5540.3244,N,01231.2941,E,1.75,90.16,041112,,,A*5E
$GPRMC,134735.000,A,5540.3232,N,01231.2946,E,1.97,88.98,041112,,,A*5C
$GPWPL,5540.2823,N,01231.1182,E,00001*7E

您需要确保将 NMEA 文件的全部内容转换到一个名为Data的结构中。拥有这个结构之后,您可以轻松地将其解析为一个File

let content: String = '...'
let data = content.data(using: .utf8)
let file = try! TrackParser(data: data, type: .nmea).parse()

TCX

以下是一个包含一些数据的示例 TCX 文件。

<TrainingCenterDatabase xmlns='http://www.garmin.com/xmlschemas/TrainingCenterDatabase/v2'>
    <Courses>
        <Course>
            <Name>Jelle Vandebeeck</Name>
            <Lap>
                <TotalTimeSeconds>60</TotalTimeSeconds>
                <DistanceMeters>1200</DistanceMeters>
                <BeginPosition>
                    <LatitudeDegrees>51.208845321089</LatitudeDegrees>
                    <LongitudeDegrees>4.394159177318</LongitudeDegrees>
                </BeginPosition>
                <EndPosition>
                    <LatitudeDegrees>51.208867281675</LatitudeDegrees>
                    <LongitudeDegrees>4.394087595865</LongitudeDegrees>
                </EndPosition>
                <Intensity>Active</Intensity>
            </Lap>
            <Track>
                <TrackPoint>
                    <Position>
                        <LatitudeDegrees>51.208845321089</LatitudeDegrees>
                        <LongitudeDegrees>4.394159177318</LongitudeDegrees>
                    </Position>
                </TrackPoint>
            </Track>
        </Course>
    </Courses>
</TrainingCenterDatabase>

您需要确保将 TCX 文件的全部内容转换到一个名为Data的结构中。拥有这个结构之后,您可以轻松地将其解析为一个File

let content: String = '...'
let data = content.data(using: .utf8)
let file = try! TrackParser(data: data, type: .tcx).parse()

类型处理

还有自动选择类型的处理方式。只需要将文件扩展名传递给TrackType枚举即可。

let gpxType = TrackType(fileExtension: 'gpx')
let locType = TrackType(fileExtension: 'loc')
let tcxType = TrackType(fileExtension: 'tcx')

传递给fileExtension的值会忽略大小写。

错误处理

当解析失败时,会抛出错误。目前有两种错误类型。

  • 当数据对象为空时,抛出invalidData错误。
  • 当数据对象无法被解析时,抛出invalidFormat错误。
  • 当数据对象包含的文件版本不正确时,抛出invalidVersion错误。

许可

TrackKit 在MIT许可下可用。有关更多信息,请参阅LICENSE文件。