ทดสอบรีด QGIS แบบโหดสัสด้วยชุดข้อมูล Open Building V3 โพลีกอน 74 ล้านหลัง

ในโลก open source ผมยอมใจกับ QGIS ที่ผ่านกาลเวลาการพัฒนามาแล้วเกือบสามทศวรรษด้วยคุณภาพแบบไร้ที่ติ ถึงจะไม่มีฟีเจอร์หวือหวาแบบโปรแกรม GIS เชิงพานิชย์ตัวอื่นๆในท้องตลาด แต่ถ้าเราใช้ GIS แบบพื้นฐาน QGIS สามารถตอบสนองตรงนี้ได้แบบดีเยี่ยม

ผมเองทึ่งในประสิทธิภาพและประทับใจในการอ่านไฟล์ราสเตอร์ ที่ผมใช้งานอยู่ขนาดประมาณ 32 GB อ่านไฟล์ผ่านไดรว์ NAS ได้อย่างสบายๆแค่เพียงกระพริบตาไม่กี่ครั้ง ก็เลยมีความสงสัยว่า QGIS จะมีพลังขนาดไหนในการอ่านไฟล์เวคเตอร์

Google Open Buildings V3

ไฟล์ราสเตอร์ที่ใหญ่ๆ ผมนึกถึง Open Buildings V3 ของกูเกิ้ลที่ปล่อยมาร่วมๆจะสองปีกว่าแล้ว โดยรวมไฟล์ที่เป็นอาคาร บ้านต่างๆ ที่กูเกิ้ลจัดทำขึ้นมาจากภาพถ่ายดาวเทียมความละเอียดสูง เนื่องจากขนาดที่ใหญ่โตมโหฬาร จึงนิยมใช้งานในบริการ Earht Engine ของกูเกิ้ลเองเพื่อประมวลผลต่างๆ ตั้งแต่การประมาณประชากร การวางผังเมือง และการตอบสนองด้านมนุษยธรรม ไปจนถึงวิทยาศาสตร์สิ่งแวดล้อมและสภาพภูมิอากาศ

คำนิยามของ Open Buildings V3 ที่ผมจับมาจากเวบไซต์ของกูเกิ้ลมีดังนี้ “ชุดข้อมูลแบบเปิดขนาดใหญ่นี้ประกอบด้วยโครงร่างของอาคารที่มาจากภาพถ่ายจากดาวเทียมความละเอียดสูง 50 ซม. ข้อมูลนี้มีการระบุอาคาร 1.8 พันล้านหลังในแอฟริกา ลาตินอเมริกา แคริบเบียน เอเชียใต้ และเอเชียตะวันออกเฉียงใต้ การอนุมานครอบคลุมพื้นที่ 58 ล้านตารางกิโลเมตร

รูปแบบข้อมูล

การเก็บข้อมูลของกูเกิ้ลของภาพชุดนี้ใช้รูปแบบง่ายๆคือ CSV (Comma Separated Value) โดยที่หนึ่งแถวหรือหนึ่งระเบียนเก็บข้อมูลอาคารหรือบ้านหนึ่งหลัง โดยมีฟิลด์ข้อมูลในรายละเอียดดังนี้

  • latitude: เป็นค่าละติจูดของจุดศูนย์กลางพื้นที่ (centroid) ของอาคาร,
  • longitude: เป็นค่าลองจิจูดของจุดศูนย์กลางพื้นที่ (centroid) ของอาคาร,
  • area_in_meters: พื้นที่ของโพลีกอนของอาคาร,
  • confidence: คะแนนความเชื่อมั่นที่บ่งบอกระดับความมั่นใจว่านี่คืออาคาร,
  • geometry: รูปร่างเรขาคณิตของอาคารที่ลักษณะเป็นโพลีกอนหรือมัลติโพลีกอน ในรูปแบบ WKT format,
  • full_plus_code: รูปแบบพลัสโค้ด Plus Code ที่แสดงตำแหน่งของศูนย์กลางพื้นที่ของอาคาร.

