Visualization เขต และ ตำแหน่งสถานที่ ด้วย Tableau

Intouch Kunakorntum
ASquareLab
Published in
3 min readMay 10, 2019

หลังจากในบทความที่แล้วเราได้ดูเรื่องของการนำเสนอแผนที่จังหวัดในประเทศไทยกันไป ในบทความนี้เราจะมาลงรายละเอียดในส่วนของเขต/อำเภอกันว่ามีวิธีการพลอทอย่างไร

การสร้างพื้นที่สำหรับจังหวัดนั้น Tableau จะสามารถรองรับชื่อจังหวัด (ที่เป็นภาษาอังกฤษ) ได้อย่างไม่มีปัญหา แต่ถ้าเราต้องการพลอทพื้นที่ที่เราสร้างเอง หรือพื้นที่ที่มีความละเอียดมากกว่านี้ ( เช่นต้องการพื้นที่เป็นเขต หรือ แขวง ) เราจำเป็นต้องมี Spatial File ก่อนสำหรับการพลอทพื้นที่เหล่านี้

แล้ว Spatial File คืออะไรละ ?

เพื่อความเข้าใจอย่างง่ายๆ เรามองว่า Spatial File คือข้อมูลที่บอกเกี่ยวกับพื้นที่ที่ตั้งว่าสถานที่นั้นอยู่ที่ใด และสามารถแสดงออกมาในรูปแบบของ จุด, เส้น หรือพื้นที่ (Polygon) ได้ ตัวอย่างเช่น ถ้าเราต้องการพลอทสถานที่ในกรุงเทพฯ เราจำเป็นต้องมี Spatial File ของเขตในกรุงเทพเพื่อที่จะทราบว่าแต่ละเขตนั้นมีพื้นที่ตรงไหนบ้าง ซึ่ง BangkokGIS มีไฟล์พื้นที่ให้เราได้ดาวน์โหลดมาลองใช้งาน รวมถึงในเว็บไซต์นี้ได้บอกตำแหน่งโรงพยาบาลในกรุงเทพฯด้วย ดังนั้นโจทย์ในบทความนี้คือการนำเสนอการกระจายตัวของโรงพยาบาลในกรุงเทพฯว่าเป็นอย่างไร ( ผู้อ่านสามารถนำไปประยุกต์กับโจทย์อื่นๆที่ต้องการได้ )โดยเบื้องต้น เราสามารถพลอทเป็นพื้นที่เขตในกรุงเทพฯ โดยสีของแต่ละเขตจะขึ้นอยู่กับจำนวนประชากรในพื้นที่นั้น และจะมีจุดบนแผนที่แสดงถึงที่ตั้งของโรงพยาบาล ดังนั้นข้อมูลที่ใช้จะมีดังนี้

  1. ข้อมูลพื้นที่ของเขตในกรุงเทพมหานคร โดย BangkokGIS นั้น มีตำแหน่งของแต่ละเขต รวมถึงจำนวนประชากรโดยแยกเป็นเพศหญิง (No Female) และเพศชาย (No Male) ดังนั้นจำนวนประชากรจะมาจากการบวกของ 2 Columns นี้ ( อย่างไรก็ตาม ผู้อ่านสามารถดึงข้อมูลประชากรในพื้นที่จากกรมการปกครองได้ซึ่งเป็นข้อมูลของปี 2561 )
  2. ข้อมูลตำแหน่งที่ตั้งโรงพยาบาลรัฐบาลและเอกชนในพื้นที่เขตกรุงเทพมหานคร โดยจาก BangkokGIS จะมีข้อมูลแสดงว่าแต่ละโรงพยาบาลนั้นมีจำนวนเตียงเท่าไหร่ซึ่งสามารถมานำเสนอบน Visualization ได้ ( ฺBangkokGIS ยังมีข้อมูลสถานพยาบาลอื่นๆอีกด้วย แต่สำหรับบทความนี้จะเลือกมาเฉพาะโรงพยาบาลรัฐบาลและเอกชน ดังภาพ)

โดยในส่วนของข้อมูลที่นำมาใช้นั้น ทางผู้เขียนได้รวบรวมและจัด Format ซึ่งผู้อ่านสามารถดาวน์โหลดได้ตาม ลิงค์ นี้ครับ ( ดาวน์โหลดทุกไฟล์ในโฟลเดอร์เนื่องจากต้องใช้ในการดึงข้อมูล )

ขั้นตอนแรกสำหรับการทำงาน เราจะเริ่มจากการอ่านไฟล์ ซึ่งชนิดของไฟล์จะแตกต่างกับบทความแรกโดยคราวนี้เราจะเลือก Spatial File ซึ่งเป็นสกุลไฟล์ที่เราจะอ่านกัน

หลังจากเลือกไฟล์ที่เราต้องการแล้ว เราจำเป็นจะต้อง Add อีกไฟล์ดังที่อธิบายข้างต้น โดยคลิกปุ่ม Add และเลือกไฟล์ที่ต้องการจะเพิ่ม

คลิก Add แล้วเลือกอีกไฟล์ ( ดังภาพ ได้เลือก District ไปในตอนแรก ในขั้นตอนนี้จึงเลือกไฟล์ Hospital )

หลังจากนั้นเมื่อเราต้องการเชื่อมข้อมูลสองส่วนเข้าด้วยกัน เราสามารถคลิกตรงกลางระหว่าง 2 ฐานข้อมูลและเลือกชนิดของการเชื่อมข้อมูลได้ โดยในตัวอย่างนี้เราจะเลือก Full Outer เพื่อนำเสนอข้อมูลพื้นที่ทั้งหมด และเลือกการเชื่อมแบบ Intersects

