Skip to main content

Jak wykorzystać FME do zebrania danych o COVID-19 – case study

By 29 maja, 20204 marca, 2022Case studies
fme covid
Koronawirus zmienił życie ludzi w wielu zakątkach globu. Śledzimy uważnie informacje na temat zachorowalności i czekamy na zakończenie pandemii. Są kraje, gdzie już ogłoszono jej koniec (jak np. Słowenia), ale w innych pojawiają się wciąż nowe przypadki zachorowań. Zobacz, jak dzięki FME uzyskać dane na ten temat i pobierz skrypt, który ułatwi ich zebranie z wielu źródeł.

Skąd i w jaki sposób pobierać dane o kolejnych przypadkach?

Ponieważ każdy kraj raportuje je osobno, analiza poszczególnych zestawów danych jest karkołomnym zadaniem. Zwłaszcza, że każdy z krajów ma inny interwał publikowania danych: dzienne raporty pojawiają się raz lub wiele razy dziennie, w różnych godzinach. Sytuacji nie ułatwia fakt, że organizacje czy serwisy internetowe wykorzystują różne metodyki zbierania oraz potwierdzania informacji o pandemii. Istnieją na przykład rozbieżności pomiędzy polskim Ministerstwem Zdrowia, World Health Organization czy danymi publikowanymi przez Johns Hopkins University Center for Systems Science and Engineering oraz Otwarty Portal Danych UE.

W Polsce raporty przedstawiane są przez Ministerstwo Zdrowia, zazwyczaj dwa razy dziennie. Informacje o nowych przypadkach, zgonach czy wyleczonych osobach w pierwszej kolejności zamieszczane są na oficjalnym profilu Ministerstwa na Twitterze. Dane te są również gromadzone i udostępniane na ich stronie internetowej Ministerstwa.

Jak efektywnie podejść do próby weryfikacji czy pobierania danych z tylu źródeł? Idealnym narzędziem będzie tu platforma integracyjna FME.

Pobieranie danych przy pomocy FME

Wiemy już, że każdy kraj ma obowiązek upubliczniania informacji na temat zachorowalności na COVID-19. W efekcie dane te są udostępniane w różnych formatach i z różną częstotliwością, co znacząco wpływa na ich aktualność. W jaki sposób zintegrować dane i porównać je ze sobą, aby były jak najbardziej aktualne?
FME może połączyć się bezpośrednio z API, przy pomocy których dane są udostępniane: na przykład pobrać je bezpośrednio z treści wiadomości na Twitterze. Oto jeszcze kilka innych możliwości.

Portal Otwartych Danych UE

Największą zaletą FME w kontekście dostępności jest transformer HTTPCaller – potężne narzędzie umożliwiające dostęp i wysyłanie zapytań do praktycznie każdego API lub strony z danymi. Przy odpowiednim złożeniu składni zapytania “Request URL” możemy w dowolny sposób docierać do pokładów danych wystawianych w sieci.

W tym przypadku skupimy się na jednoczesnym podłączeniu do:

  • Otwartego Portalu Danych UE (OPD UE), gdzie raportowany jest stan epidemii COVID-19
  • Repozytorium danych przestrzennych – w tym przypadku do mapy świata udostępnionej poprzez Centrum ArcGIS HUB.

Dane z OPD UE można pobrać na kilka sposobów, m.in. poprzez zapisanie pliku w formacie XML bądź JSON. W pierwszej części skryptu zmierzymy się z pobraniem plików w tych formatach, zarówno poprzez zapis do pliku, jak i otrzymanie wyniku w wartości atrybutu “_response_body”.

Punkt po punkcie

Część 1.1 pokazuje, jak FME radzi sobie z tym zagadnieniem i agregacją pobranych danych do dalszej pracy. Dane pobrane z OPD UE posiadają tylko wartości opisowe, bez atrybutu przestrzennego, dlatego dodaliśmy dostępne online mapy świata, żeby lepiej przedstawić dystrybucję danych. W części 1.2 geometrie krajów zostały pobrane z wykorzystaniem bezpośredniej wtyczki do “Esri ArcGIS Server Feature Service”, a następnie w części 1.3 połączone po kluczu nazwy kraju. Jak to bywa z indeksowaniem po słownym kluczu, nie wszystkie kraje zostały zmapowane. Powodem są różnice w nazwach pomiędzy dwoma zbiorami danych. Na szczęście transformery zawarte w pakiecie FME dają możliwość mapowania wartości atrybutów np. poprzez AttributeValueMapper. W skrypcie zmapowaliśmy część nazw dla lepszego przedstawienia problemu COVID-19 w najbardziej dotkniętych epidemią krajach. FME umożliwia dalsze prace na statystykach, dlatego w łatwy sposób można wyodrębnić TOP-10 najbardziej dotkniętych krajów lub podzielić dane na pożądane zakresy. Czy tak pobrane dane mogą być wkładem do zasilenia innego systemu GIS lub danych raportowych? Z FME jest to możliwe – platforma wspiera ponad 450 formatów.

Novel Coronavirus (COVID-19) Cases Data – JHU CSSE

