html,js,leaflet – เปรียบเทียบความคมชัดของไฟล์แผนที่ .geojson ซึ่งบีบอัดโดยความละเอียดต่างกัน ตอนที่ 2

จาก 2 บทความก่อนหน้านี้:- บทความแรก: เราได้ทำการบีบอัดข้อมูลแผนที่จาก shapefile ให้เป็นไฟล์ .geojson ซึ่งเราได้ทดลองทำการบีบอัดไฟล์ข้อมูลแผนที่ประเทศไทยซึ่งมีข้อมูลระบุขอบเขตของทุกจังหวัด เพื่อบีบอัดจากไฟล์ที่มีความละเอียดสูงให้มีขนาดเล็กลงเพื่อตอนที่โหลดเพื่อนำไปใช้งานจะได้ไม่ต้องใช้หน่วยความจำในการโหลดและประมวลผลมากนัก โดยฟังก์ชันที่ใช้ในการบีบอัดสำหรับบทความที่แล้วเราก็ยังสามารถระบุความละเอียดของแผนที่ได้ตามความเหมาะสมที่เราจะนำไปใช้งาน บทความที่สอง: เราได้ทำการเขียนโปรแกรมเพื่อดึงข้อมูลแผนที่ซึ่งได้ทำการบีบอัดให้ขนาดไฟล์เล็กลงออกมาแสดงผลดู และเปรียบเทียบความละเอียดของแผนที่ในบางพื้นที่ ว่าเมื่อดูด้วยตาของเราจริง ความละเอียดของการบีบอัดที่แตกต่างการจะส่งผลต่อการมองเห็นต่างกันมากน้อยอย่างไร ในบทความนี้เราจะลองเขียนโปรแกรมเพื่อดึงข้อมูลแผนที่แต่ละจังหวัดออกมา และแสดงผลเปรียบเทียบสำหรับความละเอียดของไฟล์ .geojson แต่ละแบบที่เราได้ทำการบีบอัดข้อมูลเอาไว้ เพื่อดูว่า เมื่อเราต้องการดูข้อมูลแผนที่ในระดับที่ดูโครงร่างของจังหวัด ในความละเอียดแต่ละแบบจะแสดงผลแตกต่างกันอย่างไรบ้าง ตัวอย่างโปรแกรมเปรียบเทียบความละเอียดของแผนที่ซึ่งถูกบีบอัดด้วยความละเอียดที่แตกต่างกัน(สามารถเลือกชื่อจังหวัดเพื่อเปรียบเทียบแผนที่ซึ่งความละเอียดข้อมูลแตกต่างกัน) ในตัวอย่างด้านล่างนี้ เราจะเปรียบเทียบไฟล์แผนที่ .geojson ที่ถูกบีบอัดให้เหลือไฟล์ขนาดที่แตกต่างกัน 3 ระดับ จากละเอียดน้อยด้านซ้าย(ขนาดไฟล์เล็ก) ไปจนถึงความละเอียดมากด้านขวา(ขนาดไฟล์ใหญ่ขึ้น) จากนั้นเราลองเลือกดูแผนที่ของจังหวัดชัยนาท(Chai Nat) จะเห็นว่าการแสดงผลแผนที่จากไฟล์ .geojson ที่บีบอัดจากความละเอียดที่แตกต่างกัน ก็แสดงผลออกมาไม่แตกต่างกันมากนัก แต่สำหรับแผนที่อันซ้ายสุดที่ถูกบีบอัดไฟล์ .geojson จนเหลือไฟล์ขนาด 553.9 kB นั้น ข้อมูล polygon ของแผนที่จะมีความหยักน้อยลงกว่าแผนที่อันกลางกับอันขวาสุดแบบสังเกตุได้ชัด แม้ว่ารูปร่างของเส้นแบ่งเขตแดนจังหวัดจะไม่เปลี่ยนแปลงไปมากนัก แต่ข้อมูลก็มีความแตกต่างที่พอจะมองเห็นได้ด้วยสายตา ดังนั้นถ้าต้องการจะนำไปใช้กับแอพลิเคชันที่ดูข้อมูลระดับของเขตจังหวัดออกมาดู ก็อาจจะต้องพิจารณาเลือกไฟล์ที่มีขนาดใหญ่ขึ้นกว่านี้อีกสักหน่อย เช่น แผนที่อันกลางซึ่งมีความละเอียดไฟล์ 2.9 MB Read more about html,js,leaflet – เปรียบเทียบความคมชัดของไฟล์แผนที่ .geojson ซึ่งบีบอัดโดยความละเอียดต่างกัน ตอนที่ 2[…]

