AviationKit
概述
FAA通过基于XML的服务器格式提供天气报告及其他通知。FAA 天气服务器 提供了 METAR的、TAF的、AIREP、AIR/SIGMET的、G-AIRMET的、以及站场信息。
本库的初始版本包含基于位置的METAR和TAF的基本信息。随着库的增长,将添加额外的功能和报告。
除了FAA的文档之外,还有一份在此GitHub上的文档服务器。文档将关于类、结构、枚举等都将继续更新。
示例
Pod包含一个功能齐全的示例应用程序。要运行示例项目,先克隆仓库,然后在Example目录中运行pod install
。
要求
为了保持库的最新性,我们将开发落后于当前iOS版本一版的操作系统。例如,当iOS当前版本为12时,我们将在此项目中使用iOS版本11。当iOS版本13发布时,此项目将更新到iOS 12及以下版本。
安装
AviationKit可以通过CocoaPods获取。要安装它,只需将以下行添加到您的Podfile中
pod 'AviationKit'
截图
按位置查找METAR | 按位置查找TAF |
---|---|
![]() |
![]() |
METAR示例 | TAF示例 |
---|---|
![]() |
![]() |
使用方法
报告是通过基本报告功能和适当的报告参数结构生成的。核心报告功能是
let reports = Reports()
reports.getReport(parmStructure) { (results, error) in
// code here
}
METAR
METAR报告是通过MetarParams
结构生成的。没有参数检查过程。
您需要负责设置正确的参数,如下所述的FAA天气站。
如果您设置了错误的参数,API端点在闭包的error
变量中将返回错误。
METAR示例
var metarParms = MetarParams()
metarParms.areaConstraint = AreaConstraints(Coordinates(location.longitude, location.latitude), milesRadius)
let reports = Reports()
reports.getReport(metarParms) { (results, error) in
if let res = results, let resultsarray = res as? [METAR] {
// process the METAR array
} else {
// process the error
}
}
选项
此有效选项列表来源于19年6月4日的联邦航空局网站。请检查该网站,并在遵循本指南过程中遇到错误时通知我。请查阅联邦航空局网站以确定获取所需数据的正确选项。由于可能发生变化,这里不会重复说明约束条件。此图表描述了联邦航空局变量到AviationKit变量的对应关系。
联邦航空局变量 | 变量 | 变量类型 | 说明 |
---|---|---|---|
stationString | StationConstraints.stationString | [字符串] | 由联邦航空局分配的四个字母机场站点缩写的数组,可在一个请求中进行多个录入。 |
startTime | StartEnd.startTime | Int | 自1970年1月1日起的起始和结束时间的秒数 |
endTime | StartEnd.endTime | Int | 自1970年1月1日起的起始和结束时间的秒数 |
hoursBeforeNow | TimeConstraints.hoursBeforeNow | Double | 任何正浮点数。基于METAR观测时间 |
mostRecent | MetarParams.mostRecent | Bool | 默认为false 。可选值。 |
mostRecentForEachStation | StationConstraints.mostRecentForEachStation | enum | 在MostRecentForEachStationConstraints 枚举中包含4个值。默认为false 。 |
minLat | CoordinateRectangle.minimum.latitude | Double | 矩形界限的一部分 |
maxLat | CoordinateRectangle.maximum.latitude | Double | 矩形界限的一部分 |
minLon | CoordinateRectangle.minimum.longitude | Double | 矩形界限的一部分 |
maxLon | CoordinateRectangle.maximum.longitude | Double | 矩形界限的一部分 |
radialDistance | AreaConstraints.radiusInMiles | Int | 英里半径 |
flightPath (radial distance) | flightPathCoordinates.maxDistanceInMiles | Double | 离路径的英里数 |
flightPath (Coordinates数组) | flightPathCoordinates | [CoordinatePath] | 请参阅CoordinatePath的定义。 |
CoordinatePath.leg | Int | 该坐标路径的路段 - 默认为1 | |
CoordinatePath.endPoint | Coordinates | 路径的终点(可选) | |
CoordinatePath.startPoint | Coordinates | 路径的起点(可选) | |
CoordinatePath.stationString | String | 此路径的机场站点而不是坐标 | |
minDegreeDistance | MetarParams.minimumDegreeDistance | Double | 0 < 任何值 < 90。度距离是在站点之间的距离(基于经度和纬度)。minDegreeDistance的值越大,结果越稀疏。重复的站点被筛选,并报告重复站点的最新值。 |
fields | MetarParams.fields | [字符串] | 处理后希望返回的字段。请参阅联邦航空局文档了解可用的字段。 |
TAF
天气预报报告仍使用较旧的函数。您可以使用Comms
对象来获取TAF信息。目前只有少数几个选项 - 将进行更多更新!
TAF示例
let location = CLLocationCoordinate2D(latitude: 38.920898, longitude:-77.031372)
let milesRadius = 10
let comms = Comms()
comms.getTAF(location, milesRadius) { (results, error) in
// process the results array of [TAF] objects
}
作者
Mike Silvers, [email protected]
许可证
AviationKit 在MIT许可证下可用。有关更多信息,请参阅LICENSE文件。