Я выполнил это упражнение, но не могу найти решения, ищу несколько советов, как ...
Я работаю в авиационном приложении
, чтобы быть более очистить одну взлетно-посадочную полосу аэропорта с двумя номерами, следующие json описывают одну взлетно-посадочную полосу с именем [16/34 в примере], одна сторона взлетно-посадочной полосы называется 16, другая - 34
см. чтобы понять, одна сторона 16, другая 34
из API, который я загружаю json с данными взлетно-посадочной полосы аэропорта в следующем формате:
json
[
{
"length" : {
"feet" : 11066,
"meter" : 3372.9200000000001,
"mile" : 2.0960000000000001,
"km" : 3.3730000000000002,
"nm" : 1.821
},
"location" : {
"lat" : 22.1637077,
"lon" : 113.586128
},
"hasLighting" : true,
"width" : {
"feet" : 148,
"meter" : 45.109999999999999,
"mile" : 0.028000000000000001,
"km" : 0.044999999999999998,
"nm" : 0.024
},
"surface" : "Concrete",
"displacedThreshold" : {
"feet" : 1181,
"meter" : 359.97000000000003,
"mile" : 0.224,
"km" : 0.35999999999999999,
"nm" : 0.19400000000000001
},
"isClosed" : false,
"name" : "16",
"trueHdg" : 161.19999999999999
},
{
"length" : {
"feet" : 11066,
"meter" : 3372.9200000000001,
"mile" : 2.0960000000000001,
"km" : 3.3730000000000002,
"nm" : 1.821
},
"location" : {
"lat" : 22.135021200000001,
"lon" : 113.596695
},
"hasLighting" : true,
"width" : {
"feet" : 148,
"meter" : 45.109999999999999,
"mile" : 0.028000000000000001,
"km" : 0.044999999999999998,
"nm" : 0.024
},
"surface" : "Concrete",
"displacedThreshold" : {
"feet" : 1214,
"meter" : 370.02999999999997,
"mile" : 0.23000000000000001,
"km" : 0.37,
"nm" : 0.20000000000000001
},
"isClosed" : false,
"name" : "34",
"trueHdg" : 341.19999999999999
}
]
может найти в json следующие данные:
ВПП 16"имя": "16", "trueHdg" : 161.19999999999999
взлетно-посадочная полоса 34"name": "34" "trueHdg": 341.19999999999999
имя взлетно-посадочной полосы 16 имеют trueHdg 161,19999 градусов, а взлетно-посадочная полоса 34 является совершенно противоположным trueHdg из 341.1999999
после определения моей модели ВПП:
class RunwayConbine: Identifiable , Codable {
var id : UUID = UUID()
var runwayA : String
var runwayB : String
init(runwayA: String, runwayB: String) {
self.runwayA = runwayA
self.runwayB = runwayB
}
, поэтому мне нужно найти для ВПП 16 т.р. ueHdg 161.19999999999999 противоположное в json (в данном случае 34 trueHdg 341.19999999999999)
, как только вы найдете противоположность ВПП, создайте вектор AirportRunway: [RunnwayConbine] (в данном случае содержащий только 1 элемент), где Я объединяю информацию о 2 взлетно-посадочных полосах в одном элементе, например, let runway = RunwayConbine (runwayA: 34, runwayB: 16)
, это должно работать для других json, если в аэропорту больше примеров взлетно-посадочной полосы:
[
{
"length" : {
"feet" : 9843,
"meter" : 3000.1500000000001,
"mile" : 1.8640000000000001,
"km" : 3,
"nm" : 1.6200000000000001
},
"hasLighting" : false,
"width" : {
"feet" : 148,
"meter" : 45.109999999999999,
"mile" : 0.028000000000000001,
"km" : 0.044999999999999998,
"nm" : 0.024
},
"surface" : "Unknown",
"isClosed" : true,
"name" : "06",
"trueHdg" : 58.5
},
{
"length" : {
"feet" : 9836,
"meter" : 2998.0100000000002,
"mile" : 1.863,
"km" : 2.9980000000000002,
"nm" : 1.619
},
"location" : {
"lat" : 33.50038,
"lon" : 126.469292
},
"hasLighting" : true,
"width" : {
"feet" : 148,
"meter" : 45.109999999999999,
"mile" : 0.028000000000000001,
"km" : 0.044999999999999998,
"nm" : 0.024
},
"surface" : "Asphalt",
"displacedThreshold" : {
"feet" : 0,
"meter" : 0,
"mile" : 0,
"km" : 0,
"nm" : 0
},
"isClosed" : false,
"name" : "07",
"trueHdg" : 58.399999999999999
},
{
"length" : {
"feet" : 6270,
"meter" : 1911.0999999999999,
"mile" : 1.1879999999999999,
"km" : 1.911,
"nm" : 1.032
},
"location" : {
"lat" : 33.515529999999998,
"lon" : 126.48738899999999
},
"hasLighting" : true,
"width" : {
"feet" : 148,
"meter" : 45.109999999999999,
"mile" : 0.028000000000000001,
"km" : 0.044999999999999998,
"nm" : 0.024
},
"surface" : "Asphalt",
"displacedThreshold" : {
"feet" : 0,
"meter" : 0,
"mile" : 0,
"km" : 0,
"nm" : 0
},
"isClosed" : false,
"name" : "13",
"trueHdg" : 125.7
},
{
"length" : {
"feet" : 9843,
"meter" : 3000.1500000000001,
"mile" : 1.8640000000000001,
"km" : 3,
"nm" : 1.6200000000000001
},
"hasLighting" : false,
"width" : {
"feet" : 148,
"meter" : 45.109999999999999,
"mile" : 0.028000000000000001,
"km" : 0.044999999999999998,
"nm" : 0.024
},
"surface" : "Unknown",
"isClosed" : true,
"name" : "24",
"trueHdg" : 238.5
},
{
"length" : {
"feet" : 9836,
"meter" : 2998.0100000000002,
"mile" : 1.863,
"km" : 2.9980000000000002,
"nm" : 1.619
},
"location" : {
"lat" : 33.514507299999998,
"lon" : 126.49679999999999
},
"hasLighting" : true,
"width" : {
"feet" : 148,
"meter" : 45.109999999999999,
"mile" : 0.028000000000000001,
"km" : 0.044999999999999998,
"nm" : 0.024
},
"surface" : "Asphalt",
"displacedThreshold" : {
"feet" : 0,
"meter" : 0,
"mile" : 0,
"km" : 0,
"nm" : 0
},
"isClosed" : false,
"name" : "25",
"trueHdg" : 238.40000000000001
},
{
"length" : {
"feet" : 6270,
"meter" : 1911.0999999999999,
"mile" : 1.1879999999999999,
"km" : 1.911,
"nm" : 1.032
},
"location" : {
"lat" : 33.505499999999998,
"lon" : 126.50411200000001
},
"hasLighting" : true,
"width" : {
"feet" : 148,
"meter" : 45.109999999999999,
"mile" : 0.028000000000000001,
"km" : 0.044999999999999998,
"nm" : 0.024
},
"surface" : "Asphalt",
"displacedThreshold" : {
"feet" : 1348,
"meter" : 410.87,
"mile" : 0.255,
"km" : 0.41099999999999998,
"nm" : 0.222
},
"isClosed" : false,
"name" : "31",
"trueHdg" : 305.69999999999999
}
]
в этом примере я должен вернуть AirportRunway: [RunnwayConbine] с 2 элементами, содержащими runway1 = RunwayConbine (runwayA: 31, runwayB: 13) e RunwayConbine (runwayA: 06, runwayB: 24)
надеюсь, я был ясен ..
это то, что я пытаюсь сделать, но ... я очень далеко ...
for (key,myJson):(String, JSON) in json {
let runway = RunwayModel(runwayName: "", runwayTrueHdg: "", runwaylenghtM: "", runwaylenghtNM: "", runwaywidthM: "", runwaywidthNM: "", runwaySurfaceType: "", isClosed: false)
pistaA = json[ind]["name"].stringValue
let hdg = myJson["trueHdg"].double
var HDHOpposto = hdg! + 180
if HDHOpposto > 360 {
HDHOpposto = HDHOpposto - 360
}
debugPrint(" check if \(hdg) == \(HDHOpposto)")
for (k,json) in myJson {
if hdg == HDHOpposto {
let opposto = myJson["name"].stringValue
pistaB = opposto
let pistaTOT = RunwwayConbine(runwayConbineA: pistaA, runwayConbine: pistaB)
vettoreTUTTEPiste.append(pistaTOT)
}
}
debugPrint("la pista trovata opposta e \(pistaA) opposto con \(pistaB) nel vettore ci sono \(vettoreTUTTEPiste.count) piste in totoale")
vettorePiste.append(runway)
self.isRunwayDataReceive = true
i = i+1
}
большое спасибо, за помощь мне