มาใช้ LabVIEW ดึงข้อมูลรายงานผล Covid-19 กัน

มาใช้ LabVIEW ดึงข้อมูลรายงานผล Covid-19 กัน

แม้ว่าในช่วงนี้สถานการณ์ Covid-19 ในประเทศไทยมีทีท่าที่จะผ่อนคลายลงบ้างแล้ว ด้วยยอดผู้ติดเชื้อเพิ่มที่ลดลงอย่างต่อเนื่อง ประกอบกับมีนโยบายผ่อนปรนจากทางภาครัฐที่ประกาศออกมาเรื่อยๆ แต่อย่างไรก็ตามสถานการณ์ในต่างประเทศก็ยังคงน่าเป็นห่วงอยู่โดยเฉพาะประเทศในแถบทวีปยุโรปและอเมริกาที่ยังมียอดผู้ติดเชื้อเพิ่มขึ้นในอัตราที่สูงอยู่

 

 

            ในบทความนี้เราจะมาแนะนำการใช้ LabVIEW ในการดึงข้อมูลจากเว็บไซด์ เพื่อรายงานผล Covid-19 บน LabVIEW กัน โดยจะใช้ข้อมูล daily reports จาก GitHubhttps://github.com/CSSEGISandData/COVID-19/tree/master/csse_covid_19_data ซึ่งใน link นี้จะมีข้อมูลทั้งที่เป็นแบบ daily reports ที่แยกไฟล์เป็นรายงานของแต่ละวัน และแบบ time series ที่อัพเดทไฟล์เดิมแต่เพิ่มข้อมูลในตารางไปเรื่อยๆ ทุกวัน ในที่นี้จะขอเลือกใช้แบบ daily report โดยการระบุชื่อไฟล์ผ่าน Requsted URL ด้วย HTTP GET ใน HTTP Client ของ LabVIEW ในการดึงข้อมูล

 

 

            ข้อมูลบนเว็บไซด์จะมีการรายงานผลแต่ละคอลัมน์แบ่งเป็น เมือง, ประเทศ, วันที่อัพเดทข้อมูลล่าสุด, จำนวนผู้ติดเชื้อ (Confirmed), จำนวนผู้เสียชีวิต (Deaths), จำนวนคนที่รักษาหาย (Recovered) และจำนวนผู้ติดเชื้อที่ยังรักษาอยู่ (Active)

 

 

 

เราสามารถคลิกที่ Raw เพื่อดูข้อมูลในรูปแบบ RAW file ได้ โดยใน RAW file ข้อมูลในแต่ละคอลัมน์จะถูกคั่นด้วยเครื่องหมาย Comma (",") และแต่ละแถว (ชุดข้อมูล) จะถูกคั่นด้วยการขึ้นบรรทัดใหม่หรือ Enter ซึ่งก็คือรูปแบบของไฟล์ CSV หรือ Comma Separate Value นั่นเอง

 

 


ในส่วนของการสร้างปฏิทินและระบุวันที่ในการดึงข้อมูลจากเว็บไซด์ จะใช้ .NET Control ที่มีชื่อว่า MonthCalendar ใน .NET Container แล้วใช้ Property Node ที่มีชื่อว่า SelectionStart ในการดึงข้อมูลวัน เดือน ปี จากปฏิทิน ณ วันที่เราเลือก จากนั้นจึงแปลงให้เป็น String แล้วนำมารวมกับ Requested URL ที่จะ Input ไปที่ HTTP GET เพื่อเรียกไฟล์ของวันที่เราเลือกจากเว็บไซด์ต่อไป

 

  

 

ในการวิเคราะห์ข้อมูลจาก CSV file จะใช้ Read Delimited Spreadsheet ในการเปลี่ยนข้อมูลจาก CSV file ให้เป็น Array ในรูปแบบเดียวกับตารางบนเว็บไซด์ ทีนี้เราก็เพียงแค่ใช้ Index Array เลือกดึงข้อมูลคอลัมน์ที่ 3 (หรือก็คือคอลัมน์ที่ 4 ในตารางข้อมูลบนเว็บไซด์) ก็จะสามารถดึงชื่อของแต่ละประเทศในตารางออกมาจากข้อมูลดิบได้แล้ว ในทีนี้จะเลือกแสดงผลเพียง 10 ประเทศ ตาม List ใน Array เท่านั้น


แต่เนื่องจากในบางประเทศอย่างเช่น สหรัฐอเมริกา (US), อังกฤษ (United Kingdom) หรือจีน (China) จะมีการเก็บข้อมูลรายเมืองในแต่ละแถวของตารางด้วยและไม่ได้จัดเรียงข้อมูลรายประเทศต่อกันอย่างระเบียบ แต่สิ่งที่เราต้องการคือข้อมูลจำนวนรวมทั้งประเทศ ดังนั้นจึงใช้ For Loop และ Shift Register เพื่อวนบวกรวมข้อมูลผู้ติดเชื้อจากแต่ละแถวของตารางที่เป็นประเทศเดียวกันด้วย

 

 

 

สำหรับการระบุชนิดของข้อมูลที่ต้องการให้แสดงผล เราสามารถใช้ Enum ในการป้อน Input ให้กับ Index Array เพื่อเลือกดึงข้อมูลจากคอลัมน์ที่ 7, 10 และ 8 ซึ่งก็คือข้อมูลจำนวนผู้ติดเชื้อ (Confirmed), จำนวนผู้ติดเชื้อที่ยังรักษาอยู่ (Active) และจำนวนผู้เสียชีวิต (Deaths) มาแสดงผลตามลำดับ ส่วนข้อมูลคอลัมน์ที่ 4 จะเป็นข้อมูลของวันที่ที่อัพเดทข้อมูลล่าสุด ซึ่งปกติเว็บไซด์นี้จะมีการอัพเดทข้อมูลประมาณช่วงหลังเที่ยงคืนของทุกวัน เพราะฉะนั้นเราจะยังไม่สามารถดูข้อมูลของวันปัจจุบันได้จนกระทั่งมีการสรุปยอดของแต่ละวัน ในเวลาหลังเที่ยงคืนของวันนั้นๆ นั่นเอง

 

 

 

วิธีการและแหล่งข้อมูลนี้เป็นเพียงหนึ่งในวิธีการดึงข้อมูลรายงานผล Covid-19 เพื่อมาแสดงผลบน LabVIEW เท่านั้น ซึ่งจริงๆ แล้วยังมีแหล่งข้อมูลอีกหลายแหล่งที่เราสามารถดึงข้อมูลรายงานผล Covid-19 ได้ เช่น https://www.worldometers.info/coronavirus/#countries หรือ https://github.com/novelcovid/api ที่มีข้อมูลดิบบันทึกอยู่ในรูปแบบของ JSON file ซึ่งวิธีการดึงข้อมูลก็จะต้องใช้วิธีการในอีกรูปแบบหนึ่ง ลองไปทำกันดูนะครับ

 

 

 

ขอบคุณทุกท่านที่อ่านมาจนถึงบรรทัดนี้ และหวังว่าบทความนี้จะให้ไอเดียกับผู้ที่ต้องการศึกษาการใช้ LabVIEW

ในการทำ Application อยู่บ้างนะครับ คราวหน้าจะมีอะไรน่าสนใจอีก โปรดติดตามรับชมครับ...