15 điểm bởi GN⁺ 2026-01-27 | 1 bình luận | Chia sẻ qua WhatsApp
  • MapLibre Tile (MLT)định dạng vector tile thế hệ mới thay thế Mapbox Vector Tile (MVT) hiện có, được thiết kế để nâng cao hiệu quả xử lý dữ liệu địa không gian quy mô lớn
  • Cung cấp tỷ lệ nén cải thiện tới 6 lần cùng hiệu năng giải mã nhanh dựa trên SIMD, giúp cải thiện dung lượng lưu trữ, độ trễ và hiệu quả bộ nhớ đệm
  • Có khả năng mở rộng trong tương lai, hướng tới hỗ trợ tọa độ 3D (độ cao), xử lý dựa trên GPU, kiểu dữ liệu phức hợp, linear referencing và m-values
  • Hiện có thể dùng ngay với MapLibre GL JSMapLibre Native, đồng thời hỗ trợ tile demo, máy chủ chuyển đổi và tạo dữ liệu thông qua Planetiler
  • Đây là định dạng được phát triển nhờ sự hợp tác giữa cộng đồng mã nguồn mở, doanh nghiệp và học thuật, và được hoàn thiện với tài trợ từ Microsoft và AWS

Giới thiệu về MapLibre Tile

  • MapLibre Tile (MLT) là định dạng kế nhiệm của [Mapbox Vector Tile(MVT)], được thiết kế lại từ đầu để xử lý khối lượng dữ liệu địa không gian tăng mạnh và các định dạng nguồn thế hệ mới phức tạp

    • Được thiết kế để tận dụng hiệu năng của phần cứng hiện đại và các graphics API, cho phép xử lý và kết xuất basemap 2D và 2.5D ở quy mô toàn cầu với hiệu năng cao
    • Bản triển khai hiện tại tương đương MVT về mặt chức năng, nhưng được cải thiện về hiệu năng và hiệu quả
  • Các cải tiến kỹ thuật chính

    • Cải thiện tỷ lệ nén: tăng tới 6 lần trên các tile lớn, nhờ áp dụng bố cục hướng cột và mã hóa nhẹ đệ quy
    • Cải thiện hiệu năng giải mã: cấu trúc mã hóa nhanh và nhẹ, có thể kết hợp với lệnh SIMD/vectorization
    • Kết quả là giảm độ trễ, giảm chi phí lưu trữ và truyền tải, tăng hiệu quả sử dụng bộ nhớ đệm

Khả năng mở rộng trong tương lai

  • MLT được thiết kế với mục tiêu hỗ trợ các tính năng tương lai sau

    • Tăng cường hỗ trợ tọa độ 3D (độ cao)
    • Tối ưu hóa định dạng lưu trữ và bộ nhớ để CPU và GPU xử lý hiệu quả
    • Hỗ trợ linear referencingm-values để tương thích với các định dạng thế hệ mới như Overture Maps (GeoParquet)
    • Hỗ trợ các kiểu phức hợp như thuộc tính lồng nhau, danh sách, map
  • Hướng phát triển của MLT sẽ được quyết định theo nhu cầu của cộng đồng, và hoan nghênh nhiều ý tưởng mở rộng cũng như đóng góp khác nhau

    • Tài liệu liên quan gồm slide trình bày FOSS4G 2024 của Markus Tremmel, bài nói chuyện trên YouTubebài báo ACM

Thời điểm có thể sử dụng và tích hợp

  • MLT đã có thể sử dụng ngay lúc này

    • Cả MapLibre GL JSMapLibre Native đều hỗ trợ nguồn MLT
    • Có thể sử dụng bằng cách chỉ định giá trị mlt cho thuộc tính encoding trong style JSON
  • Cách trải nghiệm và phát triển

  • Để chia sẻ trải nghiệm sử dụng MLT, nên tham gia kênh #maplibre-tile-format trên Slack hoặc GitHub Issues/Discussions

Lời cảm ơn và hợp tác

  • MLT được phát triển thông qua nhiều năm hợp tác giữa giới học thuật, mã nguồn mở và doanh nghiệp
    • Markus Tremmel là người nghĩ ra định dạng, Yuri Astrakhan là người dẫn dắt dự án
    • Tim Sylvester phụ trách bản triển khai C++, Harel Mazor, Benedikt Vogl, Niklas Greindl phụ trách bản triển khai JavaScript
    • MicrosoftAWS đã hỗ trợ kinh phí phát triển

Ghi chú

  • Khác với MVT, MLT không hỗ trợ các layer mà kiểu giá trị trong cùng một cột thay đổi theo từng feature