ดาวน์โหลดชุดข้อมูล

ไปดาวน์โหลดกันได้ที่นี่ กูเกิ้ลนับว่าใจกว้างให้ใช้ฟรีโดยไม่มีเงื่อนว่าจะต้องลงทะเบียน คลิกเลือกพื้นที่แล้วก็ดาวน์โหลดกันมาเลย เนื่องจากไฟล์ใหญ่ระดับ GB ดังนั้นเน็ตขอให้เร็วเป็นพอ

เพิ่มชั้นข้อมูล CSV

ผมเลือกไฟล์มาหนึ่งไฟล์ก่อนในเบื้องต้นคือไฟล์ “311_buildings.csv.gz” ขนาดประมาณ 3 GB เมื่อทำการ unzip ด้วย 7zip จะได้ไฟล์ csv ขนาดมหึมา 8 GB ทำการเพิ่มชั้นข้อมูล (Add Layers) ด้วย Layers > Add Layer > Add Delimited Layer ทำการเลือกไฟล์ 311_buildings.csv ที่ Geometry Definition ตั้งเป็น Well known text (WKT) โดยที่ Geometry type เลือกเป็น Automatic หรือตั้งเป็น Polygon ก็ได้ ที่สำคัญคือ Geometry CRS เลือกเป็น EPSG – 4326 – WGS84

ตอนเลือกไฟล์เสร็จจะเห็น QGIS พยายามสแกนไฟล์ ดูจำนวนโพลีกอนหรือจำนวนเรคคอร์ดได้ประมาร 35 ล้านหลัง ไฟล์นี้ครอบคลุมประเทศไทยครึ่งซีกแบ่งที่ประมาณกรุงเทพฯ อีสานตอนล่างแล้วคลุมประเทศเขมรทั้งหมด

ทดสอบและเปรียบเทียบ

การทดสอบการอ่านไฟล์เข้า QGIS จะทดสอบด้วยคอมพิวเตอร์สองเครื่อง

  • เครื่องแรกเป็นโน้ดบุ๊คคอมพิวเตอร์ มีสเป็คดังนี้ CPU: Intel Core Ultra 275, GPU: RTX5070 TI 12GB, RAM 64 GB, SSD 1TB
  • เครื่องที่สองเป็นเครื่องคอมพิวเตอร์ตั้งโต๊ะ CPU: Intel i9 12900K, GPU: RTX3080Ti 12GB, RAM 64GB, SSD 2TB
ComputerS2 File BlockTime (minute)Remark
Laptop Computer311 Buildings14Add layer
Desktop Computer311 Buildings15Add layer
จับเวลาการเพิ่มชั้นข้อมูล Open Buildings V3

การจับเวลาเริ่มต้นจับเคาะปุ่ม Add เพื่อเพิ่มข้อมูล จากนั้นเครื่องจะอ่านไฟล์ CSV มาจนครบและจับเวลาหยุด จะเห็นว่าโน้ตบุ๊คคอมพิวเตอร์ที่เป็นเครื่องรุ่นใหม่ (ซื้อกลางปี 2025) กว่าทำเวลาดีกว่าเครื่องตั้งโต๊ะเล็กน้อย เวลา 14-15 นาทีถือว่าเป็นเวลาที่รอกันได้ สามารถไปชงกาแฟจิบๆ ยังไม่หมดแก้ว

การเรนเดอร์โพลีกอน

การเรนเดอร์ QGIS จะแสดงผลแบบไม่ให้รอคือเรนเดอร์โพลีกอนไปเรื่อยๆ ถ้าทิ้งไว้จะมีโพลีกอนเพิ่มมา สามารถเลื่อนหรือไปซูมพื้นที่อื่นได้

รีดเค้นพลัง QGIS

