<\/P>
Com Arcade, você tem a flexibilidade de trabalhar com seus campos de data de várias maneiras, personalizar limites e até calcular suas próprias novas datas derivadas. Continue lendo para aprender como construir este mapa exato para você começar.<\/P>
Primeiro, vamos configurar o mapa. Abra um novo webmap, clique em Adicionar >> Navegar Camadas do Living Atlas >> e pesquise "MODIS". O primeiro resultado deve ser uma camada de feição "Satellite (MODIS) Thermal Hotspots and Fire Activity" da Esri. Vá em frente e adicione essa camada ao seu mapa. No painel Conteúdo, clique no botão filtro para a camada MODIS e defina um filtro para "Data de Aquisição nos últimos 1 dia(s)". Aplicar Filtro. Isso filtrará os hotspots para estarem nas últimas 24 horas. Agora clique em Mapa Base no topo e selecione o mapa base Dark Gray Canvas. Agora é hora de usar Arcade para construir nossa própria simbologia de tempo relativo para os hotspots.<\/P>
Para a camada MODIS, clique no botão Alterar Estilo. Expanda "Escolher um atributo para mostrar", role até o final da lista de campos e clique em "Nova Expressão". Isso abrirá o construtor de Expressão Arcade. Cole o seguinte código no corpo da Expressão.<\/P>
function<\/SPAN> determineCategory<\/SPAN>(<\/SPAN>value)<\/SPAN>{<\/SPAN>if<\/SPAN> (<\/SPAN>value <=<\/SPAN> 4<\/SPAN> )<\/SPAN>{<\/SPAN>return<\/SPAN> "1"<\/SPAN>}<\/SPAN>else<\/SPAN> if<\/SPAN> (<\/SPAN>value ><\/SPAN> 4<\/SPAN> &&<\/SPAN> value <=<\/SPAN> 8<\/SPAN>)<\/SPAN>{<\/SPAN>return<\/SPAN> "2"<\/SPAN>}<\/SPAN>else<\/SPAN> if<\/SPAN> (<\/Span>value ><\//span> 8<\//span> &&<\//span> value <=<\//span> 12<\//span>)<\//span>{<\//span>return<\//span> \"3\"<\//span>}<\//span>else<\//span> if<\//span> (<\//span>value ><\//span> 12<\//span> &&<\//span> value <=<\//span> 16<\//span>)<\//span>{<\//span>return<\//span> \"4\"<\//span>}<\//span>else<\//span> if16 && value <=20){ return 6" } else { return "6" }}var hours = DateDiff(now(),$feature["ACQ_DATE"] , "hours")determineCategory(hours)<SPaN cLass=line-numbers-rows>} image-2 j-img-centered j-img-original" src="https:\/\/us.v-cdn.net\/6038851\/uploads\/legacyfs\/online\/483413_firefly.jpg" style="display: block; margin-left: auto; margin-right: auto;" \/><\/P>Selecione o mais intenso na rampa (o mais à direita) e defina o tamanho para 36. Repita esse processo para as outras categorias, trabalhando da direita para a esquerda na rampa, diminuindo o tamanho a cada vez em 6 (ex.: 36, 30, 24, 18, 12 e 6). Depois que todos os seus símbolos estiverem configurados como desejar, vá em frente e brinque com o controle deslizante de Transparência no painel Estilo para ajustar a aparência que você deseja. Quando tudo estiver pronto, seu painel Estilo deve ficar parecido com isto:<\/P><\/P><\/P>Clique em OK para confirmar tudo. E, voila!<\/EM> Agora você deve ter um mapa dos hotspots MODIS que envelhecem ao longo do tempo com base no tempo atual. Ótimo trabalho! Além disso, não se esqueça de salvar seu mapa!<\/P><\/P>
var<\/SPAN> myDateField =<\/SPAN> $feature[<\/SPAN>"ACQ_DATE"<\/SPAN>]<\/SPAN>;<\/SPAN>\n\nfunction<\/SPAN> getTimeDelta<\/SPAN>(<\/SPAN>alertDate)<\/SPAN>{<\/SPAN>\n var<\/SPAN> minutes =<\/SPAN> DateDiff<\/SPAN>(<\/SPAN>now<\/SPAN>(<\/SPAN>)<\/SPAN>,<\/SPAN>alertDate,<\/SPAN> "minutes"<\/SPAN>)<\/SPAN>\n var<\/SPAN> hours =<\/SPAN> DateDiff<\/SPAN>(<\/SPAN>now<\/Span>(),alertDate,"hours")var days = DateDiff(now(),alertDate,"days")if ((minutes <= 120<span class="punctuation token">){return round(minutes) + " minutos atrás" }if ((minutes > 120){if ((hours <= 48<span class="punctuation token">){var tFloor = floor(hours)var deltaMin = datediff(now(),dateadd(alertDate,tFloor,'hours'),'minutes')return round(tFloor) + " horas e " + round(deltaMin) + " minutos atrás" }if ((hours > 48){var dFloor = floor(days)var deltaHour = datediff(now(),dateadd(alertDate,dFloor,'days'),'hours')return round(dFloor) + " dias e " + round(deltaHour) + " horas atrás" } }}return </ span > getTimeDelta(myDateField)<<EMOJI_0 > >< spanclass='line-numbers-rows'>< span > <<EMOJI_1 > >< / span >< span > <<EMOJI_2 > >< / span >< span > <<EMOJI_3 > >< / span >< span > <<EMOJI_4 > >< / span >< span > <<EMOJI_5 > >< / span >< span > <<EMOJI_6 > >< / span >< span > <<EMOJI_7 > >< / span >< span > <<EMOJI_8 > >< / span >< span > <<EMOJI_9 > >< / span >< span > <<EMOJI_10 > >< / span >< span > <<EMOJI_11 > >< / span >< span > <<EMOJI_12 > >< / span >< span > <<EMOJI_13 > >< / span >< span > <<EMOJI_14 > >< / span >< span > <<EMOJI_15 > >< / span >< span > <<EMOJI_16 > >< / span >< span > <<EMOJI_17 > >< / span >< span > <<EMOJI_18 > >< / span >< span > <<EMOJI_19 > >< / span >< span > <<EMOJI_20 > >< / span >< span > <<EMOJI_21 > >< / span >< span > <<EMOJI_22 > >< / span >< span > <<EMOJI_23 >> </ Span ></ Span ></ CODE ></ PRE ></ P ></ P >< P >Esta expressão irá analisar o delta de tempo entre o tempo atual e a data no campo e usar alguma lógica condicional para construir uma expressão amigável para humanos desse delta. Esta expressão também foi construída para funcionar com Dias, mas como configuramos nossos hotspots para ver apenas as últimas 24 horas, não veremos isso. Mas você pode usar esta expressão como um modelo para outras camadas com as quais deseja trabalhar. Nesse caso, a única coisa que você terá que fazer é alterar a parte $feature["ACQ_DATE"] <\/_EM> para apontar para um campo de data na sua camada. <\/_P><\/_P>Clique em Testar para verificar se funciona, seguido por um clique exuberante no botão "OK". A partir daqui, configure os popups como quiser, certificando-se de que a expressão que você criou esteja visível. A expressão funciona como um campo, então você pode vê-la como parte de um estilo padrão de popup ou configurá-la como parte de um exibição de atributo personalizado.<\/P><\/P><\/P><\/P>Arcade oferece a flexibilidade de personalizar como as coisas são transmitidas ao seu público sem exigir que você modifique o esquema dos seus dados ou execute cálculos constantes de campo. Representações temporais são apenas um caso de uso disso. Esperamos que isso lhe dê um ponto de partida para explorar o que é possível. Obrigado por ler!<\/P><\/BODY><\/HTML>
@DennisJarrard Thanks for posting this. I'm trying this out word for word in order to try/learn for a map that I'm working on. When I paste the code that's in the "Incorporating Relative Time in Symbology" section I'm getting an "Unexpected identifier" error. Would you happen to know why?
@MatthewKing I tested and got the same thing. Turns out the way the code block is collapsed in the blog confuses arcade. If I reincorporate the link breaks, it seems to work. Can you try this?
var myDateField = $feature["ACQ_DATE"]; function getTimeDelta(alertDate){ var minutes = DateDiff(now(),alertDate, "minutes") var hours = DateDiff(now(),alertDate, "hours") var days = DateDiff(now(),alertDate, "days") if (minutes <= 120){ return round(minutes) + " minutes" } if (minutes > 120){ if (hours <= 48){ var tFloor = floor(hours) var deltaMin = datediff(now(),dateadd(alertDate,tFloor,'hours'),'minutes') return round(tFloor) + " hours and " + round(deltaMin) + " minutes" } if (hours > 48){ var dFloor = floor(days) var deltaHour = datediff(now(),dateadd(alertDate,dFloor,'days'),'hours') return round(dFloor) + " days and " + round(deltaHour) + " hours" } } } return getTimeDelta(myDateField)
@DennisJarrard That works, but I'm thinking that's the code for the popups, not the symbology (which I was questioning)? However, based on your formatting of the popups I was able to reverse-engineer out the code for the symbology (coding, and especially formatting, is not my strong suit)
function determineCategory(value){ if (value <= 4 ){ return "1" } else if (value > 4 && value <= 8){ return "2" } else if (value > 8 && value <= 12){ return "3" } else if (value > 12 && value <= 16){ return "4" } else if (value > 16 && value <= 20){ return "5" } else { return "6" } } var hours = DateDiff(now(),$feature["last_edited_date"], "hours") determineCategory(hours)
Thanks!
@MatthewKing great work! You're right, I posted the wrong section. Your code sample looks exactly like it should. I tried fixing the code samples in the blog, but the system seems to want to collapse mult-line code into a single line no matter what I do. This comments section will certainly help to guide other readers until I figure out how to fix it. Thanks for reaching out!
I've used the code above and incorporate my attribute data (DueDate) but when I run the expression I receive an error message saying Unexpected token. What does this mean?
function determineCategory(value){ if (value <= 0 ){ return "1" } else if (value > 0 && value <= 4){ return "2" } else if (value > 4 && value <= 7){ return "2" } else if (value > 7 && value <= 14){ return "3" } else if (value > 14 && value <= 30){ return "4" } } var days = DateDiff(now(),$feature["DueDate"], "days") determineCategory(days)
Membros conectados podem postar, seguir atualizações e mais. Novo aqui? Registre uma conta gratuita.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.