15 คะแนน โดย GN⁺ 2026-01-27 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • MapLibre Tile(MLT) คือ ฟอร์แมตเวกเตอร์ไทล์ยุคถัดไป แบบใหม่ที่มาแทน Mapbox Vector Tile(MVT) เดิม โดยออกแบบมาเพื่อเพิ่มประสิทธิภาพในการจัดการข้อมูลภูมิสารสนเทศขนาดใหญ่
  • ให้ อัตราการบีบอัดดีขึ้นสูงสุด 6 เท่า และ ประสิทธิภาพการถอดรหัสที่รวดเร็วด้วย SIMD ช่วยปรับปรุงพื้นที่จัดเก็บ เวลาแฝง และประสิทธิภาพของแคช
  • สามารถขยายต่อได้ในอนาคต โดยมุ่งรองรับ พิกัด 3D (ระดับความสูง), การประมวลผลบน GPU, ชนิดข้อมูลแบบประกอบ, linear referencing และ m-values
  • ขณะนี้สามารถใช้งานได้ทันทีบน MapLibre GL JS และ MapLibre Native พร้อมมีเดโมไทล์, เซิร์ฟเวอร์แปลงข้อมูล และรองรับการสร้างผ่าน Planetiler
  • เป็นฟอร์แมตที่พัฒนาจากความร่วมมือระหว่างชุมชนโอเพนซอร์ส ภาคธุรกิจ และแวดวงวิชาการ โดยสำเร็จลุล่วงด้วย การสนับสนุนจาก Microsoft และ AWS

แนะนำ MapLibre Tile

  • MapLibre Tile(MLT) คือฟอร์แมตถัดจาก [Mapbox Vector Tile(MVT)] ที่ถูกออกแบบใหม่ตั้งแต่ต้นเพื่อรองรับทั้ง ปริมาณข้อมูลภูมิสารสนเทศที่เพิ่มขึ้นอย่างรวดเร็ว และ ฟอร์แมตต้นทางยุคใหม่ที่ซับซ้อน

    • ออกแบบมาให้ใช้ประโยชน์จากประสิทธิภาพของฮาร์ดแวร์และกราฟิก API สมัยใหม่ จึงสามารถประมวลผลและเรนเดอร์ เบสแมป 2D และ 2.5D ระดับทั้งโลก ได้อย่างมีประสิทธิภาพสูง
    • ในปัจจุบัน การติดตั้งใช้งานมีความสามารถเทียบเท่า MVT ในเชิงฟังก์ชัน แต่ปรับปรุงด้านประสิทธิภาพและความคุ้มค่าให้ดีขึ้น
  • การปรับปรุงทางเทคนิคหลัก

    • อัตราการบีบอัดดีขึ้น: ในไทล์ขนาดใหญ่ดีขึ้นได้สูงสุด 6 เท่า ด้วยเลย์เอาต์แบบคอลัมน์และการเข้ารหัสแบบ recursive lightweight encoding
    • ประสิทธิภาพการถอดรหัสดีขึ้น: โครงสร้างการเข้ารหัสที่รวดเร็วและเบา ซึ่งสามารถทำงานร่วมกับคำสั่ง SIMD/การเวกเตอร์ไรซ์ได้
    • ผลลัพธ์คือช่วย ลดเวลาแฝง, ลดต้นทุนการจัดเก็บและการส่งข้อมูล และ เพิ่มการใช้แคชให้มีประสิทธิภาพ

ความเป็นไปได้ในการขยายในอนาคต

  • MLT ถูกออกแบบโดยคำนึงถึงการรองรับ ฟีเจอร์ในอนาคต ดังต่อไปนี้

    • เพิ่มการรองรับ พิกัด 3D (ระดับความสูง)
    • ปรับแต่งฟอร์แมตการจัดเก็บและหน่วยความจำให้เหมาะกับ การประมวลผลอย่างมีประสิทธิภาพบน CPU และ GPU
    • รองรับ linear referencing และ m-values เพื่อให้เข้ากันได้กับฟอร์แมตยุคใหม่อย่าง Overture Maps(GeoParquet)
    • รองรับชนิดข้อมูลแบบประกอบ เช่น คุณสมบัติแบบซ้อน, ลิสต์, แมป
  • ทิศทางการพัฒนาของ MLT จะถูกกำหนดตาม ความต้องการของชุมชน และยินดีรับทั้งแนวคิดการขยายความสามารถและการมีส่วนร่วมในหลากหลายรูปแบบ

    • เอกสารที่เกี่ยวข้องประกอบด้วย สไลด์บรรยาย FOSS4G 2024 ของ Markus Tremmel, วิดีโอบน YouTube และ บทความวิชาการ ACM