การทดสอบต่อไปจะเป็นการรีดพลังของ QGIS ถ้าเปรียบกับรถบรรทุกในรอบแรกคือใส่สินค้าหนักเต็มกระบะหลัง เป็นการทดสอบความเร็วที่ถนนเรียบ ต่อไปจะเพิ่มไฟล์อีกไฟล์หนึ่งที่มีขนาดจำนวนโพลีกอนมากกว่าไฟล์แรก โดยที่มีจำนวนโพลีกอน 39 ล้านหลังเป็นพื้นที่ภาคอีสาน รวมลาวไปจนถึงเวียดนามด้านบน การทดสอบนี้เหมือนการเอารถบรรทุกใส่สินค้าหนักเต็มแล้วพ่วงกระบะบรรทุกสินค้าเพิ่มเข้าไป 1 พ่วง แล้ววิ่งขึ้นเขาที่ความชัน 8% ถ้าพลังของ QGIS ไม่พอ เครื่องยนต์และช่วงล่างจะต้องมาพังกันที่การทดสอบนี้

จากการจับเวลาการเพิ่มข้อมูล CSV จากไฟล์ “313 buildings” ได้ผลดังตารางนี้

ComputerFile BlockTime (minute)Remark
Notebook computer313 buildings31Add layer
Desktop computer313 buildings39Add layer

โพลีกอนอาคาร 75 ล้านหลัง QGIS ไม่สะทกสะท้าน

ที่ผมคิดว่า QGIS จะพังที่การทดสอบนี้ กลับเปล่าเลย เครื่องมีอาการอืดไปนิดหนึ่ง เหมือนว่าจะร้องขอไฟล์ทดสอบเพิ่มมาอีก”เอาอีก เอาอีก” ผมทำการบันทึกข้อมูลเป็น Geopackage (gpkg) ใช้เวลานานมากสำหรับการบันทึกแต่ละไฟล์ แต่เมื่อบันทึกไฟล์ได้แล้ว ทำการปิด QGIS เปิดมาอีกครั้งแล้วทำการสร้างโครงการใหม่ แล้ว Add vector layer ด้วยไฟล์ Geopackage ที่เราบันทึกไว้ ตอนนี้เปิดได้เร็วมากและเรนเดอร์ได้เร็วกว่าตอนเปิดไฟล์ CSV หลายเท่า

ใส่พื้นหลัง Google Maps Satelite

การซูมเข้าไปลึกๆก็ทำได้เร็ว กระปรี้กระเปร่า ไม่มีอาการอืดแสดงการร้องขอชีวิตให้เห็น ผมเพิ่มชั้นข้อมูลแบบ XYZ: Layer > Add Layer > Add XYZ Layer… โดยแสดงข้อมูลจาก Google Maps Satelite เพื่อแสดงภาพพื้นหลัง กำหนดได้ดังนี้

ที่นี้จะได้ข้อมูลโพลีกอนของอาคารที่ซ้อนด้วยข้อมูลจาก Google Maps ที่หลังๆมานี้ทางกูเกิ้ลได้ทำภาพลายน้ำ (Watermark) ที่จางมากๆ ไม่เข้มเหมือนสมัยก่อน ลองซูมไปที่กรุงพนมเปญ เยี่ยมคฤหาสถ์หลังงามของคุณน้าวุ้นเส้นก็ดูชัดดีพิกัดภูมิศาสตร์ (11.5574024N,104.9287493E) หรือพิกัดแบบพลัสโค้ด (7P36HW4H+XF9G)

ผมว่ากูเกิ้ลมีวิธีการทำมาหากินแบบสมดุลย์ไม่หน้าเลือด บางบริการให้ผู้ใช้ใช้ฟรี ถ้าผู้ใช้มีเงินถุงเงินถังสามารถจ่ายเงินสำหรับบริการที่ดีกว่ายกตัวอย่างเช่น Gemini ถ้าแบบฟรีที่ผมใช้อยู่กับแบบ Gemini 2.5 flash ไม่มีกำหนดเวลาถึงแม้จะทะเลาะโต้แย้งกันบ่อยแต่ก็พอใจ ถ้าอยากจะเสียเงินเพื่อใช้รุ่นที่เก่งกว่าก็มี Gemini 2.5 Pro เป็นต้น

