Existe uma fonte oficial da FAA para o fuso horário de um aeroporto?

6 respostas

O fuso horário de cada aeroporto está listado no diretório do aeroporto / instalações. Eu acho que a FAA está começando a chamar esses "Suplementos Gráficos" agora. Você pode pesquisar aeroportos específicos aqui , mas parece que os resultados estão em .pdf formato. O valor que você deseja é circulado em vermelho aqui:

EDIT: No que diz respeito a fontes digitais, informações explícitas sobre fuso horário parecem estar ausentes dos dados do aeroporto NASR (APT) aqui . A próxima melhor coisa é latitude / longitude parece.

    
04.02.2017 / 17:51

Eu tenho pelo menos uma solução parcial para você. Como mencionei em um comentário anterior, fiz alguns trabalhos para esse objetivo no passado. O que eu fiz com base em sua solicitação foi extrair parte desse código para criar uma API de aeroportos que inclui valores de latitude, longitude, deslocamento UTC e fuso horário.

Aqui estão alguns exemplos sobre os endpoints.

Para todos os dados em toda a API, você pode enviar uma solicitação HTTP GET para https://airports-api.s3-us-west-2.amazonaws.com/ . Você receberá uma resposta JSON contendo todos os aeroportos como uma matriz de objetos. É uma resposta enorme.

Para obter informações mais detalhadas, os dois padrões RESTful a seguir podem ser utilizados para os códigos de aeroportos ICAO ou IATA, respectivamente.

https://airports-api.s3-us-west-2.amazonaws.com/icao/katl.json
https://airports-api.s3-us-west-2.amazonaws.com/iata/atl.json

Em ambos os casos, você receberá uma resposta JSON apenas para esse aeroporto. Deve ser assim.

{  
   "id":3682,
   "city":"Hartsfield Jackson Atlanta Intl",
   "state":"Atlanta",
   "country":"United States",
   "iata":"ATL",
   "icao":"KATL",
   "latitude":33.636719,
   "longitude":-84.428067,
   "elevation":1026,
   "utc_offset":-5,
   "_class":"A",
   "timezone":"America/New_York"
}

Agora eu sei que você está trabalhando em PHP, mas certamente há bibliotecas em PHP que permitirão que você faça solicitações à API e analise o JSON em uma matriz PHP.

Além disso, um aviso de isenção e uma solicitação. Meus dados estão incompletos. Atualmente, este projeto é no Github na forma de um site de Middleman que lê o CSV de origem e cria uma API estática. Eu adoraria que os colaboradores me ajudassem a expandir e melhorar os dados de origem. Eu também tenho código que eu posso extrair de outros projetos que determinam os valores de deslocamento UTC e fuso horário, se pelo menos soubermos a latitude e a longitude. É necessário fazer solicitações para a API do fuso horário do Google Maps , que custaria caro se isso fosse feito sob demanda. Eu preferiria continuar digerindo os dados e reconstruindo a API como um site estático. Envolva-se no Github se quiser ajudar.

Atualizar

Encontrei outra fonte de dados que, uma vez integrada à minha API, melhorará drasticamente o número de aeroportos disponíveis. Trabalhando nisso em breve.

    
07.02.2017 / 19:15

Eu estava curioso para saber o quanto isso seria difícil, então comecei a experimentar. Estou usando o macOS Sierra, mas as etapas básicas seriam as mesmas em outras plataformas.

A primeira coisa seria baixar os arquivos .pdf. Existem 9 deles, então você precisa fazer estes passos 9 vezes. O Automator facilita a conversão dos arquivos PDF em texto. Muito do texto é destroçado, mas a linha de que você gosta está intacta. Abra o Automator e selecione Fluxo de trabalho na janela suspensa. Solte um dos arquivos na janela do Automator. Eu escolhi CS_SW_20170105.pdf. Na guia ações, escolha PDFs e selecione Extrair texto PDF. Use o ícone para executar a ação. É surpreendentemente rápido.

