Hack Map ขอบเขตประเทศไทย อาวุธลับ data science

Tanakan Chua
2 min readAug 22, 2020

--

เกมส์ส่วนใหญ่ ตัวละครมักมองไม่เห็นแผนที่ทั้งหมด ต้องเดินเปิด map ไปเรื่อยๆ เดินไปๆ โดนดักซุ่มโจมตี ดับคาที่ ทำให้ผู้เล่นหลายคน ก็ถวิลหา สูตรโกงที่จะเปิด map (เช่น black sheep wall ใครรู้นี่โครตแก่) ทำให้รู้เขารู้เรา ทำอะไรก็ง่ายไปหมด แต่ที่เกริ่นมาทั้งหมด ก็ไม่ได้เกี่ยวกับเกมส์หรอก ปัญหามันคือ ชีวิตจริง (T T)ก็อยากทำได้แบบเกมส์ ที่หลายๆองค์กร อยากเห็นภาพธุรกิจว่าแต่ละพื้นที่ในประเทศไทยของบริษัทฉันเป็นอย่างไรบ้าง ศัพท์เท่ๆ ว่า visibility ตัวอย่างเช่น

เราคุยกันกับเพื่อนๆว่า สาวจังหวัดไหนน่ารักสุด ให้โหวต top3 กัน ผล ปรากฎว่า จังหวัด นครปฐมมาอันดับ1, ขอนแก่น2 และ กรุงเทพ3 ทีนี้จากผลโหวต เราอยากเอาจังหวัดเหล่านี้มาพลอตสีบนแผนที่ จะได้เห็นภาพชัดๆไปเลย เราจะทำยังไง (ปล.ผลโหวตไม่มีนัยใดๆ เป็นการมั่วขึ้นมานะครับ และ ก็ไม่โยงใยอะไรกับภาพธุรกิจเลย hahaha)

ตัวอย่าง การระบายสีแผนทีจังหวัดในประเทศไทย

ตามรูปก็จะเห็นความเข้มของสีว่า นครปฐมที่ 1 สีจึงเข้มสุด ไล่เฉดสีลดหลั่นกันไปตามลำดับ

แน่นอนว่า data science หลายๆคนคงวาด map กันได้ ไม่ว่าจะใช้ ภาษา R หรือ python หรือ powerBI ก็ตามแต่ แต่ปัญหาก็คือ เฮ้ยถ้าจะระบายสีพื้นที่ประเทศไทย แบ่งระดับ จังหวัด ระดับ อำเภอ ตามนี้ได้อย่างไรนะ วันนี้เลยจะมาแชร์ข้อมูลส่วนนี้ให้ทุกคนครับ

จากที่ลองศีกษาดูโดยหลักการแล้ว เราสามารถ วาดรูปทรงต่างๆบนแผนที่ได้ โดยการ plot lat lon บนแผนที่ต่อๆกันไปเรื่อยๆตามรูปทรงที่ต้องการ

source from https://deparkes.co.uk/2016/06/03/plot-lines-in-folium/

ตามรูปตัวอย่างเป็นการวาดเส้น ก็จะ plot lat lon ติดๆกันหลายๆจุดให้ได้รูปทรงตามเส้นที่ต้องการ

ทีนี้ถ้าอยากได้รูปทรงจังหวัด อำเภอ คุณก็แค่ plot lat lon ตามขอบจังหวัดต่างๆ แค่นั้นเอง ถ้าเราจะ plot ซักจังหวัดนึงก็คงหลายร้อยจุดได้ ใครจะถึกทำฟระ ก็เลยคิดว่ามันต้องมี opendata บ้างหละหน่าคนใจดีทำไว้ให้ใช้ได้เลย ค้นหากับอาจารย์กู๋ ด้วยภาษาไทยไปเนิ่นนาน เพราะคิดว่าเป็นข้อมูลประเทศไทย ก็ไปเจอ ขอบเขตระดับจังหวัดอยู่ ซึ่งไป load ได้จาก github ของพี่jeepkd

แต่ระดับอำเภอตำบลนี่สิหาไมไ่ด้เลย เลยลอง search เป็นภาษาอังกฤษดูบ้าง ปรากฏว่าไปเจอ web เทพ อันนึงมี มันทั่วโลกเลย โหดจัด link ตามนี้เอาไปใช้กันได้

วิธีการคือ

  1. เลือก ประเทศที่ต้องการ

2. จะขึ้น ไฟล์ type ต่างๆมาให้โหลด โดย level-0 คือขอบประเทศ, level1 = จังหวัด, level2 =อำเภอ และ level3 =ตำบล ซึ่งมีไฟล์หลายนามสกุล ขึ้นกับว่าจะไปใช้กับ tool อะไร

ซึ่งตัวผม โหลด Shapefile เพื่อเอาไฟล์ .shp ไปใช้ต่อกับ python และ ลอง load ข้อมูล.shp ด้วย library geopandas และ plotคร่าวๆ ระดับอำเภอ ด้วย library folium ก็จะได้ตามรูปนี้ (จริงๆ geopandas ก็ plot ได้เลยนะครับ แล้วแต่ เทคนิคใคร แต่ folium มีความ cool ตรงที่มันเป็น interactive คือ zoom ขยับ ตัวแผนที่ได้ )

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

แถม ใครมีปัญหาติดตั้ง geopandas ไม่ได้ error ผมทำตาม กระทู้นี้แล้วสามารถติดตั้งได้ครับ

https://stackoverflow.com/questions/54734667/error-installing-geopandas-a-gdal-api-version-must-be-specified-in-anaconda

--

--