Especificação MBTiles 1.2

MBTiles é uma especificação para armazenamento de dados de mapas em mosaico (tiles) em um banco de dados SQLite, permitindo uso e distribuição imediatos.

Arquivos MBTiles são chamados de tilesets e devem aderir à seguinte especificação para garantir a compatibilidade.

Especificação do Banco de Dados

Tilesets utilizam bancos de dados SQLite versão 3.0.0 ou superior. Apenas funcionalidades centrais do SQLite são permitidas; extensões não são necessárias.

Bancos de dados MBTiles podem ser identificados rapidamente como tal por um número mágico (magic number) opcionalmente atribuído pela especificação.

Metadados (Metadata)

O banco de dados deve conter uma tabela ou view chamada metadata.

Esta tabela deve possuir duas colunas: name e value. Um exemplo de criação típico:

CREATE TABLE metadata (name text, value text);

A tabela metadata funciona como um armazenamento de chave/valor para configurações.

As seguintes cinco chaves são obrigatórias:

  • name: O nome do tileset em inglês simples.
  • type: O tipo de layer, podendo ser overlay (sobreposição) ou baselayer (camada base).
  • version: A versão do tileset, um número puro.
  • description: Uma descrição textual do layer.
  • format: O formato do arquivo de imagem dos dados dos tiles, sendo png ou jpg.

As seguintes chaves são recomendadas para melhor desempenho:

  • bounds: O limite máximo da área geográfica coberta pelo mapa. Os limites devem definir a área para todos os níveis de zoom. Os valores são em graus de longitude/latitude no formato WGS:84, no estilo OpenLayers: esquerda,baixo,dirieta,cima. Exemplo global: -180.0,-85,180,85.
  • attribution: Uma string de atribuição em inglês simples (e HTML) que explica a origem dos dados e/ou estilo do mapa.

Chaves adicionais são comumente suportadas por implementações de tilesets.

Tiles (Mosaicos)

O banco de dados deve conter uma tabela chamada tiles.

Esta tabela deve possuir quatro colunas: zoom_level, tile_column, tile_row e tile_data. Um exemplo de criação típico:

CREATE TABLE tiles (zoom_level integer, tile_column integer, tile_row integer, tile_data blob);

A tabela tiles armazena os mosaicos e os valores usados para localizá-los. As colunas zoom_level, tile_column e tile_row seguem a especificação do Tile Map Service, limitadas à forma descrita.

Assume-se o sistema de coordenadas Spherical Mercator (global-mercator).

A coluna tile_data (blob) contém os dados binários brutos da imagem.

Os formatos de imagem permitidos são:

  • png
  • jpg

Grids (Grades)

Para detalhes de implementação sobre grades e metadados de interação, consulte a especificação UTFGrid. A especificação MBTiles apenas aborda o armazenamento.

O banco de dados pode opcionalmente conter as tabelas grids e grid_data.

Tabela grids

A tabela grids deve ter as colunas zoom_level, tile_column, tile_row e grid. Um exemplo de criação típico:

CREATE TABLE grids (zoom_level integer, tile_column integer, tile_row integer, grid blob);

Tabela grid_data

A tabela grid_data deve ter as colunas zoom_level, tile_column, tile_row, key_name e key_json. Um exemplo de criação típico:

CREATE TABLE grid_data (zoom_level integer, tile_column integer, tile_row integer, key_name text, key_json text);

A tabela grids contém dados UTFGrid, comprimidos com gzip. A tabela grid_data armazena o mapeamento de chave de grade para valor, onde o valor é codificado como um objeto JSON.

Tags: mbtiles sqlite map tiles GIS utfgrid

Publicado em 8-18 13:45