ช่วงเวลาที่ใช้งานได้และการผสานรวม

  • MLT พร้อมใช้งานได้ทันทีในตอนนี้

    • ทั้ง MapLibre GL JS และ MapLibre Native รองรับแหล่งข้อมูล MLT
    • สามารถใช้งานได้โดยกำหนดค่า encoding ใน style JSON เป็น mlt
  • วิธีทดลองใช้และพัฒนา

  • เพื่อแบ่งปันประสบการณ์การใช้งาน MLT แนะนำให้เข้าร่วม ช่อง #maplibre-tile-format บน Slack หรือ GitHub issues/discussions

คำขอบคุณและความร่วมมือ

  • MLT ได้รับการพัฒนาผ่าน ความร่วมมือหลายปีระหว่างภาควิชาการ โอเพนซอร์ส และภาคธุรกิจ
    • Markus Tremmel เป็นผู้คิดฟอร์แมตนี้ขึ้นมา และ Yuri Astrakhan เป็นผู้นำโครงการ
    • Tim Sylvester ดูแลอิมพลีเมนต์ C++ ขณะที่ Harel Mazor, Benedikt Vogl, Niklas Greindl รับผิดชอบอิมพลีเมนต์ JavaScript
    • Microsoft และ AWS สนับสนุนงบประมาณการพัฒนา

หมายเหตุ

  • MLT ต่างจาก MVT ตรงที่ ไม่รองรับเลเยอร์ที่ชนิดของค่าในคอลัมน์เดียวกันเปลี่ยนไปตามแต่ละฟีเจอร์