1 bình luận

 
GN⁺ 2026-01-27
Ý kiến trên Hacker News
  • Khuyên nên tham dự buổi nói chuyện về MapLibre tại Geospatial devroom của FOSDEM vào thứ Bảy
    Liên kết lịch sự kiện

    • Nếu còn chỗ thì nhất định mình muốn đi 😄
  • Mình tìm thử vài trang ví dụ và so sánh ví dụ hiển thị bản đồ với MLT với ví dụ hiển thị bản đồ hiện có
    Xem console log thì thấy hiệu quả nén được cải thiện khoảng 10%. Khá ấn tượng

    • Tuy vậy, kiểu tile trong bản demo khó có thể so sánh với basemap production dựa trên OpenMapTiles thực tế
      Định dạng MLT tích hợp nhiều kiểu mã hóa nhẹ khác nhau, và thậm chí mỗi tile có thể được mã hóa theo cách khác nhau
      Vì vậy cần một cách tiếp cận heuristic để tìm ra tổ hợp tối ưu, và luôn tồn tại đánh đổi giữa kích thước tile và hiệu năng giải mã
      Dù vẫn đang ở giai đoạn đầu, AWS năm nay vẫn đang tài trợ cho công việc tối ưu hóa MLT nên còn nhiều dư địa cải thiện trong tương lai
      Khi benchmark, điều quan trọng là xem xét mô hình sử dụng thực tế hơn là tổng kích thước tile — vì chẳng ai phóng to giữa đại dương cả 😉
  • Gần đây mình triển khai một giải pháp dựa trên pmtiles và thực sự rất hài lòng
    Tham khảo tài liệu PMTiles
    pmtiles dùng MVT, nhưng mình hy vọng sau này sẽ có công cụ chuyển đổi sang MLT

    • Thực ra PMTiles độc lập với định dạng tile. Đã có một PR cập nhật type byte để bao gồm cả MLT
    • PMTiles không chỉ chứa MVT mà còn có thể chứa PNG, JPEG, WebP, AVIF và nhiều định dạng khác. Xem tài liệu đặc tả
    • Mình đang build PMTiles bằng Tilemaker, nên để tạo MLT bằng Tilemaker có lẽ sẽ cần khá nhiều việc 😅
    • pmtiles thực sự là một giải pháp đơn giản nhưng đầy đột phá
  • MapLibre là thư viện JS tốt nhất mình từng dùng cho việc hiển thị bản đồ trong trình duyệt
    Nghĩ đến việc nó chuyển sang định dạng mới đã thấy háo hức rồi

    • Hoàn toàn đồng ý 👍
  • Trong Planetiler, có thể tạo MLT bằng tùy chọn CLI --tile-format=mlt
    Hiện tại mới chỉ có trên nhánh main nhưng sẽ sớm được phát hành
    Kết quả thử nghiệm cho thấy với cấu hình mặc định, kích thước archive OpenMapTiles giảm khoảng 10%. Vẫn đang tiếp tục tối ưu thêm

  • Tiếc là Tilemaker chưa có kế hoạch hỗ trợ MLT trong trung hạn
    Vì vậy một bộ phận cộng đồng có thể bị bỏ lại trong quá trình chuyển đổi
    Xem thảo luận liên quan tại thread issue này

    • Dù vậy, về sau vẫn có thể chuyển đổi. Trong kho mã có một chương trình chuyển đổi bằng Java từ MVT sang MLT
  • Thật thú vị khi các định dạng tệp vector vẫn đang tiếp tục được tái phát minh
    Mình hiểu lợi ích về tỷ lệ nén hay tốc độ giải mã, nhưng vẫn tò mò không biết ý tưởng hay insight mới nào đã dẫn dắt thiết kế này

  • Mình đã theo dõi dự án này một thời gian và thực sự rất kỳ vọng
    Với góc nhìn của người dùng stack MapLibre, mình nghĩ bài toán lớn cuối cùng là thêm hàm As_MLT() vào PostGIS

    • Và cũng cần hỗ trợ Geoserver nữa
  • Có ai ở đây đang self-host bản đồ không? Mình muốn nghe về ưu nhược điểm và các công cụ mọi người đang dùng

    • Bọn mình đã self-host protomaps (pmtiles) trong vài năm nay
      Server chỉ cần có khả năng phục vụ tệp tĩnh bằng range request là được (Caddy hay Nginx đều ổn)
      Bản đồ là một tệp lớn duy nhất nên cũng dễ chia sẻ giữa nhiều server
      Gần như không có nhược điểm gì, nhưng phía client cần thêm thư viện hỗ trợ giao thức tùy chỉnh
      Việc chỉnh sửa style hơi rắc rối một chút, nhưng có thể nạp style của protomaps vào trình chỉnh sửa Maputnik để sửa
      Tham khảo tài liệu hướng dẫn
    • Mình cũng self-host một bản đồ tìm cửa hàng tại Úc bằng pmtiles
      Mình tạo riêng một bản đồ độ phân giải thấp cho toàn thế giới (50MB) và một bản đồ độ phân giải cao cho Úc (900MB), rồi upload lên S3
      Vì không cần dữ liệu mới nhất nên cứ để vậy mà dùng, và nó hoạt động rất tốt
    • Trong dự án tạo bản đồ độ phân giải cao để in ấn, self-host cũng là giải pháp duy nhất
      API thương mại либо quá đắt để tạo raster 300dpi, либо có hạn chế về việc bán lại
    • Mình cũng đang self-host. Ưu điểm là có thể kiểm soát hoàn toàn dữ liệu và stack, còn nhược điểm là phải tự xây dựng stack và tự quản lý hạ tầng cloud
      Mình dùng PostGIS để lưu trữ và phục vụ vector tile, còn dữ liệu raster thì lưu trên AWS S3 dưới dạng GeoTiff COG
    • Bọn mình dùng mod_tile+renderd
      Build pbf từ OSM cho khu vực quan tâm (Colorado), khởi chạy container openstreetmap-tile-server, rồi áp dụng style và render bằng renderd
  • MLT cũng rất hay, nhưng mình cũng mong có những bước tiến tương tự ở định dạng tile 3D
    Hiện tại 3D Tiles của Cesium gần như là lựa chọn duy nhất trên thực tế, nhưng hiệu năng vẫn chưa nhanh như kỳ vọng