Я использую iOS Mapbox SDK для создания MGLShapeCollectionFeature
из данных goejson FeatureCollection
, которые поступают из стороннего API.
guard let feature = try? MGLShape(data: jsonData, encoding: String.Encoding.utf8.rawValue) as? MGLShapeCollectionFeature else {
print("Could not cast to specified MGLShapeCollectionFeature")
return
}
Проблема заключается в том, что API иногда возвращает недопустимый геойсон, где одиночный Feature
не содержит действительных координат (см. Ниже), и инициализация MGLShape
завершается с помощью 'NSInvalidArgumentException', reason: 'A multipoint must have at least one vertex.'
, что является правильным.
Есть ли способ отфильтровать и удалить недействительные Features
внутри FeatureCollection
, отличные от парсинга и исправления геоджона вручную?
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"properties": {
"icaoId": "KBOS",
"airSigmetType": "AIRMET",
"hazard": "IFR"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
]
]
}
},
{
"type": "Feature",
"properties": {
"icaoId": "KSLC",
"airSigmetType": "AIRMET",
"hazard": "IFR"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-106.63,
49.06
],
[
-104.12,
48.95
],
[
-104.17,
44.8
],
[
-106.91,
46.38
],
[
-106.63,
49.06
]
]
]
}
}
]
}