10P by GN⁺ 3시간전 | ★ favorite | 댓글 1개
  • MapLibre Tile(MLT) 은 기존 Mapbox Vector Tile(MVT)을 대체하는 새로운 차세대 벡터 타일 포맷으로, 대규모 지리공간 데이터 처리 효율을 높이기 위해 설계됨
  • 최대 6배 향상된 압축률SIMD 기반 빠른 디코딩 성능을 제공해 저장 공간, 지연 시간, 캐시 효율을 개선
  • 향후 3D 좌표(고도), GPU 기반 처리, 복합 데이터 타입, 선형 참조 및 m-values 지원을 목표로 확장 가능
  • 현재 MapLibre GL JSMapLibre Native에서 바로 사용 가능하며, 데모 타일과 변환 서버, Planetiler을 통한 생성 지원
  • 오픈소스 커뮤니티와 기업, 학계의 협력으로 개발된 포맷으로, Microsoft와 AWS의 후원을 받아 완성됨

MapLibre Tile 소개

  • MapLibre Tile(MLT) 은 [Mapbox Vector Tile(MVT)]의 후속 포맷으로, 급증하는 지리공간 데이터량복잡한 차세대 소스 포맷을 처리하기 위해 처음부터 새로 설계됨

    • 최신 하드웨어와 그래픽 API의 성능을 활용하도록 설계되어, 행성 규모의 2D 및 2.5D 베이스맵을 고성능으로 처리 및 렌더링 가능
    • 현재 구현은 MVT와 기능적으로 동등하지만, 성능과 효율성 측면에서 개선됨
  • 주요 기술적 개선점

    • 압축률 향상: 대형 타일에서 최대 6배 개선, 컬럼 지향 레이아웃과 재귀적 경량 인코딩을 적용
    • 디코딩 성능 향상: SIMD/벡터화 명령어와 결합 가능한 빠르고 가벼운 인코딩 구조
    • 결과적으로 지연 시간 감소, 저장 및 전송 비용 절감, 캐시 활용도 향상 효과

향후 확장 가능성

  • MLT는 다음과 같은 미래 기능 지원을 염두에 두고 설계됨

    • 3D 좌표(고도) 지원 강화
    • CPU 및 GPU 효율적 처리를 위한 저장 및 메모리 포맷 최적화
    • 선형 참조(linear referencing)m-values 지원으로 Overture Maps(GeoParquet) 같은 차세대 포맷과 호환
    • 중첩 속성, 리스트, 맵 등 복합 타입 지원
  • MLT의 발전 방향은 커뮤니티의 요구에 따라 결정되며, 다양한 확장 아이디어와 기여를 환영함

    • 관련 자료로는 Markus Tremmel의 FOSS4G 2024 발표 슬라이드, YouTube 강연, ACM 논문이 제공됨

사용 가능 시점 및 통합

  • MLT는 현재 즉시 사용 가능

    • MapLibre GL JSMapLibre Native 모두 MLT 소스를 지원
    • 스타일 JSON의 encoding 속성에 mlt 값을 지정해 사용 가능
  • 체험 및 개발 방법

  • MLT 사용 경험 공유를 위해 Slack의 #maplibre-tile-format 채널이나 GitHub 이슈/디스커션 참여 권장

감사 및 협력

  • MLT는 학계, 오픈소스, 기업 간 다년간의 협력을 통해 개발됨
    • Markus Tremmel이 포맷을 고안, Yuri Astrakhan이 프로젝트를 주도
    • Tim Sylvester가 C++ 구현, Harel Mazor, Benedikt Vogl, Niklas Greindl이 JavaScript 구현 담당
    • MicrosoftAWS가 개발 자금을 지원

주석

  • MLT는 MVT와 달리, 컬럼 내 값의 타입이 피처마다 달라지는 레이어는 지원하지 않음
