covid-19
[BigQuery Geo Viz 툴을 이용해 간단하게 전세계 COVID-19 데이터를 시각화한 결과]
2020-03-28 데이터 사용



Google BigQueryBigQuery Geo Viz

Google Cloud Platform에서 제공하는 서버리스 데이터 웨어하우스인 ‘빅 쿼리(Big Query)’의
지리공간 데이터 시각화를 제공하는 웹 툴인 BigQuery Geo Viz에 대해 소개하고,
전세계의 코로나19(COVID-19) 현황을 시각화 해보도록 하겠습니다.


BigQuery GIS


  • BigQuery는 GIS 기능이 내장된 유일한 클라우드 데이터 웨어하우스
  • WKT(Well-Known-Text), WKB(Well-Known Binary), GeoJSON 형식의 임의의 점, 선, 다각형, 다중 다각형을 지원

위와 같은 특징 때문에 BigQuery를 이용한 GIS 데이터를 다루는게 용이합니다.

(참고) WKT, WKB, GeoJSON?

  • WKT: 점, 선, 다각형이나 점, 선, 다각형 컬렉션을 사용하여 개별 도형 모양을 기술하는 텍스트 형식
    ex) POINT(-121 41)
  • WKB: WKT 형식의 바이너리 버전
  • GeoJSON: WKT 보다 복잡한 JSON 기반 형식으로 도형과 공간 지형지물을 나타냄
    ex) { "type": "Point", "coordinates": [-121,41] }


BigQuery GIS 데이터 시각화


빅쿼리 GIS 데이터를 시각화 할 수 있는 툴의 종류는 아래와 같습니다.

  • BigQuery Geo Viz
  • Google Earth Engine
  • Jupyter 메모장(GeoJSON 확장 프로그램을 통해)

이 중, BigQuery Geo Viz에 대해 자세히 알아보겠습니다.


BigQuery Geo Viz


BigQuery Geo Viz 웹 툴 바로가기

  • Google Maps API를 사용하여 BigQuery의 지리 공간 데이터를 시각화하는 웹 도구

BigQuery Geo Viz

  • 화면 구성
    • (좌) GIS 데이터 조작
      1. Query
        • BigQuery에 저장된 데이터에 대해 바로 SQL을 실행할 수 있습니다.
        • SQL에 대한 결과가 시각화되어 간편하게 사용할 수 있습니다.
      2. Data
        • 시각화 대상의 데이터가 표시됩니다.
      3. Style
        • 시각화에 대한 스타일을 지정할 수 있습니다.
    • (우) 지도 뷰
      • 시각화 결과가 표시되는 유동적인 지도가 존재합니다.
      • 확대/축소 기능, 위성 사진으로 변경, 거리뷰, 캡쳐 등의 기능이 지원됩니다.


COVID-19 데이터로 시각화를 해보자


Google BigQuery Public Data를 이용하기

BigQuery Public Data

BigQuery Public Data에 올라와 있는 수많은 데이터를 가지고 실습을 해볼 수 있습니다.
그 중, Johns Hopkins University Center for Systems Science and Engineering (JHU CSSE)에서 제공하는
COVID-19(covid19_jhu_csse) 데이터 셋을 활용해보겠습니다.


코로나19(COVID-19) 데이터 개요

COVID-19

covid10_jhu_csse 데이터 셋은 COVID-19의 영향을 받은 모든 국가의 확진, 사망 및 회복 데이터가 담겨 있습니다.
이 데이터는 해당 국가 또는 주에서 집계되어 구성되어 있고, 매일 업데이트 됩니다.

데이터 셋에는 총 4개의 테이블이 존재합니다.

  • confirmed_cases: 확진자 케이스
  • deaths: 사망 케이스
  • recovered_cases: 회복 케이스
  • summary: 요약

이 중, summary 테이블을 사용하도록 하겠습니다.

summary schema

국가, 주 정보와 위경도, 요약 집계 날짜, 확진자, 회복자, 사망자 수가 요약되어 있습니다.


데이터 전처리

summary 테이블의 데이터는

  • 업데이트 될 때마다 요약 집계 행이 추가됨
  • 국가별 위경도가 단일인 경우와 아닌 경우가 혼재되어 있음

그렇기 때문에

  • 가장 최신 날짜의 요약 집계만 사용
  • 각 국가별 최대 확진 수를 보유하고 있는 위경도만 사용
    • 국가별 위경도를 보정하는 방법은 다양한데, 이 포스트에서는 간단한 방법을 사용합니다. 추가적인 보정 방법은 추후 포스팅하도록 하겠습니다!
    • 다른 방법으로 보정하고 싶을 때 보면 좋을 참고 함수: ST_CENTROID_AGG