Agora você tem um arquivo de texto que pode ser manipulado usando suas ferramentas de manipulação de texto favoritas. Eu uso o BBEdit. Primeiro, removi todas as quebras de linha e usei o comando Process Lines Containing para copiar todas as linhas contendo UTC para um novo arquivo. Então eu me livrei de todas as coisas após o fuso horário fazendo um achado (usando GREP para substituir 'N [0-9]. *' Por nada. Então eu removi os números de linha e o espaço no começo do arquivo.

Esta é uma amostra do resultado:

CALIFORNIA AVALON CATALINA (AVX)(KAVX) 6 NW UTC–8(–7DT)
BAKERSFIELD BAKERSFIELD MUNI (L45) 378 B TPA—1178(800) RWY 16–34: H4000X75 (ASPH) RWY 16: REIL. Road. Rgt tfc. CALIFORNIA 3 S UTC–8(–7DT)
BANNING MUNI (BNG)(KBNG) 2222 B TPA—3222(1000) RWY 08–26: H4955X100 (ASPH) 1 SE UTC–8(–7DT)
CALIFORNIA CONTINUED FROM PRECEDING PAGE AIRSPACE: CLASS C svc ctc APP CON svc 1400Z‡ Mon–0600Z‡ Fri and/or by NOTAM other times CLASS G. RADIO AIDS TO NAVIGATION: NOTAM FILE BAB. (L) TACAN Chan 23 BAB (108.6)
CALIFORNIA BIG BEAR CITY (L35) 0 W UTC–8(–7DT)
BISHOP CALIFORNIA (BIH)(KBIH) 2 E UTC–8(–7DT)
CALIFORNIA 91 BLYTHE (BLH)(KBLH) 6 W 400 B TPA—1200(800) RWY 08–26: H6543X150 (ASPH) MIRL UTC–8(–7DT)
BORREGO SPRINGS BORREGO VALLEY (L08) 3 E 520 B TPA—1520(1000) RWY 08–26: H5011X75 (ASPH) CALIFORNIA S–30, D–54, 2D–90 MIRL RWY 08: PAPI(P2L)—GA 3.0o TCH 63 ́. Road. Rgt tfc. UTC–8(–7DT)
CALIFORNIA 93 BRIDGEPORT BRYANT FLD (O57) 0 NE UTC–8(–7DT)
BURBANK BOB HOPE CALIFORNIA (BUR)(KBUR) 3 NW UTC–8(–7DT)
CALIFORNIA 95 BUTTONWILLOW ELK HILLS–BUTTONWILLOW (L62) 3 S UTC–8(–7DT)

Demora cerca de dois minutos para processar os arquivos. Não está perfeitamente limpo, mas você pode fazer um pouco mais de GREPing para se livrar das coisas.

Infelizmente, ainda há muito lixo nos arquivos que exigirão algumas edições manuais para corrigir. Provavelmente não mais que algumas horas.

    
05.02.2017 / 22:18

Aqui está uma fonte oficial da FAA. Eu achei a informação inestimável ao pesquisar recursos do aeroporto.

link

Depois de selecionar os aeroportos que você deseja pesquisar. Clique em enviar. A próxima página mostrará quatro arquivos para download. Selecione Data de Instalações do Aeroporto para baixar o arquivo CSV (ele é rotulado como um arquivo XLS, mas na verdade é um arquivo CSV).

Eu pensei que estávamos tendo variação magnética por um momento. O arquivo não contém as informações solicitadas, mas achei que manteria a resposta aqui para que outras pessoas possam aprender sobre a página de dados do aeroporto.

    
06.02.2017 / 00:10

A melhor solução que consegui encontrar é usar dados de openflights.org . Ele tem informações de fuso horário, mas seus dados sobre o horário de verão não são muito bons.

Eu escrevo no .NET e, para resolver esse problema, usei NodeTime e Bibliotecas TimeZoneConverter .

Eu importei dados do openflights.org para o meu banco de dados. A partir desses dados, usei os campos "País", "Cidade" e "Fuso Horário". Dados do campo "TimeZone" que usei como dados de backup - caso eu não consiga encontrar o TimeZoneInfo para um determinado aeroporto.

O código a seguir recupera o deslocamento do fuso horário atual para um local específico.

public static class TimeZoneHelper
{
    private const float Tolerance = 0.01f;

    public static float GetTimeZoneOffsetWithRegardsToDst(string countryName, string cityName, float timeZoneOffsetWithoutDst, DateTime currenTime)
    {
        try
        {
            var possibleLocations = TzdbDateTimeZoneSource
                .Default
                .ZoneLocations
                .Where(l => string.Equals(l.CountryName, countryName, StringComparison.InvariantCultureIgnoreCase))
                .ToList();

            if (!possibleLocations.Any())
            {
                return timeZoneOffsetWithoutDst;
            }

            if (possibleLocations.Count == 1)
            {
                var zone = DateTimeZoneProviders.Tzdb[possibleLocations[0].ZoneId];
                return GetTimeZoneOffsetWithDst(currenTime, zone);
            }

            var locationsWithSameTimeZoneOffsetWhenThereIsNoDst = possibleLocations
                .Where(l =>
                {
                    string windowsTimeZoneName = TZConvert.IanaToWindows(l.ZoneId);
                    var timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(windowsTimeZoneName);
                    var baseUtcOffset = timeZoneInfo.BaseUtcOffset.TotalSeconds / NodaConstants.SecondsPerHour;

                    if (Math.Abs(baseUtcOffset - timeZoneOffsetWithoutDst) < Tolerance)
                    {
                        return true;
                    }

                    return false;
                })
                .ToList();

            if (locationsWithSameTimeZoneOffsetWhenThereIsNoDst.Any())
            {
                DateTimeZone zone;

                var locationsThatContainsNameOfCity = locationsWithSameTimeZoneOffsetWhenThereIsNoDst
                    .Where(l => l.ZoneId.ToUpperInvariant().Contains(cityName.ToUpperInvariant()))
                    .ToList();
                if (locationsThatContainsNameOfCity.Any())
                {
                    zone = DateTimeZoneProviders.Tzdb[locationsThatContainsNameOfCity[0].ZoneId];
                }
                else
                {
                    zone = DateTimeZoneProviders.Tzdb[locationsWithSameTimeZoneOffsetWhenThereIsNoDst[0].ZoneId];
                }

                return GetTimeZoneOffsetWithDst(currenTime, zone);
            }

            return timeZoneOffsetWithoutDst;
        }
        catch (Exception)
        {
            return timeZoneOffsetWithoutDst;
        }
    }

    private static float GetTimeZoneOffsetWithDst(DateTime currentTime, DateTimeZone zone)
    {
        var instant = Instant.FromDateTimeUtc(currentTime);
        var offset = zone.GetUtcOffset(instant);
        var offsetInSeconds = offset.Seconds;
        var timeZoneOffsetWithDst = offsetInSeconds / NodaConstants.SecondsPerHour;
        return timeZoneOffsetWithDst;
    }
}

O objeto TzdbZoneLocations do NodeTime contém dados sobre a latitude e a longitude de um objeto específico, portanto, também é possível usar latitude e longitude dos dados do openflights.org para fazer a correspondência entre o aeroporto e o fuso horário.

    
21.12.2017 / 23:13

O fuso horário é sempre o mesmo para cada estado, correto? Parece que tudo que você precisa é o estado. Provavelmente é por isso que não há dados oficiais com um fuso horário para cada aeroporto. De eNASR acabei de inserir "*" para "Airport ID" e (depois de um tempo) recebi mais de 19.000 aeroportos. Eles pelo menos têm um código de estado. Eu suponho que seria relativamente fácil salvar e analisar esses dados.

Também dê uma olhada em OurAirports . Clique em "Informações do site" na parte superior e depois em "Abrir downloads de dados". Você pode fazer o download de um CSV com mais de 50.000 aeroportos no mundo com um código de estado para cada um nos EUA.

    
26.02.2017 / 06:24