<\/HEAD>
Horários estáticos de ônibus (<\/SPAN>GTFS<\/A><\/SPAN>) não se comparam às informações de ônibus em tempo real (<\/SPAN>GTFS-realtime<\/A><\/SPAN>). Mas isso não significa que você precise se contentar com técnicas estáticas de visualização.<\/SPAN><\/P>Neste blog, vou mostrar como você pode ser um pouco criativo e fazer seus horários estáticos cantarem e se moverem junto com Arcade. E você vai querer cantar: <\/SPAN>as rodas do ônibus giram e giram<\/SPAN><\/EM><\/SPAN><\/STRONG><\/SPAN> 
<\/SPAN><\/P>
<\/SPAN><\/P>Selecione um link abaixo para visualizar o mapa web associado a este GIF.<\/SPAN><\/P>Map Viewer Beta<\/SPAN><\/STRONG><\/SPAN><\/A><\/SPAN><\/P><\/LI>Map Viewer (classic)<\/SPAN><\/A><\/SPAN><\/P><\/LI><\/UL>O <\/SPAN>GIF<\/SPAN><\/A><\/SPAN> e o <\/SPAN>mapa web<\/SPAN><\/A><\/SPAN> mostram pop-ups de <\/SPAN>ônibus próximos<\/SPAN><\/STRONG><\/SPAN> e daqueles <\/SPAN>recentemente perdidos<\/SPAN><\/STRONG><\/SPAN>. Isso seria útil para os passageiros entenderem quais serviços estão disponíveis em qualquer data e hora.<\/SPAN> <\/SPAN>Vamos aprender como criar essas exibições de pop-up a partir de um <\/SPAN>feed GTFS<\\/span>. Seguido por como estender essa solução para um
Construir expressões (hosted table)Você pode ter notado pelo modelo usado para a
hosted table, eu criei um campo extra arrivalSeconds para calcular o arrival_time dos ônibus de hh:mm:ss tipo string para um number (segundos decorridos desde o início do dia). Isso foi feito para acelerar a consulta de filtro (que usaremos mais tarde) para retornar apenas as feições relevantes ao horário do dia. Como você pode imaginar, é muito mais rápido consultar números comparado a converter tipos string em tempo real (especialmente com large datasets).
Converter arrival_time para número de segundos decorridos desde o início do dia
//separar horas, minutos e segundos de chegada em um array
var separateArrival = Split($feature["arrival_time"],":")
//Para corrigir valores de hora maiores que 23
var fixedHours = When(separateArrival[0] >= 24, separateArrival[0] - 24, separateArrival[0])
//converter arrival_time de 'String' para tipo 'Date'
var arrivalTimeAware = Date(Year(Now()), Month(Now()), Day(Now()), fixedHours, separateArrival[1], separateArrival[2])
var startOfDayTime = Date(Year(Now()), Month(Now()), Day(Now()), 0, 0, 0)
< spanclass=" 0.1px;">var portal = Portal("https://www.arcgis.com")
var gtfsTable = FeatureSetByPortalItem(portal,"38ee59b7d5bc4173ab8786bd58ae274a", 0)
var stopId = $feature["stop_id"]
var startOfDayTime = Date(Year(Now()), Month(Now()), Day </ Span > ( < Span Class = " " Style = "Color:# 000000 "> Now </ Span > () ), 0 </ Span > , 0 </ Span > , 0 </ Span > ) </ Span >
// segundos decorridos desde o início do dia </ Span ></ Span >
var </ Span > secondsElapsed </ Span > = </ Span > DateDiff </ Span > ( Now </ Span > (), startOfDayTime </ Span >, 'seconds' </ Span > ) </ Span >
// retorna curr_date como um inteiro no formato 'YYYYMMDD' #HowItShouldBe </ Span ></ Span >
var </ Span > curr_date </ Span > = </ Span > Number </ Span > ( Text </ Span > ( Now </ Span > (),'YMMDD' </ Span > ) ) </ Span >
// declaração de filtro (SQL) - acesse variáveis com @ </ Span ></ Span >
0 && f.bikes_allowed == 1," -
","") + TextFormatting.NewLine + TextFormatting.NewLine
} else{
popupResult += ""
}
}
IIF(IsEmpty(popupResult), "Nenhum ônibus próximo na próxima hora" + TextFormatting.NewLine + TextFormatting.NewLine, popupResult)
Você também pode usar uma expressão semelhante com um filterStatement ligeiramente modificado para consultar ônibus que partiram nos últimos x minutos. A declaração abaixo consulta ônibus que partiram nos últimos 20 minutos (1.200 segundos).
var filterStatement = 'arrivalSeconds >= (@secondsElapsed - 1200) AND arrivalSeconds < @secondsElapsed AND stop_id = @stopId AND @curr_date >= start_date AND @curr_date <= end_date'</span>
Expressão completa para ônibus que partiram nos últimos 20 minutos //consultar feições da tabela hospedada - 'stopsTimesTripsRoutesCalendar' no ArcGIS Online
var portal = Portal ("
https://www.arcgis.com" )
var gtfsTable = </ span>popupResult
+= Left(
f.
arrival_time,
5)
+ " - " + f.
route_long_name + When(f.route_type == 712, Concatenate(" (",f.trip_headsign,")"), Concatenate(" (",f.route_short_name,")")) + When(f.wheelchair_accessible == 1 && f.bikes_allowed == 1, " - 
", f.wheelchair_accessible 1\", && f. bikes_allowed == 0 , " - ", ),
Saúde! - <\/SPAN>Gee Fernando<\/SPAN><\/A><\/SPAN><\/STRONG><\/SPAN><\/P><\/BODY><\/HTML>