Hacker News 의견들
  • 토요일 FOSDEM의 Geospatial devroom에서 열리는 MapLibre 발표에 참석해보길 권함
    행사 일정 링크

    • 자리가 있다면 꼭 가보고 싶음 😄
  • 예제 페이지를 조금 찾아봤는데, MLT로 지도 표시 예시와 기존 지도 표시 예시를 비교해봄
    콘솔 로그를 보니 약 10% 정도 압축 효율이 향상된 걸 확인했음. 꽤 인상적임

    • 다만 데모 타일 스타일은 실제 OpenMapTiles 기반의 프로덕션 베이스맵과는 비교하기 어려움
      MLT 포맷에는 다양한 경량 인코딩이 내장되어 있고, 타일마다 다른 방식으로 인코딩할 수도 있음
      따라서 최적의 조합을 찾기 위해 휴리스틱 접근이 필요하며, 타일 크기와 디코딩 성능 간의 트레이드오프가 존재함
      아직 초기 단계이지만, AWS가 올해도 MLT 최적화 작업을 후원 중이라 앞으로 개선 여지가 많음
      벤치마크 시에는 전체 타일 크기보다 실제 사용 패턴을 보는 게 중요함 — 아무도 바다 한가운데를 확대하지 않으니까 😉
  • 최근 pmtiles 기반 솔루션을 배포했는데 정말 만족스러움
    PMTiles 문서 참고
    pmtiles는 MVT를 사용하지만, 앞으로 MLT로 변환할 수 있는 툴이 나오길 기대함

    • 사실 PMTiles는 타일 형식에 독립적임. 이미 MLT를 포함하도록 타입 바이트를 업데이트하는 PR이 올라와 있음
    • PMTiles는 MVT뿐 아니라 PNG, JPEG, WebP, AVIF 등 다양한 포맷을 담을 수 있음. 스펙 문서 참고
    • 나는 Tilemaker로 PMTiles를 빌드 중인데, MLT를 Tilemaker로 생성하려면 꽤 많은 작업이 필요할 듯함 😅
    • pmtiles는 정말 단순하면서도 혁신적인 솔루션
  • MapLibre는 브라우저에서 지도를 표시하기에 지금까지 써본 JS 라이브러리 중 최고임
    새 포맷으로 전환될 걸 생각하니 기대됨

    • 완전 공감함 👍
  • Planetiler에서는 --tile-format=mlt CLI 옵션으로 MLT 생성이 가능함
    현재는 main 브랜치에만 있지만 곧 릴리스 예정임
    테스트 결과 기본 설정에서 OpenMapTiles 아카이브 크기가 약 10% 감소했음. 추가 최적화도 진행 중임

  • 아쉽게도 Tilemaker는 중기적으로 MLT 지원 계획이 없음
    그래서 커뮤니티 일부는 전환에서 소외될 수 있음
    관련 논의는 이슈 스레드 참고

    • 그래도 나중에 변환은 가능함. MVT에서 MLT로 바꾸는 Java 기반 변환 프로그램이 저장소에 있음
  • 벡터 파일 포맷이 여전히 새롭게 재발명되고 있다는 게 흥미로움
    압축률이나 디코딩 속도 향상은 이해하지만, 이 디자인을 이끈 새로운 아이디어나 통찰이 무엇인지 궁금함

  • 이 프로젝트를 한동안 지켜봤는데 정말 기대됨
    MapLibre 스택 사용자 입장에서 마지막 큰 과제는 PostGIS에 As_MLT() 함수가 추가되는 것이라 생각함

    • 그리고 Geoserver 지원도 필요함
  • 혹시 지도 셀프호스팅 하는 사람 있는지? 장단점과 사용하는 툴이 궁금함

    • 우리는 몇 년째 protomaps(pmtiles) 를 셀프호스팅 중임
      서버는 단순히 정적 파일을 range request로 제공할 수 있으면 됨 (Caddy나 Nginx 모두 가능)
      맵은 하나의 큰 파일이라 여러 서버 간 공유도 쉬움
      단점은 거의 없지만, 클라이언트 측에 커스텀 프로토콜 지원 라이브러리를 추가해야 함
      스타일 편집은 약간 까다로운데, Maputnik 에디터로 protomaps 스타일을 불러와 수정 가능함
      가이드 문서 참고
    • 나도 pmtiles로 호주 지역 매장 찾기 지도를 셀프호스팅함
      전 세계 저해상도 지도(50MB)와 호주 고해상도 지도(900MB)를 따로 만들어 S3에 업로드했음
      최신 데이터가 필요 없어서 그대로 두고 쓰는데 아주 잘 작동함
    • 인쇄용 고해상도 지도 제작 프로젝트에서도 셀프호스팅이 유일한 해법이었음
      상용 API는 300dpi 래스터 생성 비용이 너무 높거나 재판매 제한이 있었음
    • 나도 셀프호스팅 중임. 장점은 데이터와 스택을 완전히 통제할 수 있다는 점이고, 단점은 직접 스택을 구축하고 클라우드 관리해야 함
      PostGIS로 벡터 타일을 저장·서빙하고, AWS S3에 GeoTiff COG 형태로 래스터 데이터를 저장함
    • 우리는 mod_tile+renderd를 사용함
      OSM에서 관심 지역(콜로라도)의 pbf를 빌드하고, openstreetmap-tile-server 컨테이너를 띄운 뒤 스타일을 적용해 renderd로 렌더링함
  • MLT도 멋지지만, 3D 타일 포맷에서도 이런 발전이 있었으면 좋겠음
    현재는 Cesium의 3D Tiles가 사실상 유일한 선택지인데, 성능이 기대만큼 빠르지 않음