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[…]

Python – OOP(Object-Oriented Programming)

สำหรับ python นั้นภาษาหนึ่งที่รองรับรูปแบบการเขียนโปรแกรมหลายกระบวนทัศน์(multi-paradigm programming language) หรือถ้าให้เรียกง่ายๆ ก็คือรองรับรูปแบบการเขียนโปรแกรมในหลายรูปแบบ(อ่านเพิ่มเติมเกี่ยวกับกระบวนทัศน์) ซึ่งจะสามารถใช้การเขียนโปรแกรมในหลายรูปแบบ ซึ่งคุณลักษณะหนึ่งที่รับมาใช้งานก็คือ รูปแบบการเขียนโปรแกรมแบบหนึ่งที่เป็นที่นิยมกันมากในปัจจุบันคือ การเขียนโปรแกรมเชิงวัตถุ หรือ OOP(Object-Oriented programming language) การเขียนโปรแกรมในรูปแบบเชิงวัตถุนั้น จะให้ความสำคัญกับวัตถุจะเป็นการจัดแบ่งส่วนประกอบต่างๆในโปรแกรมให้เป็นวัตถุ (object) โดยวัตถุจะสามารถดำเนินการต่างๆ ได้, เก็บข้อมูลต่างและสื่อสารเพื่อแลกเปลี่ยนข้อมูลระหว่างกันและ โดยวัตถุหนึ่ง(object)หนึ่งจะประกอบด้วยลักษณะสำคัญ 2 ประการ คือ: – คุณลักษณะ(attributes) สำหรับเก็บข้อมูลต่างๆที่เกี่ยวข้องกับวัตถุนี่ – พฤติกรรม(behavior) เป็นการดำเนินการของวัตถุนี่ อาจจะใช้เพื่อคำนวนต่างๆ หรือส่งข้อมูลไปมา ตัวอย่างเช่น เรากำหนดให้สร้างวัตถุชนิดหนึ่ง(object)แทน การทำงานเกี่ยวกับรถยนต์ ซึ่งภายในวัตถุนี้มีลักษณะสำคัญตามหัวข้อข้างต้นดังนี้ คุณลักษณะ(attributes) ของรถยนต์ ประกอบด้วย: สี, ชนิด, จำนวนล้อ, ความยาว, ความกว้าง, ความสูง พฤติกรรมของรถยนต์(behavior) ประกอบด้วย: เคลื่อนไปข้างหน้า, ถอยไปข้างหลัง, เลี้ยว, จอด เราใช้งาน OOP เพื่อที่สามารถจะช่วยให้ไม่มีการเขียนกลุ่มคำสั่งใดๆ Read more about Python – OOP(Object-Oriented Programming)[…]

Python – User-defined Exception

Python – User-defined Exception สำหรับ python นั้น มี built-in exception ที่สร้างไว้ให้ใช้งานแล้วหลายชนิดตามที่กล่าวถึงไปในบทก่อนหน้านี้ เพื่อให้สามารถรองรับการเกิดข้อผิดพลาดในรูปแบบต่างๆ ที่สามารถเกิดขึ้นในโปรแกรม นอกจากข้อผิดพลาดในรูปแบบดังกล่าว เรายังสามารถที่จะกำหนดวิธีการรองรับข้อผิดพลาดชนิดใหม่ขึ้นเอง(user-defined exception) เพื่อจัดการข้อผิดพลาด หรือ ส่งข้อข้อมูลเฉพาะเจาะจงให้เหมาะสมตามรูปแบบข้อผิดพลาดนั้นได้อีกด้วย วิธีการสร้างการรองรับข้อผิดพลาดชนิดใหม่ๆ ขึ้นมาใช้งานเองนั้น(user-defined exception) สามารถทำได้โดยการสร้างคลาสใหม่สำหรับข้อผิดพลาดนั้น โดยคลาสใหม่ทุกคลาสที่จัดการกับข้อผิดพลาดนี้จะต้องเป็นคลาสที่สืบทอดมาจากคลาส Exception อาจจะเป็นการสืบทอดโดยตรง หรือ สืบทอดต่อกันมาอีกทอด(derived) จากคลาสต้นแบบที่เป็น built-in exception สำหรับคลาสที่เป็น built-in exception ทุกคลาสที่มีให้ใช้งาน ต่างเป็นเป็นคลาสที่สืบทอดมาจากคลาส Exception นี้เช่นเดียวกัน รูปแบบการสร้าง user-defined exception ที่สืบทอดมาจากคลาส Exception โดยตรง เราสามารถสร้าง user-defined exception ขึ้นมาใช้งานเอง โดยการสร้างคลาสขึ้นมาใหม่ และคลาสเหล่านี้จำเป็นต้องสืบทอดมาจากคลาส Exception โดยตรง หรือ คลาสอื่นๆ ที่สืบทอดมาจากคลาส Read more about Python – User-defined Exception[…]

