Jak wykreślić dane na stronie internetowej z bezpłatnego zestawu danych, który jest aktualizowany codziennie?

Aug 17 2020

Korzystam z danych, które są dostępne w poniższych linkach, aby uzyskać dane o potwierdzonych przypadkach COVID-19 w Kolumbii. Modeluję skumulowane przypadki za pomocą modelu nieliniowego i wszystko jest w porządku. Dokonano tego poprzez pobranie danych do pracy lokalnie. Wiem, że istnieją mechanizmy do tworzenia stron internetowych i wiele z tego, czego potrzebuję, znalazłem w tej społeczności, z wyjątkiem tego, że nie wiem, jak automatycznie aktualizować grafikę z danych znalezionych w linkach na stronie internetowej.

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

Dzięki za sugestie!

Odpowiedzi

4 flinty Aug 16 2020 at 23:18

Wydaje się, że do zarządzania danymi używa programu Socrata . Nie mam doświadczenia z tym interfejsem API, ale wygląda na to, że możesz uzyskać do niego dostęp za pomocą tej formy adresu URL:

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

Zgodnie z dokumentacją Socrata możesz zażądać tych danych w konkretnym miejscu $offseti $limitpodając je jako parametry w adresie URL. Jest to trochę niszowe i wykracza poza zakres Mathematica Stack Exchange, ale miejmy nadzieję, że to pomoże Ci zacząć:

(* 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];

Następnie możemy zapytać o właściwości odpowiedzi JSON, tworząc 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"} *)

Jeśli chcesz uzyskać całkowitą liczbę wpisów w bazie danych (przypadków), to myślę, że możesz użyć API w następujący sposób $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 *)

To zgadza się dokładnie z danymi dla Kolumbii pod adresem https://www.trackcorona.live/map stan na 16 sierpnia 2020 r.