Pull to refresh

Comments 37

У меня в свое время выработались, дополнительно к указанным Вами, следующие критерии различения самолетов:

1) Boeing vs Airbus: у Airbus встречается характерная законцовка крыла в форме «стрелочки». Если видишь ее — то перед тобой точно Airbus.

2) Boeing-737: имеет характерно приплюснутые снизу воздухозаборники двигателей, в отличие от Airbus, у которого воздухозаборники всегда круглые.

3) Boeing-777: самая задняя точка фюзеляжа заострена, как бы заточена с двух сторон по горизонтали. Выхлоп APU идет слегка вбок. На остальных самолетах в задней точке размещается выхлоп APU, и поэтому «законцовка» не такая острая.

4) При размещении двигателей не под крыльями, а в хвостовой части самолета. Тут тоже есть несколько критериев различения. Например, Canadair Regional Jet — маленький, с двигателями в хвосте. Ну а еще такую компоновку имеет Ту-154. Разве они уже не летают из Шереметьево?
имеет характерно приплюснутые снизу воздухозаборники двигателей
Начиная с NG (600,700, 800, 900) это уже намного менее заметно — например, вот:

image
Шарклеты у Airbus, патентные войны знаете ли
def getProperty(status, propertyNames):
  # Cохраняем все содержимое status
  property = status

  # Пытаемся найти нужный ключ
  try:
      # Перебираем каждый ключ из propertyNames
      for propertyName in propertyNames:
          # Отсекаем ненужное  
          property = property[propertyName]
      
      # Нужный ключ найден!
      return property
   except
      # А если нет, то возвращаем заглушку
      return "---"


1) Except всегда должен быть не глобальным, а подходящим к одной конкретной ошибке, дабы избежать скрытых ошибок, которые вы не ожидали. В Вашем случае должен быть except KeyError: Shit реально happens.
2)
# Cохраняем все содержимое status
  property = status

А зачем, собственно? Локальная переменная status не изменится за пределами функции, даже если в функции вы поимеете поизменяете её во все дыры методы.
3) И так, для себя — можно объяснить значение этой функции? Что она реально делает? Почему нельзя было написать:
try:
    dateLocal = data['operationalTimes']['actualGateDeparture']['dateLocal']
except:
    dateLocal = '---'

или что-то в этом роде?
1, 2 — поправил, спасибо.
3 — можно, не спорю. Но дело в том, что ключ из ответа сразу подставляется в заготовленную строку. Если бы я сохранял значение в переменную, тогда да, именно так бы и написал.
Простите, а отечественные типы самолетов вообще не рассматриваются?
Такой футбол нам обиден.
Ну почему не рассматриваю? Их просто нет в классификации.
Равно как и самолетов марки Embraer, ATR, Bombardier. И не потому что я к ним плохо отношусь, просто они редко встречаются.
Однако, как Вы можете заметить, в коде есть interestingEquipments = ["SU9"] # Sukhoi Superjet 100.

А вообще, если кода не касаться, то лично я, когда выезжаю фотографировать, считаю, что выезд удался, если я смог сфотографировать хотя бы один отечественный самолет.
«Учимся различать типы самолетов»: ни одного отечественного типа на схеме. С учетом Вашего комментария выше, схема не удалась.
Нужно обязательно добавить сюда Тушки, Илы, Яки и т.д., пока отечественная авиация еще летает.
Добавил Ил-95, Як-42, Ту-154
Вспомнил, что когда-то рисовал похожий гайд, вот кусок из него, касающийся некоторых неупомянутых Вами джетов (в основном, советских/постсоветских).



Кстати, вспомнил же, что тогда не сумел придумать отличий между 204 и 757 без «очень хорошей фотки» и не опираясь на ливреи.
Добавил в пост!
Спасибо. Так справедливее.
Из Шарика SSJ еще часто должны летать, по крайней мере, значительно чаще чем из других московских аэропортов.
Именно поэтому он в коде выделен. Та конечная таблица — как раз для Шарика
Нет в природе пассажирской ИЛ-95.
По поводу «схемки». Я бы вот что заметил: 737 и 32х проще всего различать по килю: у 737 перед основным килем своеобразный «гаргрот», которого нет ни на одном 32х. Насчет 757 и 767 — 757 визуально меньше, его с убранным шасси легче спутать с 321, а 767 как раз легче спутать с 330.
Давно была идея следить за расписанием авиарейса и подписываться на изменения в нем (по смс или звонком).
Местный аэропорт не всегда считает нужным уведомлять об отмене/переносе рейса.
Насколько точные данные выдает flightstats.com?
Хм, я точность работы не проверял, но я думаю, что вполне точные. По крайней мере для задач споттинга.
Кроме говнокода, хотелось бы отметить такие замечательные критерии оценки самолетов, как «острый нос и толстый фюзеляж». Вы сами-то попробуете отличить самолеты по такому критерию без сравнения, когда видете один самолет в небе?