html,js,leaflet – เปรียบเทียบความคมชัดของไฟล์แผนที่ .geojson ซึ่งบีบอัดโดยความละเอียดต่างกัน ตอนที่ 1

จากบทความตอนที่แล้ว เราได้ทดลองทำการบีบอัดไฟล์ข้อมูลแผนที่ประเทศไทยซึ่งมีข้อมูลระบุขอบเขตของทุกจังหวัด เพื่อบีบอัดจากไฟล์ที่มีความละเอียดสูงให้มีขนาดเล็กลงเพื่อตอนที่โหลดเพื่อนำไปใช้งานจะได้ไม่ต้องใช้หน่วยความจำในการโหลดและประมวลผลมากนัก โดยฟังก์ชันที่ใช้ในการบีบอัดสำหรับบทความที่แล้วเราก็ยังสามารถระบุความละเอียดของแผนที่ได้ตามความเหมาะสมที่เราจะนำไปใช้งาน หลังจากบีบอัดไฟล์ข้อมูลแผนที่ .geojson ซึ่งมีความละเอียดที่แตกต่างกันแล้ว ออมก็มีความสงสัยขึ้นมาอีกว่า แล้วข้อมูลที่ถูกบีบลงไปนั้นจะยังคงความละเอียดมากแค่ไหน จะเหมาะกับนำไปใช้งานอย่างไร เดี๋ยววันนี้เราจะมาลองดึงข้อมูลดังกล่าวเพื่อมาแสดงผลเป็นข้อมูลแผนที่ที่ถูกบีบอัดด้วยความละเอียดที่แตกต่างกัน ลองมาซูมแผนที่ดู ว่าข้อมูลแผนที่ที่ถูกบีบอัดแล้วความละเอียดจะเพียงพอกับการใช้งานหรือไม่ ในบทความนี้ ออมก็เลยทดลงเขียนแอพลิเคชันขึ้นมาหนึ่งอัน เพื่อไว้ทดสอบการแสดงผลแผนที่ ซึ่งบีบอัดด้วยความละเอียดแตกต่างกัน และเราจะใช้ html ร่วมกับ javascript และ library leaflet สำหรับแอพลิเคชันนี้เพื่อจะใช้ในการนำมาแสดงผลข้อมูลแผนที่และเขียนโค้ดให้รับข้อมูลเข้าไปนิดหน่อย ตัวอย่างโปรแกรม จะเห็นจากในโปรแกรมด้านบน ก็จะมีแสดงแผนที่ 3 แบบ ซึ่งบีบอัดมาด้วยความละเอียดของไฟล์แตกต่างกัน แผนที่ด้านซ้ายสุด ถูกบีบอัดจนเหลือขนาดไฟล์ 553.9 kB แผนที่ตรงกลาง ถูกบีบอัดจนเหลือขนาดไฟล์ 2.9 MB แผนที่ด้านขวาสุด ถูกบีบอัดจนเหลือขนาดไฟล์ 14.1 MB ส่วนตัวเลือกในแอพลิเคชัน เราจะแสดงตัวอย่างที่การซูมแผนที่ 3 ระดับ เลือกดูแผนที่ในระยะซูมดูข้อมูลแผนที่รวมทั้งประเทศ (ตั้งค่าจุดกึ่งกลางเป็น [13.29900, 100.9925], ระดับซูม 5) เลือกดูแผนที่ในระยะซูมเพื่อดูแผนที่เฉพาะจังหวัดภูเก็ต (ตั้งค่าจุดกึ่งกลางเป็น Read more about html,js,leaflet – เปรียบเทียบความคมชัดของไฟล์แผนที่ .geojson ซึ่งบีบอัดโดยความละเอียดต่างกัน ตอนที่ 1[…]

ตัวอย่างแผนที่ซึ่งใช้ไลบรารี่ leaflet ที่ใช้แผนที่แบบ choropleth

python – แปลงข้อมูลจากแผนที่จาก shapefile(.shp) ให้เป็นรูปแบบ GeoJSON

พอดีอยากได้ข้อมูลรายละเอียดแผนที่ขอบเขตของแต่ละจังหวัดในประเทศไทยและต้องการข้อมูลที่เก็บข้อมูลอยู่ในรูปแบบ GeoJSON(ไฟล์ .geojson) ที่แสดงขอบเขตของแต่ละจังหวัดของประเทศไทย เพื่อให้สามารถเอาข้อมูลนี้ไปแสดงผลร่วมกับไลบรารี่ leaflet ในการแสดงแผนที่ในรูปแบบ choropleth(แผนที่ซึ่งในแต่ละขอบเขตตามจังหวัดมีการลงสีหรือแรเงาให้แต่ละพื้นที่ตามข้อมูลตัวเลขเชิงปริมาณ ตัวอย่างเช่น จำนวน, ความหนาแน่น หรือข้อมูลอื่นๆ โดยสีที่แสดงในแต่ละขอบเขตของแต่ละจังหวัดนั้นจะแสดงตัวเลขเชิงปริมาณที่แตกต่างกันในแต่ละขอบเขตอีกทีหนึ่ง) ตัวอย่างการใช้งานแผนที่แบบ choropleth ของไลบรารี่ leaflet ลองค้นข้อมูลที่เป็นข้อมูลแผนที่แสดงขอบเขตของแต่ละจังหวัดของประเทศไทย ก็ไปเจอข้อมูลที่เป็น shapefile จากเวป OpenDevelopmentMekong ซึ่งข้อมูลแสดงขอบเขตจังหวัดต่างๆของประเทศไทยนั้นถูกเก็บอยู่ในรูปแบบไฟล์ที่เป็น shapefile(.shp) เราก็เลือกดาวน์โหลดอันที่เป็น .SHP มาใช้งาน แล้วในข้อมูลที่ได้มาก็มีข้อมูลที่ใช้ร่วมกันเพื่อแสดงข้อมูลอื่นๆ ที่จำเป็นสำหรับแผนที่ในรูปแบบไฟล์(.shx, .dbf, .prj) มาด้วยกันและพอจะนำมาใช้ได้ ก็เลยคิดว่าจะเอาข้อมูลนี้แหละมาแปลงให้เป็นข้อมูลในรูปแบบ GeoJSON(.geojson) พอดาวน์โหลดไฟล์แผนที่ดังกล่าวมาจะเป็น zip file พอแตกข้อมูลออกมาแล้วจะเห็นว่าจะมีไฟล์หลายไฟล์ที่ชื่อเดียวกันแต่เป็นไฟล์คนละนามสกุลกัน (.shp, .shx, .dbf, .prj) ซึ่งแต่ละไฟล์จะทำหน้าที่แตกต่างกันและเก็บข้อมูลกันคนละรูปแบบ เพื่อนำมาใช้ร่วมกันอีกที สำหรับการแปลงไฟล์ข้อมูลรูปแบบ shapefile(.shp) ให้เป็นไฟล์ที่เก็บข้อมูลในเป็นรูปแบบ GeoJSON(.geojson) ในครั้งนี้เราจะใช้ไลบรารี่ของ python ที่ชื่อว่า GeoPandas เริ่มต้นด้วยการติดตั้งไลบรารี่ GeoPandas กันก่อน Read more about python – แปลงข้อมูลจากแผนที่จาก shapefile(.shp) ให้เป็นรูปแบบ GeoJSON[…]