Python – Exception Handling(Try, Except และ Finally)

Python – Exception Handling(Try, Except และ Finally) ทำความรู้จักกับ exception ในบทนี้เราจะมาพูดถึงขั้นตอนในการเขียนคำสั่งเพื่อดักจับข้อผิดพลาดในรูปแบบต่างๆ ที่อาจเกิดขึ้นได้ในโปรแกรมที่เราเขียนขึ้นมาใช้งาน จากบทที่แล้ว ที่เราได้พูดถึงชนิดของข้อผิดพลาดที่มีให้ใช้งานกันใน python(built-in exception) ซึ่งเมื่อเกิดข้อผิดพลาดในระหว่างการดำเนินการคำสั่งต่างๆ ก็จะมีการแจ้งข้อผิดพลาดนั้นออกมา โดยสามารถจะมีรูปแบบที่เฉพาะเจาะจงตามชนิดของข้อผิดพลาดนั้นๆ หรืออาจจะมีรูปแบบอธิบายข้อผิดพลาดแบบกว้างๆ ก็ได้ เมื่อเกิดข้อผิดพลาด(exceptions) ขึ้นในระหว่างการดำเนินการทำคำสั่ง หากเรามีการเขียนคำสั่งเพื่อจัดการกับข้อผิดพลาดได้ถูกต้องและครอบคลุมถึงชนิดข้อผิดพลาดดังกล่าว และมีการปรับคำสั่งรองรับให้เหมาะสม เราสามารถจะข้ามขั้นตอนที่ทำให้เกิดข้อผิดพลาดนั้นไป และไปทำงานในคำสั่งส่วนอื่นๆ หรืออาจจะให้โปรแกรมหยุดการทำงานแต่ก็แจ้งรายละเอียดข้อผิดพลาดที่เหมาะสมและเข้าใจง่ายได้ แต่หากเราไม่มีการเขียนคำสั่งเพื่อจัดการกับข้อผิดพลาดเลย อาจจะส่งผลให้โปรแกรมที่ดำเนินการอยู่หยุดลงทันที โดยไม่ได้ทำการบันทึกข้อมูลสำคัญ, จัดการกับข้อมูลที่ได้ประมวลผลก่อนหน้า หรือ ปรับข้อความให้เหมาะสมเผื่อให้ผู้ใช้งานสามารถเข้าใจถึงข้อผิดพลาดได้ง่าย ตัวอย่างเช่น ถ้าหากมีการเขียนโปรแกรมให้ฟังก์ชัน A เรียกใช้ฟังก์ชัน B ซึ่งเรียกใช้ฟังก์ชัน C อีกที แล้วมีข้อผิดพลาดเกิดขึ้นในฟังก์ชัน C ถ้าภายในฟังก์ชัน C มีการเขียนคำสั่งเพื่อจัดการข้อผิดพลาด โดยอาจเป็นการระบุค่าที่เหมาะสม หรือปรับอัลกอริทึมให้เหมาะสม แล้วแจ้งข้อมูลข้อผิดพลาดนั้นและวิธีแก้ไขให้ผู้ใช้ทราบเพื่อเป็นข้อมูล ก็สามารถข้ามไปทำคำสั่งอื่นๆ ต่อไปได้โดยไม่หยุดการทำงานของโปรแกรม แต่ถ้าไม่มีการเขียนคำสั่งเพื่อจัดการข้อผิดพลาด(handle exception) ไว้ในฟังก์ชัน C Read more about Python – Exception Handling(Try, Except และ Finally)[…]