P.S. И причем здесь DIY… Хотя с другой стороны, по уровню дилетанства в самый раз и туда тоже :)
Ой спасибо, как раз думал как бы а380 на взлете словить.
В каком аэропорту?
Ого, далеко, однако :)
а погода там точная, от каждого аэропорта?
можете для пулково один запрос по погоде сделать, если не трудно?)
Иногда, конечно, бывают задержки.
Погода в Пулково
{
 "request": {
  "url": "https://api.flightstats.com/flex/weather/rest/v1/json/metar/ULLI",
  "airport": {
   "requestedCode": "ULLI",
   "fsCode": "LED"
  },
  "codeType": {}
 },
 "metar": {
  "report": "ULLI 081130Z 00000MPS 9999 -SN SCT010 OVC018 M03/M04 Q1008 60590336 10////// NOSIG",
  "reportTime": "2013-12-08T11:30:00.000Z",
  "weatherStationIcao": "ULLI",
  "tags": [
   {
    "key": "Precipitation",
    "value": "2"
   },
   {
    "key": "Freezing",
    "value": "4"
   },
   {
    "key": "Instrumentation",
    "value": "MVFR"
   },
   {
    "key": "Prevailing Conditions",
    "value": "Snow"
   }
  ],
  "conditions": {
   "wind": {
    "direction": 0,
    "directionIsVariable": false,
    "speedKnots": "0.00"
   },
   "visibility": {
    "miles": "6.21",
    "lessThan": false,
    "cavok": false
   },
   "weatherConditions": [
    {
     "phenomenon": "Snow",
     "intensity": "Light"
    }
   ],
   "skyConditions": [
    {
     "coverage": "Scattered clouds",
     "base": 1000
    },
    {
     "coverage": "Overcast",
     "base": 1800
    }
   ],
   "pressureInchesHg": "29.77"
  },
  "temperatureCelsius": "-3.00",
  "dewPointCelsius": "-4.00",
  "runwayVisualRanges": [],
  "obscurations": [],
  "noSignificantChange": true
 },
 "appendix": {
  "airports": [
   {
    "fs": "LED",
    "iata": "LED",
    "icao": "ULLI",
    "name": "Pulkovo Airport",
    "city": "Saint Petersburg",
    "cityCode": "LED",
    "countryCode": "RU",
    "countryName": "Russian Federation",
    "regionName": "Europe",
    "timeZoneRegionName": "Europe/Moscow",
    "localTime": "2013-12-08T16:14:21.111",
    "utcOffsetHours": 4,
    "latitude": 59.806085,
    "longitude": 30.3083,
    "elevationFeet": 79,
    "classification": 2,
    "active": true,
    "delayIndexUrl": "https://api.flightstats.com/flex/delayindex/rest/v1/json/airports/LED?codeType=fs"
   }
  ]
 }
}
Спасибо, вроде похоже на правду за окном :)
Не знал об этом, спасибо!
Спасибо за обзор этого API! Как-то раньше не догадывался, что есть такая хорошая и открытая возможность получать данные по авиарейсам. Теперь можно отключить древнюю парсилку табло аэропортов.
P.S. жить в 20 минутах от шереметьево — это жить в самом шереметьево. Ну или вести глубокую ночную жизнь ;)
Если приобрести SDR приёмник то на частоте 1090 МГц можно принимать сигналы прилетающих самолётов.
Думаете, я этого не делал? :)

А кто подскажет, к этому апи можно подцепиться и получать инфу о самолётах в воздухе для нужной зоны в реальном времени?
Для контроля зоны, где летают авиамоделисты, свободна ли она.

Это показывает расписания. Вам де наверное нужна реальная ситуация в небе, тогда вам нужен flightradar24.

Спасибо за ответ! У флайрадара апи не обнаружил, к сожалению. А получится ли дёрнуть инфу как браузер — ещё вопрос..

Sign up to leave a comment.

Articles

Change theme settings