เกร็ดเล็กเกร็ดน้อย

เกร็ดอีกอย่างหนึ่งคือผมทดสอบข้อมูลไฟล์แรก “311 buildings.csv” ด้วย Global Mapper ขวัญใจของผมและเป็นเจ้าแห่งความเร็ว ใช้เวลาสองชั่วโมงอ่านไฟล์ ผมจำต้องเปิด Task manager ทำการ End task ทิ้งเพราะดูๆแล้วเหมือนจะค้างไปแล้วอย่างน่าเสียดาย

อีกอย่างที่ผมสงสัยคือเมื่อเปิด Task manager ที่ QGIS กำลังเพิ่มชั้นข้อมูล “311 buildings” พบว่า QGIS ใช้งานซีพียูประมาณ 8% ใช้แรมไป 269 MB ซึ่งมันน้อยมากเป็นไปไม่ได้ ทั้งๆที่อ่านไฟล์ขนาด 8 GB ในขณะที่ google chrome เบราเซอร์ที่อยู่ข้างๆกันเขมือบแรมไป 2.5 GB ตอนเพิ่มชั้นข้อมูลไฟล์ที่สอง “313 buildings.csv” การกินแรมมาอยู่ 289 MB มาถึงตรงนี้ผมสงสัยว่า Task manager ไม่สามารถจับการกินแรมของ QGIS ซึ่งไม่ควรจะเป็นอย่างนั้น การจองแรมในภาษาซี/ซีพลัสพลัส ก็เรียกใช้ API ของวินโดส์ ซึ่งก็น่าจะถูกมอนิเตอร์ได้ด้วย Task manager

เมื่อเปิดโครงการที่มีเฉพาะไฟล์ Geopackage จะเห็นว่าแรมที่ QGIS กินยังน้อยเหมือนเดิม เพียงแต่คราวนี้จะเห็น QGIS อ่านไฟล์จากดิสค์ SSD ในขณะเรนเดอร์ ผมคิดว่าตอนเรนเดอร์ไฟล์ CSV กับ Geopackage ที่เวลาต่างกันมากเพราะ Geopackage เป็นฐานข้อมูลที่โครงสร้างดีกว่า การคิวรีข้อมูลน่าจะดีกว่า CSV หลายขุม

ผมทำงานด้านก่อสร้างถึงแม้จะใช้งาน QGIS แบบพื้นๆก็ตาม แต่บางครั้งข้อมูลแบบราสเตอร์ก็โหดอยู่เหมือนกันเพราะโครงการขนาดใหญ่ต้องอ่านไฟล์ Geotiff ขนาด 32 GB ที่ผมกล่าวไปแล้ว ที่ QGIS เอาอยู่แบบสบายๆ แม้จะทดสอบการอ่านไฟล์และเรนเดอร์ไฟล์เวคเตอร์ขนาดมหึมาก็ยังไม่สะทกสะท้าน เป็นโปรแกรมที่อยู่กันมานานมาก ปกติโปรแกรม open source จะอยู่กันได้ไม่นาน ล้มหายตายจากกันก็มาก ก็มี QGIS อีกหลายโปรแกรมที่ผมใช้เช่น Gimp, Inkscape ที่ยังอยู่กัน โปรดติดตามตอนต่อไปครับ

1 thought on “ทดสอบรีด QGIS แบบโหดสัสด้วยชุดข้อมูล Open Building V3 โพลีกอน 74 ล้านหลัง”

  1. CSV แล้วมา geopackage …..เร็วขึ้หลายเท่า
    …..ลำดับถัดไปต้องลอง geoparquet ครับ
    เร็วได้อีกครับ….

Leave a Reply

Your email address will not be published. Required fields are marked *