Python – Error and Built-in Exceptions

Python – Error and Built-in Exceptions เมื่อต้องเขียนโปรแกรมที่มีความซับซ้อนมากขึ้น บ่อยครั้งภายในระบบที่ซับซ้อนอาจเกิดข้อผิดพลาดในระหว่างการทำคำสั่งต่างๆ ได้ โดยข้อผิดพลาดนั้นอาจจะเกิดขึ้นได้เนื่องจากหลายสาเหตุ ในบทนี้เราจะมาเรียนรู้เกี่ยวกับรูปแบบของ ข้อผิดพลาดที่เกิดจากการเขียนโปรแกรมไม่ถูกต้องตามหลักภาษา และ ข้อผิดพลาดที่เกิดในระหว่างการดำเนินการของโปรแกรม ข้อผิดพลาดที่เกิดจากการเขียนคำสั่งไม่ถูกต้องตามหลักภาษา ข้อผิดพลาดที่เกิดจากการเขียนคำสั่งไม่ถูกต้องตามหลักภาษา(syntax error, parsing error) ข้อผิดพลาดแบบนี้จะเกิดในช่วงที่กำลังแปรผลคำสั่งของโปรแกรม ให้เป็นภาษาของคอมพิวเตอร์เพื่อใช้สำหรับดำเนินการทำคำสั่งต่อไป ซึ่งจะมีการแจ้งข้อผิดพลาดและระบุรายละเอียดว่าคำสั่งส่วนใดที่ไม่ถูกต้องตามหลักภาษา ตัวอย่างการใช้งาน # -*- coding: utf-8 -*- # เรียกใช้งานไลบรารี่ math import math # ฟังก์ชันสำหรับคำนวณระยะทางจากข้อมูลความเร็วต้น, ความเร่งและเวลา def calculate_distance(initial_velocity, acceloration, time) distance = initial_velocity*time + (1.0/2.0)*acceloration*math.pow(time, 2) return distance # คำนวณระยะทางที่ม้าตัวหนึ่งสามารถวิ่งได้ เมื่อเวลาผ่านไป 10 วินาที โดยกำหนดให้ # Read more about Python – Error and Built-in Exceptions[…]

Python – Directory and Files Management

Python – Directory and Files Management สำหรับโปรเจคขนาดใหญ่ที่มีการแยกไฟล์ไว้เป็นกลุ่มตามการทำงานที่เกี่ยวเนื่องกัน อาจจะจัดการนำไฟล์เหล่านั้นมาจัดลงในโฟลเดอร์ย่อยๆ เพื่อจะง่ายต่อการเรียกใช้งาน, ค้นหาและทำการแก้ไข เมื่อมีการแยกส่วนกันสำหรับไฟล์จำนวนมาก เมื่อจำเป็นต้องเรียกใช้งานเพื่อแก้ไข, เพิ่มข้อมูล หรือลบ ไฟล์เหล่านั้น เราก็จำเป็นที่จะต้องสามารถระบุตำแหน่งของแต่ละไฟล์และแต่โฟลเดอร์เหล่านั้น เพื่อจะสามารถดำเนินการได้ถูกต้อง สำหรับ python นั้นสามารถเรียกใช้งานไลบรารี่ เช่น ไลบรารี่ os ในการเข้าถึงและทำการแก้ไขกับโครงสร้างการจัดเก็บข้อมูลของไฟล์และโฟลเดอร์เหล่านั้น พร้อมกับข้อมูลตำแหน่งที่ตั้งของไฟล์ต่างๆภายในระบบปฏิบัติการนั้นอีกด้วย สำหรับในบทความนี้เราจะใช้ตัวอย่าง จากโครงสร้างการจัดเก็บข้อมูลภายในโฟลเดอร์หนึ่งที่ถูกเก็บไว้ตรงตำแหน่ง “/home/<user>/works/python_tutorial/directory_and_files_management/”( โดย <user>: อ้างอิงถึงชื่อผู้ใช้งานระบบปฏิบัติการ ซึ่งอาจจะเปลี่ยนแปลงตามชื่อผู้ใช้งานที่ใช้ login เข้าใช้ระบบปฏิบัติการ ณ เวลานั้น) สำหรับโฟลเดอร์ดังกล่าวนั้นทำการเก็บไฟล์สำหรับข้อมูลเวปไซต์เวปหนึ่ง โดยจะมี ไฟล์ “index.html” สำหรับหน้าหลักของเวปไซต์ โฟลเดอร์ “css” สำหรับเก็บข้อมูลเกี่ยวกับ stylesheet โฟลเดอร์ “javascript” สำหรับเก็บข้อมูลเกี่ยวกับฟังก์ชันต่างๆในภาษา javascript โฟลเดอร์ “images” สำหรับเก็บรูปภาพที่จะต้องทำการใช้งานภายในเวปไซต์ดังกล่าว โดยจะมีโครงสร้างของไฟล์และโฟลเดอร์ดังแผนภาพด้านล่างนี้นี้ สำหรับฟังก์ชันที่เรียกใช้งานในตัวอย่างสำหรับบทนี้นั้น ได้ทำการคำสั่งจาก Read more about Python – Directory and Files Management[…]

