Como plotar dados em uma página da web a partir de um conjunto de dados gratuito que é atualizado diariamente?

Aug 17 2020

Estou usando os dados disponíveis nos links abaixo para obter dados sobre os casos confirmados de COVID-19 na Colômbia. Estou modelando os casos cumulativos com um modelo não linear e está tudo bem. Isso foi feito baixando os dados para trabalhar localmente. Sei que existem mecanismos para desenvolvimento web e muito do que preciso encontrei nesta comunidade, exceto que não sei como fazer a atualização gráfica automática a partir dos dados encontrados nos links de uma página web.

https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr/data

https://www.datos.gov.co/w/gt2j-8ykr/dneh-mcp2?cur=i2Z4n-Qy94T&from=root

Obrigado por suas sugestões!

Respostas

4 flinty Aug 16 2020 at 23:18

Parece usar o Socrata para gerenciar os dados. Não tenho experiência com esta API, mas parece que você pode acessá-la usando esta forma do URL:

https://www.datos.gov.co/Salud-y-Protecci-n-Social/Casos-positivos-de-COVID-19-en-Colombia/gt2j-8ykr

De acordo com a documentação do Socrata , você pode solicitar esses dados em um determinado local $offsete $limitfornecendo-os como parâmetros no URL. Este é um pequeno nicho e está além do escopo do Mathematica Stack Exchange, mas espero que você comece:

(* fetch 10 records starting from offset 0 *)
request = 
  HTTPRequest["https://www.datos.gov.co/resource/gt2j-8ykr.json",
   <| Method -> "GET", "Query" -> {"$limit" -> 10, "$offset" -> 0}, 
    CharacterEncoding -> "UTF8"|>];
response = URLExecute[request];

Podemos então consultar as propriedades do JSON de resposta formando um Association:

(* of our 10 records, get the first 5 cities of location *)
Association[#]["ciudad_de_ubicaci_n"] & /@ response[[1 ;; 5]]
(* {"Bogotá D.C.", "Guadalajara de Buga", "Medellín", "Medellín", "Medellín"} *)

Se você quiser o número total de entradas no banco de dados (casos), acho que você pode usar a API desta forma $select=count(id_de_caso):

request = 
  HTTPRequest["https://www.datos.gov.co/resource/gt2j-8ykr.json",
   <| Method -> "GET", 
      "Query" -> {"$select" -> "count(id_de_caso)", "$offset" -> 0}, 
      CharacterEncoding -> "UTF8"|>];
response = URLExecute[request];

numberOfCases = ToExpression@Values[First[response]][[1]]

(* 456689 *)

Isso corresponde exatamente aos dados de Columbia em https://www.trackcorona.live/map a partir de 16 de agosto de 2020.