Od początku epidemii w internecie raportowano jej stan w poszczególnych krajach, prezentując mapę stworzoną przez Johns Hopkins University Center for Systems Science and Engineering. Dane raportowane są tam codziennie na podstawie informacji ze stron rządowych lub organizacji pozarządowych. Końcowym etapem jest ekstrakt danych w postaci plików CSV do serwisu GitHub lub innych pokrewnych jak np. Humanitarian Data Exchange. We wspomnianym już pliku CSV można znaleźć zestawienie zbiorcze dzień po dniu lub dane zagregowane do danego dnia. W drugiej części skryptu przedstawiamy zarówno możliwość bezpośredniego zapytania do repozytorium GitHuba, gdzie zamieszczane są ekstrakty danych, jak i przez stronę “pośrednią”, czyli Humanitarian Data Exchange.

W obu przypadkach interesuje nas pobranie pliku CSV – szczegół tkwi w rodzaju zapytania, jakie dochodzi do HTTPCaller, różnego dla każdego z wymienionych serwisów. Na koniec otrzymuje się możliwość bezpośredniego zaczytania zawartości plików. Można też zagregować wyniki do całości krajów, ponieważ niektóre z nich posiadają dane w rozbiciu na jednostki administracyjne np. USA. Dane posiadają współrzędne centroidów krajów, dlatego bezpośrednio poprzez pola można wyświetlić dane w odpowiednim miejscu w przestrzeni.

Twitter MZ oraz GOV.pl

Jak już wspomnieliśmy, w Polsce dane ukazują się najszybciej na oficjalnym twitterowym profilu Ministerstwa Zdrowia. W tej chwili są one publikowane dwa razy dziennie: około 8:00 oraz 17:00. Ich struktura jest zunifikowana i powtarzalna: możemy w nich znaleźć informacje o nowych przypadkach, aktualny stan w każdym z województw oraz sumaryczny wynik dla całego kraju. Twitter udostępnia w ramach swojego API m.in. możliwość wyszukiwania w historii tweetów poprzez konkretne zapytanie o treść. W podstawowej wersji można to zrobić w treściach do 7 dni wstecz. W wyższych pakietach można przejrzeć zawartość serwisu do 30 dni czy nawet od 2006 roku. Jednak w tym przypadku pakiet STANDARD jest wystarczający.

FME pozwala na wykorzystanie gotowych transformerów, odwołujących się do twitterowego API, m.in. TweetSearcher. Pozwala on na przeszukanie serwisu na przykład przez frazy czy liczbę iteracji zwracającej zapytanie. Można posłużyć się również innym kryterium, np. czy tweet był dodany w ostatnim czasie lub czy należy do najpopularniejszych pod względem udostępnień, reakcji czy komentarzy. Aby skorzystać z TweetSearcher, wystarczy jedynie mieć konto na Twitterze i ustawić je w FME jako konto WebConnections.

W trzeciej części skryptu zamieściliśmy dwie informacje do wyszukania – raport na temat nowych przypadków oraz podsumowania dzisiejszego dnia w porównaniu do ubiegłego. W obu przypadkach szukamy stałej frazy odnoszącej się do codziennego raportowania polskiego MZ. Opiera się ona na poszukiwaniu tweetów z oficjalnego konta Ministerstwa oraz szuka standardowej frazy: “liczba nowych przypadków/potwierdzone zgony”.
Skrypt będzie zwracał najlepsze dane na koniec dnia, czyli po drugim ogłoszeniu dziennego raportu MZ.

W czwartej części skryptu skupimy się na pobraniu informacji z oficjalnej strony Rzeczpospolitej Polskiej, gdzie znajduje się zakładka “Mapa zarażeń koronawirusem (SARS-CoV-2)”. Dane aktualizowane są po każdym nowym raporcie Ministerstwa Zdrowia.
Mamy tu możliwość odpytania strony i uzyskania interesujących nas danych bezpośrednio z treści HTML. HTTPCaller pozwala na zwrócenie zawartości strony bezpośrednio do atrybutu “_reponse_body”. Jedna z linijek kodu zawiera sumarycznie zbiór odnoszący się do całości kraju oraz poszczególnych województw. Wystarczy wydobyć te informacje, używając składni wyrażeń regularnych, aby w prosty sposób otrzymać listę z rozbiciem na poszczególne województwa. W dalszej części sprawa jest już prosta – znając stałe pozycje każdej z danych, transferujemy je do pożądanych atrybutów, jak “Liczba_Zachorowań” czy “Liczba_Zgonów”. Ponieważ dane pobrane ze strony nie zawierają komponentu przestrzennego, wykorzystamy dowolny zbiór danych, udostępnionych nieodpłatnie w Internecie. Poprzez klucz nazwy województwa jesteśmy w stanie połączyć dane atrybutowe z konkretnymi granicami administracyjnym Polski.

Mamy nadzieję, że dzięki powyższym przykładom przekonaliśmy was, jaka moc tkwi w Platformie Integracyjnej FME. Nie zawsze trzeba mieć kompletny zbiór danych przestrzennych oraz opisowych, aby w prosty sposób przedstawić każde zagadnienie, nawet przebieg epidemii COVID-19. Wystarczy dobra aplikacja z możliwością połączenia się z bankami danych. A jeśli chcecie sami zmierzyć się z opisanym wyżej zadaniem, pobierzcie skrypt. Pamiętajcie, że został on stworzony w FME 2020.0 build 20202. W przypadku korzystania ze skryptu na starszych wersjach FME, konieczna będzie aktualizacja niektórych transformatorów.

Aby ułatwić wykonywanie pracy zdalnej oraz wspierać walkę z koronawirusem, Safe Software udostępnia licencję FME całkowicie za darmo.