Python – File I/O

Python – File I/O ไฟล์ คือ รูปแบบการเก็บข้อมูลบนดิสก์ซึ่งจะใช้ในเก็บข้อมูลในหน่วยความจำแบบถาวร โดยจะใช้ชื่อไฟล์ที่กำกับไว้ตอนบันทึกข้อมูลสำหรับอ้างอิงของตำแหน่งของข้อมูลดังกล่าว โดยการบันทึกข้อมูลในรูปแบบไฟล์บนคอมพิวเตอร์นั้น จะมีชนิดของไฟล์ค่อนข้างหลากหลาย แต่สำหรับชนิดของไฟล์ที่จะยกตัวอย่างในการอ่าน/เขียนข้อมูลสำหรับบทความนี้ เป็นไฟล์ข้อมูลและไฟล์รูปภาพซึ่งจัดเป็นไฟล์ชนิด text และ binary ตามลำดับ ตัวอย่างลักษณะของไฟล์ข้อมูลและรูปภาพ เนื่องจากข้อมูลที่ถูกบันทึกในรูปแบบไฟล์นั้นถูกจัดเก็บบนหน่วยความจำแบบถาวร สำหรับอุปกรณ์ชนิดดังกล่าวดังกล่าว แม้ไม่มีไฟเลี้ยงส่งไปให้อุปกรณ์ก็จะยังมีข้อมูลเก็บอยู่ในหน่วยความจำ(non-valtile memory)หากข้อมูลถูกบันทึกไปแล้ว เช่น อุปกรณ์เก็บข้อมูล ฮาร์ดิสก์(harddisk), ยูเอสบีไดรฟ์(usb drive) โดยหน่วยความจำแบบถาวรนั้นจะมีความแตกต่างกับหน่วยความจำแบบชั่วคราว(volatile memory) เช่นอุปกรณ์จำพวกแรม(RAM: random access memeory) ซึ่งอุปกรณ์เก็บข้อมูลบนหน่วยความจำชั่วคราวนี้ อุปกรณ์ดังกล่าวจะสูญเสียข้อมูลทั้งหมดเมื่อทำการปิดคอมพิวเตอร์ไป เพราะไม่มีไฟส่งไปเลี้ยงให้อุปกรณ์สำหรับเก็บข้อมูลนั้น แต่สำหรับการอ่าน/เขียนข้อมูลในรูปแบบนี้จะใช้เวลาน้อยกว่ามากเมื่อเทียบกับการอ่าน/เขียน ข้อมูลจากหน่วยความจำแบบถาวร การเก็บข้อมูลทั้งหน่วยความจำแบบชั่วคราว(volatile memory)และหน่วยความจำแบบถาวร(non-volatile memory)นั้นจะมีข้อดีข้อเสียแตกต่างกันไป โดยขึ้นอยู่กับบริบทที่ต้องการใช้งาน เราสามารถเลือกใช้การเก็บข้อมูลตามความเหมาะสม โดยในบทความนี้เราจะทำการพูดถึงรายละเอียดการอ่าน/เขียน ข้อมูลซึ่งถูกเก็บไว้ในรูปแบบของไฟล์ ซึ่งเป็นการเก็บข้อมูลในหน่วยความจำแบบถาวรรูปแบบหนึ่ง ขั้นตอนหลักๆ ในการดำเนินการกับไฟล์ เมื่อเราจำเป็นต้องอ่าน/เขียน ข้อมูลออกมาจากไฟล์ที่บันทึกไว้ ก่อนที่จะเริ่มอ่าน/เขียนไฟล์นั้น เราจำเป็นต้องทราบตำแหน่งที่ไฟล์ดังกล่าวถูกบันทึกและชื่อไฟล์ จากนั้นจึงทำการเปิดไฟล์ขึ้นมาหรือทำการสร้างไฟล์ใหม่หากไม่มีไฟล์ดังกล่าวอยู่ แล้วจึงสามารถทำการอ่าน/เขียนข้อมูลของไฟล์ หลังจากดำเนินการกับไฟล์เสร็จสิ้น เราก็จำเป็นต้องทำการปิดไฟล์ด้วย Read more about Python – File I/O[…]