ทำการเชื่อมข้อมูลไว้ด้วยกัน

ในส่วนแรกนั้นเราจะทำการพลอทพื้นที่เขตในกรุงเทพก่อน ซึ่งสีพื้นที่ในแต่ละเขตนั้นจะเป็นจำนวนประชากรในพื้นที่ โดยเราจะใช้เป็น Column ที่ชื่อว่า No Male และ No Female มาบวกกัน โดยขั้นตอนคือ

ดับเบิ้ลคลิกที่ Geometry แล้วลาก Dname E มาไว้ที่ Detail
  1. ดับเบิ้ลคลิกที่ Geometry ของ District เพื่อทำการพลอทพื้นที่ในเขตกรุงเทพ
  2. ทำการเลือก Dname E ลงมาไว้ในส่วนของ Detail เพื่อทำการแบ่งแยกแต่ละพื้นที่ในการลงสีจำนวนประชากร
  3. เลือกColumn No Male ลากไปไว้ในส่วนของ Color และทำการแก้ไขเพิ่มเติมโดยการดับเบิ้ลคลิกที่ Tab Color ที่เพิ่มเข้าไปและทำการพิมพ์ “ + Sum([No Female])” เพื่อทำการรวมจำนวนผู้หญิงเข้าไปด้วย ( หรือจะทำในรูปแบบของ Calculated Field ก็ได้เช่นกัน )
เปลี่ยนสีให้แต่ละเขตขึ้นอยู่กับจำนวนประชากร

ต่อมา เราจะทำการพลอทตำแหน่งของโรงพยาบาลไว้บนแผนที่เขตกรุงเทพมหานคร ซึ่งเราจำเป็นจะต้องใช้วิธีเดียวกันกับบทความที่แล้ว โดยการลาก Latitude ไว้ที่ Rows และทำการคลิกขวาแล้วเลือก Dual Axis เพื่อให้แผนภาพมี 2 Layers ในการนำเสนอ

โดยในช่อง Marks นั้น จากที่เราได้ใส่ Latitude ไปในขั้นตอนที่ผ่านมา ให้เราเปลี่ยนชนิดของการนำเสนอ จาก Automatic ที่เป็น Map ให้เป็น Shape ( หรือ Circle ก็ได้ตามที่ต้องการ ) และลบ Pills ด้านล่างออกไป

เปลี่ยนจาก Map ให้เป็น Shape เนื่องจากต้องการนำเสนอในส่วนของตำแหน่งที่ตั้งเป็นจุด

หลังจากนี้ เราต้องการพลอทจุดของตำแหน่งโรงพยาบาล โดยแต่ละแห่งนั้น ความเข้มของสีและขนาดจะแสดงถึงจำนวนของเตียงที่มี รูปร่างของจุดจะแสดงถึงชนิดของโรงพยาบาล ( รัฐบาล/เอกชน) โดยเราเริ่มจากการลาก Geometry ของ Hospital และ Name ไปไว้ที่ Detail และทำการนำ Bed No (จำนวนเตียง) ไปไว้ที่ Color และ Size รวมถึงในส่วนของ Type ให้ลากไปไว้ที่ Shape

ลาก Column ที่ต้องการนำเสนอไปไว้ที่ Marks

โดยเมื่อเราลาก Column ที่เราต้องการไปวางเสร็จเรียบร้อยแล้ว เราสามารถตั้งค่า เช่น สี, ขนาด, รูปร่าง ( Shape ) ได้เลยจากการคลิกที่ช่องใน Marks และเลือกค่าตามที่ต้องการ

ถึงขั้นตอนนี้เราได้การพลอทตำแหน่งของโรงพยาบาลในกรุงเทพมหานครเสร็จเรียบร้อยแล้ว ( อย่างไรก็ตาม เราจำเป็นจะต้องมีข้อมูลให้ครบก่อนที่จะแปลผลข้อมูลได้ ในบทความนี้ทางผู้เขียนต้องการแบ่งปันวิธีการพลอทข้อมูลลงบนแผนที่ โดยใช้ข้อมูลมาแค่บางส่วน ดังนั้นอย่าวิตกถ้าหากบางเขตนั้นไม่เห็นมีโรงพยาบาล ) ซึ่งเราสามารถนำไปต่อยอดในการสร้าง Dashboard ได้

สำหรับการพลอทตำแหน่งหรือสถานที่นั้น ถ้าผู้อ่านมีข้อมูลของจังหวัดอื่นๆ ก็สามารถนำมาพลอทได้เช่นกัน แต่จำเป็นจะต้องมี spatial file ในการนำเสนอข้อมูล โดยในบทความหน้าเราจะมาตั้งโจทย์เพิ่มเติมจากบทความนี้กันว่า ในรัศมีบ้านของเรานั้น มีโรงพยาบาลทั้งหมดกี่แห่ง ทั้งนี้ สามารถประยุกต์ใช้ได้กับข้อมูลของโรงเรียนหรือห้างสรรพสินค้าได้

Reference : http://www.bangkokgis.com/modules.php?m=download_shapefile

Reference : https://www.tableau.com/about/blog/2018/8/perform-advanced-spatial-analysis-spatial-join-now-available-tableau-92166

ตอนที่1 : Visualize your data on Thailand Map with Tableau

--

--

Intouch Kunakorntum
ASquareLab

Master’s Student in Computer Engineering Department, KMUTT