1 ความคิดเห็น

 
GN⁺ 2026-01-27
ความคิดเห็นจาก Hacker News
  • แนะนำให้ลองไปฟัง เซสชัน MapLibre ใน geospatial devroom ของ FOSDEM วันเสาร์
    ลิงก์ตารางงาน

    • ถ้ามีที่นั่งก็อยากไปมาก 😄
  • ลองไล่ดูหน้าตัวอย่างนิดหน่อย แล้วเปรียบเทียบ ตัวอย่างการแสดงแผนที่ด้วย MLT กับ ตัวอย่างการแสดงแผนที่แบบเดิม
    ดูจาก console log แล้วเห็นว่า ประสิทธิภาพการบีบอัดดีขึ้นราว 10% ค่อนข้างน่าประทับใจ

    • แต่สไตล์ไทล์ในเดโมยังเทียบกับ production basemap ที่ใช้ OpenMapTiles จริงได้ยาก
      ฟอร์แมต MLT มี lightweight encoding หลายแบบในตัว และยังเข้ารหัสต่างกันในแต่ละไทล์ได้ด้วย
      เพราะงั้นจึงต้องใช้ heuristic approach เพื่อหาชุดที่เหมาะที่สุด และมี trade-off ระหว่างขนาดไทล์กับประสิทธิภาพการถอดรหัส
      ตอนนี้ยังอยู่ช่วงต้น แต่ AWS ก็ยังสนับสนุนงานปรับแต่ง MLT ต่อในปีนี้ จึงน่าจะพัฒนาได้อีกมาก
      เวลา benchmark การดูพฤติกรรมการใช้งานจริงสำคัญกว่าดูขนาดไทล์รวม — เพราะไม่มีใครซูมกลางมหาสมุทรกันอยู่แล้ว 😉
  • เพิ่ง deploy โซลูชันที่ใช้ pmtiles ไปเมื่อไม่นานนี้ และพอใจมาก
    ดู เอกสาร PMTiles ได้
    pmtiles ใช้ MVT แต่หวังว่าในอนาคตจะมีเครื่องมือแปลงเป็น MLT ออกมา

    • จริง ๆ แล้ว PMTiles ไม่ผูกกับฟอร์แมตไทล์ โดยเฉพาะ มี PR สำหรับอัปเดต type byte ให้รองรับ MLT แล้ว
    • PMTiles ไม่ได้ใส่ได้แค่ MVT แต่ยังใส่ PNG, JPEG, WebP, AVIF และฟอร์แมตอื่น ๆ ได้ด้วย ดู สเปก
    • ฉันกำลัง build PMTiles ด้วย Tilemaker อยู่ แต่ถ้าจะให้ Tilemaker สร้าง MLT ได้คงต้องทำงานเพิ่มอีกพอสมควร 😅
    • pmtiles เป็นโซลูชันที่ เรียบง่ายแต่ล้ำมาก จริง ๆ
  • MapLibre เป็นไลบรารี JS สำหรับแสดงแผนที่ในเบราว์เซอร์ที่ดีที่สุดเท่าที่เคยใช้มา
    เลยตื่นเต้นกับการเปลี่ยนไปใช้ฟอร์แมตใหม่นี้มาก

    • เห็นด้วยสุด ๆ 👍
  • ใน Planetiler สามารถสร้าง MLT ได้ด้วยออปชัน CLI --tile-format=mlt
    ตอนนี้ยังมีเฉพาะบน main branch แต่จะออกรีลีสเร็ว ๆ นี้
    จากการทดสอบ ขนาด archive ของ OpenMapTiles ลดลงราว 10% ด้วยค่าตั้งต้น และกำลังปรับแต่งเพิ่มเติมอยู่

  • น่าเสียดายที่ Tilemaker ยังไม่มีแผนรองรับ MLT ในระยะกลาง
    ทำให้คนในชุมชนบางส่วนอาจถูกทิ้งไว้ตอนเปลี่ยนผ่าน
    ดูการพูดคุยที่ issue thread

    • แต่ถึงอย่างนั้นก็ยังแปลงทีหลังได้ มี โปรแกรมแปลงที่เขียนด้วย Java จาก MVT ไป MLT อยู่ใน repository
  • น่าสนใจดีที่ฟอร์แมตไฟล์เวกเตอร์ยังคงถูก คิดขึ้นใหม่ อยู่เรื่อย ๆ
    เข้าใจเรื่องอัตราการบีบอัดหรือความเร็วในการถอดรหัสที่ดีขึ้น แต่ก็อยากรู้ว่า ไอเดียหรืออินไซต์ใหม่ อะไรเป็นตัวผลักดันดีไซน์นี้

  • ตามดูโปรเจกต์นี้มาสักพักแล้ว และรู้สึกตื่นเต้นมาก
    ในมุมคนใช้สแตก MapLibre งานใหญ่ชิ้นสุดท้ายคือการมี ฟังก์ชัน As_MLT() ใน PostGIS

    • และยังต้องมี การรองรับ Geoserver ด้วย
  • มีใคร self-host แผนที่ อยู่บ้างไหม? อยากรู้ทั้งข้อดีข้อเสียและเครื่องมือที่ใช้

    • พวกเรา self-host protomaps (pmtiles) มาหลายปีแล้ว
      เซิร์ฟเวอร์แค่ต้องเสิร์ฟไฟล์ static พร้อม range request ได้ก็พอ (ใช้ได้ทั้ง Caddy และ Nginx)
      แผนที่เป็นไฟล์ใหญ่ไฟล์เดียว เลยแชร์ข้ามหลายเซิร์ฟเวอร์ได้ง่าย
      แทบไม่มีข้อเสีย แต่ฝั่งไคลเอนต์ต้องเพิ่ม ไลบรารีรองรับโปรโตคอลแบบกำหนดเอง
      การแก้สไตล์จะยุ่งยากนิดหน่อย แต่สามารถโหลดสไตล์ protomaps เข้าไปแก้ใน Maputnik editor ได้
      ดู คู่มือ ได้
    • ฉันก็ self-host แผนที่ค้นหาสาขาในออสเตรเลีย ด้วย pmtiles
      แยกทำแผนที่ความละเอียดต่ำทั้งโลก (50MB) กับแผนที่ความละเอียดสูงของออสเตรเลีย (900MB) แล้วอัปโหลดขึ้น S3
      เพราะไม่ต้องใช้ข้อมูลล่าสุดมากก็เลยปล่อยไว้แบบนั้น ซึ่งทำงานได้ดีมาก
    • ในโปรเจกต์ทำแผนที่ความละเอียดสูงสำหรับงานพิมพ์ การ self-host เป็นทางออกเดียวจริง ๆ
      API เชิงพาณิชย์มีทั้ง ค่าใช้จ่ายในการสร้างแรสเตอร์ 300dpi สูงเกินไป หรือมีข้อจำกัดเรื่องการนำไปขายต่อ
    • ฉันก็ self-host เหมือนกัน ข้อดีคือ ควบคุมข้อมูลและสแตกได้ทั้งหมด ส่วนข้อเสียคือต้องประกอบสแตกเองและดูแลคลาวด์เอง
      ใช้ PostGIS เก็บและเสิร์ฟ vector tile และเก็บข้อมูลแรสเตอร์ใน AWS S3 ในรูปแบบ GeoTiff COG
    • พวกเราใช้ mod_tile+renderd
      build pbf ของพื้นที่ที่สนใจจาก OSM (โคโลราโด) แล้วรันคอนเทนเนอร์ openstreetmap-tile-server จากนั้นใช้สไตล์และเรนเดอร์ด้วย renderd
  • MLT ก็น่าสนใจ แต่ก็อยากเห็นความก้าวหน้าแบบนี้ใน ฟอร์แมตไทล์ 3D ด้วย
    ตอนนี้ 3D Tiles ของ Cesium แทบเป็นตัวเลือกเดียวโดยพฤตินัย แต่ประสิทธิภาพก็ยังไม่เร็วอย่างที่หวัง