Python – Matrix

Python – Matrix เมทริกซ์(matrix) คือการจัดโครงสร้างข้อมูลในรูปแบบ 2 มิติ(two-dimensional) ซึ่งจะนำข้อมูลตัวเลขไปทำการจัดเรียงให้อยู่ในโครงสร้างซึ่งประกอบด้วยแถว(row)และหลัก(column) จากตารางตัวอย่างนั้น เป็นการจำลองการเก็บข้อมูลจำนวนหนังสือที่อยู่ในคลังสินค้าของร้านหนังสือสาขาต่างๆ โดยจัดเก็บข้อมูลในรูปแบบเมทริกซ์(matrix) ที่มีขนาด 5×4 คือมีข้อมูล 5 แถว และ 4 หลัก เนื่องจากใน python นั้นไม่มีรูปแบบข้อมูลชนิดเมทริกซ์ หากต้องการจัดโครงสร้างข้อมูลให้อยู่ในรูปแบบดังกล่าว ต้องอาศัยการจัดรูปแบบข้อมูลโดยใช้ลิสต์ซ้อนอยู่ภายในลิสต์มาแทน หรืออาจใช้อาเรย์ซ้อนอยู่ภายในอาเรย์จากไลบรารี่ numpy การสร้างข้อมูลในรูปแบบเมทริกซ์ การสร้างเมทริกซ์ของข้อมูลโดยการสร้างลิสต์ซ้อนอยู่ภายในลิสต์ การสร้างเมทริกซ์ของข้อมูลโดยการกำหนดข้อมูลทั้งหมดภายในครั้งเดียว เนื่องจากใน python ไม่มีชุดข้อมูลชนิดเมทริกซ์ ดังนั้นการสร้างข้อมูลรูปแบบเมทริกซ์ต้องอาศัยการสร้างข้อมูลลิสต์ซ้อนอยู่ภายในข้อมูลอีกลิสต์หนึ่งโดยแต่ละลิสต์ภายในจะแยกกันด้วยเครื่องหมาย “, ” และข้อมูลทั้งหมดจะอยู่ภายในเครื่องหมาย “[]” ตัวอย่างการใช้งาน # -*- coding: utf-8 -*- # กำหนดตัวแปรเก็บข้อมูลในโครงสร้างเมทริกซ์ โดยอาศัยชนิดข้อมูลลิสต์ซ้อนอยู่ภายในลิสต์ # เพื่อเก็บข้อมูลในรูปแบบเมทริกซ์แทน โดยทำการเก็บข้อมูลจำนวนหนังสือที่คงเหลือในคลังสินค้า # ของร้านจากสาขาต่างๆ books_in_stores = [[5, 0, Read more about Python – Matrix[…]