쿼리에 3가지의 전처리를 하도록 하겠습니다.

  • 가장 최신 날짜의 요약 집계만 사용 → WHERE 절로 날짜 필터링
  • 각 국가별 최대 확진 수만 사용 → ROW_NUMBERS() 함수 이용
    • ROW_NUMBERS() OVER ()
      • 행 번호를 매겨줌
      • OVER() 절에 ORDER BY를 사용하지 않으면 순서가 보장되지 않음

최종 사용할 쿼리

WITH s1 AS (
  SELECT 
    ROW_NUMBER() OVER (ORDER BY country_region, confirmed) id, *
  FROM `bigquery-public-data.covid19_jhu_csse.summary` 
  WHERE date = '2020-03-28'
  )  

SELECT s1.country_region, s1.location_geom, confirmed
FROM s1
INNER JOIN (
  SELECT country_region, MAX(id) id
  FROM s1
  GROUP BY country_region
  ) s2
ON s1.id = s2.id


BigQuery Geo Viz로 시각화

1. Query

run query

위에서 만든 쿼리를 BigQuery Geo Viz의 Query 란에 넣고 RUN을 합니다.
각 국가별 작은 점으로 표현되는 것을 확인할 수 있습니다.

2. Data

show result

Show Result 버튼을 누르면 쿼리의 결과를 보여줍니다.

3. Style

add style

Add Style 버튼을 누르면 시각화 옵션을 변경할 수 있습니다.

  • fillColor: 다각형 또는 점의 채우기 색상
  • fillOpacity: 다각형 또는 점의 채우기 불투명도. 값은 0(투명)에서 1(불투명) 사이의 범위여야 함
  • strokeColor: 다각형 또는 선의 획이나 윤곽선 색상
  • strokeOpacity: 다각형 또는 선의 획이나 윤곽선 불투명도. 값은 0(투명)에서 1(불투명) 사이의 범위여야 함
  • strokeWeight: 다각형 또는 선의 획 또는 윤곽선 너비(픽셀 단위)
  • circleRadius: 점을 나타내는 원의 반지름(픽셀 단위)

각 스타일마다 모든 결과에 적용되는 ‘글로벌(Global) 값’ 또는 각 결과 행의 데이터에 따라 상대적으로 적용되는 ‘데이터 기반(Data Driven) 값’이 지정됩니다.

데이터 기반(Data Driven) 값의 경우 결과를 결정하는 데 다음이 사용됩니다.

  • function: 필드 값에서 스타일 값을 계산하는 데 사용되는 함수
    • identity: 각 필드의 데이터 값이 스타일 값으로 사용
    • categorical: 도메인에 나열된 각 필드의 데이터 값이 범위 내의 해당 스타일과 일대일로 매핑
    • interval: 각 필드의 데이터 값이 도메인에서 가장 가까운 값으로 내림된 후 범위 내의 스타일로 스타일링
    • linear: 각 필드의 데이터 값이 도메인의 여러 값에 대하여 선형으로 보간된 후 범위 내의 해당 스타일의 혼합으로 스타일이 지정
  • field: 데이터에서 지정된 필드가 스타일 지정 함수의 입력으로 사용
  • domain: 필드의 샘플 입력 값의 순서가 지정된 목록입니다. 샘플 입력(도메인)은 지정한 함수에 따라 샘플 출력(범위)과 페어링되고 모든 입력의 스타일 값을 유추하는 데 사용됩니다(도메인에 나열되지 않은 값까지 포함). 도메인의 값은 시각화할 필드의 값과 유형(텍스트, 숫자 등)이 동일해야 합니다.
  • range: 스타일 규칙의 샘플 출력 값의 목록입니다. 범위의 값은 제어할 스타일 속성과 유형(색상 또는 숫자)이 동일해야 합니다. 예를 들어 fillColor 속성 범위에는 색상만 포함해야 합니다.

시각화 결과

final viz

  • fillOpacity 0.5로 설정 (global)
  • circleRadius
    • Funtion: linear
    • Field: confirmed (확진자 수)
    • Domain: 1000 ~ 121478(max)
    • Range: 50000 ~ 2000000 (세계 지도로 봤을 때 점의 크기가 명확하게 보이게 하기 위하여)

미국과 유럽이 발생지인 중국을 넘어섰네요.
빨리 코로나가 끝났으면 좋겠습니다. ㅠ_ㅠ (이제 곧 벚꽃 시즌…🌸)



BigQuery Geo Viz 툴을 이용하여 간단하게 데이터 시각화를 해보았습니다.
아주 다양한 기능은 제공하고 있진 않아서
EDA 등 간단하게 데이터 분포를 확인할 때 이용하면 좋을 것 같습니다.


참고 자료