매일 업데이트되는 무료 데이터 세트에서 웹 페이지에 데이터를 그리는 방법은 무엇입니까?

Aug 17 2020

콜롬비아에서 확인 된 COVID-19 사례에 대한 데이터를 얻기 위해 아래 링크에있는 데이터를 사용하고 있습니다. 비선형 모델로 누적 케이스를 모델링하고 있으며 모두 괜찮습니다. 이것은 로컬로 작업하기 위해 데이터를 다운로드함으로써 이루어졌습니다. 나는 웹 개발을위한 메커니즘이 있고 내가이 커뮤니티에서 내가 필요로하는 것을 많이 찾았다는 것을 알고있다. 다만 웹 페이지의 링크에서 발견 된 데이터로부터 그래픽을 자동으로 업데이트하는 방법을 모른다.

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

제안 해 주셔서 감사합니다!

답변

4 flinty Aug 16 2020 at 23:18

데이터를 관리 하기 위해 Socrata 를 사용하는 것으로 보입니다 . 이 API에 대한 경험이 없지만 다음 형식의 URL을 사용하여 액세스 할 수있는 것으로 보입니다.

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

에 따르면 Socrata 문서 , 특정에이 데이터를 요청할 수 있습니다 $offset$limitURL에 매개 변수로 다음을 제공함으로써. 이것은 약간의 틈새 시장이며 Mathematica Stack Exchange의 범위를 벗어납니다.

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

그런 다음 다음을 형성하여 응답 JSON의 속성을 쿼리 할 수 ​​있습니다 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"} *)

데이터베이스 (케이스)의 총 항목 수를 원하면 다음과 같은 API를 사용할 수 있다고 생각합니다 $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 *)

이것은 Columbia의 데이터와 정확히 일치합니다. https://www.trackcorona.live/map 2020 년 8 월 16 일 기준.