OpenCPN,  selon Shoreline
Plan du site   --->  Cartes et documents  --->   Les cartes au format MBtiles.
CD_06 Les cartes au format MBTiles
Validité :  Version bêta 4.99 (et/ou, de préférence, plus récente)
  • Il est interressant de lire le débat, très technique, apparu à partir de la page 4, sur la qualité des cartographies de type Mbtiles
    • qui peuvent être trouvées ici et la,
    • qui peuvent être fabriquées "artisanalement" à l'aide de logiciels.
Up
Le format MBTiles, Version 1.0 à 1.3 :
  • Les textes ci dessous contiennent les spécifications des premières versions des cartes au format MBTiles.
  • Seul le texte de la version 1.3 a été traduit en Français.
Up

MBTiles 1.0

Abstract

MBTiles is a specification for storing tiled map data in SQLite databases for immediate usage and for transfer. MBTiles files, known as tilesets, must implement the specification below to ensure compatibility with devices.

Database Specifications

Tilesets are expected to be valid SQLite databases of version 3.0.0 or higher. Only core SQLite features are permitted; tilesets cannot require extensions.

Database

Note: the schemas outlined are meant to be followed as interfaces. SQLite views that produce compatible results are equally valid. For convenience, this specification refers to tables and virtual tables (views) as tables.

Metadata

Schema

The database is required to contain a table or view named metadata.

This table must yield exactly two columns named name and value. A typical create statement for the metadata table:

CREATE TABLE metadata (name text, value text);

Content

The metadata table is used as a key/value store for settings. Four keys are required:

  • name: The plain-english name of the tileset.
  • type: overlay or baselayer
  • version: The version of the tileset, as a plain number.
  • description: A description of the layer as plain text.

Tiles

Schema

The database is required to contain a table named tiles.

The table must yield four columns named zoom_level, tile_column, tile_row, and tile_data. A typical create statement for the tiles table:

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

Content

The tiles table contains tiles and the values used to locate them. The zoom_level, tile_column, and tile_row columns follow the Tile Map Service Specification in their construction, but in a restricted form:

The blob column contains raw image data in binary.

Formats supported:

  • png
  • jpg
Up

MBTiles 1.1

Sub-sections:

  • Interaction: HTTP endpoints needed for implementing interactivity
  • UTFGrid: storage of data used for interactivity

Abstract

MBTiles is a specification for storing tiled map data in SQLite databases for immediate usage and for transfer. MBTiles files, known as tilesets, must implement the specification below to ensure compatibility with devices.

Database Specifications

Tilesets are expected to be valid SQLite databases of version 3.0.0 or higher. Only core SQLite features are permitted; tilesets cannot require extensions.

Database

Note: the schemas outlined are meant to be followed as interfaces. SQLite views that produce compatible results are equally valid. For convenience, this specification refers to tables and virtual tables (views) as tables.

Metadata

Schema

The database is required to contain a table or view named metadata.

This table must yield exactly two columns named name and value. A typical create statement for the metadata table:

CREATE TABLE metadata (name text, value text);

Content

The metadata table is used as a key/value store for settings. Five keys are required:

  • name: The plain-english name of the tileset.
  • type: overlay or baselayer
  • version: The version of the tileset, as a plain number.
  • description: A description of the layer as plain text.
  • format: The image file format of the tile data: png or jpg

One row in metadata is suggested and, if provided, may enhance performance.

  • bounds: The maximum extent of the rendered map area. Bounds must define an area covered by all zoom levels. The bounds are represented in WGS:84 - latitude and longitude values, in the OpenLayers Bounds format - left, bottom, right, top. Example of the full earth: -180.0,-85,180,85.

Several additional keys are supported for tilesets that implement UTFGrid-based interaction. See interaction.md.

Tiles

Schema

The database is required to contain a table named tiles.

The table must yield four columns named zoom_level, tile_column, tile_row, and tile_data. A typical create statement for the tiles table:

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

Content

The tiles table contains tiles and the values used to locate them. The zoom_level, tile_column, and tile_row columns follow the Tile Map Service Specification in their construction, but in a restricted form:

The blob column contains raw image data in binary.

A subset of image file formats are permitted:

  • png
  • jpg
Up






























Up

MBTiles 1.2

Sub-sections:

  • Interaction: HTTP endpoints needed for implementing interactivity
  • UTFGrid: This specification relies on UTFGrid 1.2 for interactivity.

Abstract

MBTiles is a specification for storing tiled map data in SQLite databases for immediate usage and for transfer. MBTiles files, known as tilesets, must implement the specification below to ensure compatibility with devices.

Database Specifications

Tilesets are expected to be valid SQLite databases of version 3.0.0 or higher. Only core SQLite features are permitted; tilesets cannot require extensions.

MBTiles databases can optionally use the officially assigned magic number to be easily identified as MBTiles.

Database

Note: the schemas outlined are meant to be followed as interfaces. SQLite views that produce compatible results are equally valid. For convenience, this specification refers to tables and virtual tables (views) as tables.

Metadata

Schema

The database is required to contain a table or view named metadata.

This table must yield exactly two columns named name and value. A typical create statement for the metadata table:

CREATE TABLE metadata (name text, value text);

Content

The metadata table is used as a key/value store for settings. Five keys are required:

  • name: The plain-english name of the tileset.
  • type: overlay or baselayer
  • version: The version of the tileset, as a plain number.
  • description: A description of the layer as plain text.
  • format: The image file format of the tile data: png or jpg

One row in metadata is suggested and, if provided, may enhance performance.

  • bounds: The maximum extent of the rendered map area. Bounds must define an area covered by all zoom levels. The bounds are represented in WGS:84 - latitude and longitude values, in the OpenLayers Bounds format - left, bottom, right, top. Example of the full earth: -180.0,-85,180,85.
  • attribution: An attribution string, which explains in English (and HTML) the sources of data and/or style for the map.

Several additional keys are supported for tilesets that implement UTFGrid-based interaction.

Tiles

Schema

The database is required to contain a table named tiles.

The table must yield four columns named zoom_level, tile_column, tile_row, and tile_data. A typical create statement for the tiles table:

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

Content

The tiles table contains tiles and the values used to locate them. The zoom_level, tile_column, and tile_row columns follow the Tile Map Service Specification in their construction, but in a restricted form:

The global-mercator (aka Spherical Mercator) profile is assumed

The tile_data blob column contains raw image data in binary.

A subset of image file formats are permitted:

  • png
  • jpg

Grids

See the UTFGrid specification for implementation details of grids and interaction metadata itself: the MBTiles specification is only concerned with storage.

Schema

The database can have optional tables named grids, grid_data.

The grids table must yield four columns named zoom_level, tile_column, tile_row, and grid. A typical create statement for the grids table:

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

The grid_data table must yield five columns named zoom_level, tile_column, tile_row, key_name, and key_json. A typical create statement for the grid_data table:

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

Content

The grids table contains UTFGrid data, gzip compressed.

The grid_data table contains grid key to value mappings, with values encoded as JSON objects.

Up












































Up






























Up

MBTiles 1.3



Résumé :


MBTiles est une spécification pour le stockage des données cartographiques en mosaïque dans les bases de données SQLite pour une utilisation immédiate et pour le transfert. Les fichiers MBTiles, connus sous le nom de tilesets, DOIVENT implémenter la spécification ci-dessous pour assurer la compatibilité avec les périphériques.

Compatibilité

Cette section est informative et n'ajoute pas d'exigences aux implémentations.

Étant donné que les vues peuvent être utilisées pour produire le schéma MBTiles, deux implémentations peuvent stocker des mosaïques avec des détails internes différents, ce qui signifie qu'une mise en œuvre peut ne pas être en mesure d'ajouter à un fichier existant.

En tant que format de conteneur, MBTiles peut stocker toutes les données en mosaïque, de sorte que les données peuvent être stockées avec une implémentation qui ne peut rien faire.

S'appuyer sur des clés de métadonnées non définies dans la spécification peut entraîner des problèmes de compatibilité.

Spécifications de la base de données

Les Tilesets DOIVENT être des bases de données SQLite valides de la version 3.0.0 ou supérieure. Seules les fonctionnalités SQLite principales sont autorisées. Les tilesets NE DOIVENT PAS nécessiter d'extensions.

Les bases de données MBTiles PEUVENT utiliser le numéro magique attribué officiellement pour être facilement identifiées comme MBTiles.

Base de données

Note: les schémas décrits sont destinés à être utilisés comme interfaces. Les vues SQLite qui produisent des résultats compatibles PEUVENT être utilisées à la place. Par souci de commodité, cette spécification fait référence aux tables et tables virtuelles (vues) en tant que tables.

Jeu de caractères

Tout le texte dans les colonnes de texte des tables d'un tileset mbtiles DOIT être encodé en UTF-8.

Métadonnées

Schéma

La base de données DOIT contenir une table ou une vue nommée métadonnées.

Cette table ou cette vue DOIT produire exactement deux colonnes de type texte, nom et valeur. Une instruction de création typique pour la table de métadonnées:

CREATE TABLE metadata (nom de texte, texte de valeur);

Contenu

La table de métadonnées est utilisée comme magasin de clé / valeur pour les paramètres. Il DOIT contenir ces deux lignes:

    name (string): Le nom lisible par l'utilisateur du tileset.
    format (chaîne de caractères): format de fichier des données de pavé: pbf, jpg, png, webp ou un type de support IETF pour d'autres formats.

pbf en tant que format fait référence aux données de pavé vectoriel compressées par gzip au format Vectoriel Mapbox.

La table de métadonnées DEVRAIT contenir ces quatre lignes:

    bounds (chaîne de nombres séparés par des virgules): L'extension maximale de la zone de carte rendue. Les limites doivent définir une zone couverte par tous les niveaux de zoom. Les limites sont représentées par les valeurs de latitude et de longitude WGS 84, au format OpenLayers Bounds (gauche, bas, droite, haut). Par exemple, les limites de la Terre entière, moins les pôles, seraient: -180,0, -85,180,85.
    center (chaîne de nombres séparés par des virgules): La longitude, la latitude et le niveau de zoom de la vue par défaut de la carte. Exemple: -122.1906,37.7599,11
    minzoom (number): Le niveau de zoom le plus bas pour lequel le tileset fournit des données
    maxzoom (number): Le niveau de zoom le plus élevé pour lequel le tileset fournit des données

La table de métadonnées PEUT contenir ces quatre lignes:

    attribution (chaîne HTML): Chaîne d'attribution qui explique les sources de données et / ou le style de la carte.
    description (string): Une description du contenu du tileset.
    type (chaîne): superposition ou couche de base
    version (nombre): La version du jeu de caractères. Cela fait référence à une révision du tileset lui-même, pas à la spécification MBTiles.

Si le format est pbf, la table de métadonnées DOIT contenir cette ligne:

    json (objet JSON stringifié): Répertorie les couches qui apparaissent dans les mosaïques vectorielles et les noms et types des attributs des entités qui apparaissent dans ces couches. Voir ci-dessous pour plus de détails.

La table de métadonnées PEUT contenir des lignes supplémentaires pour les tilesets qui implémentent l'interaction UTFGrid ou à d'autres fins.

Tiles (Tuiles)

Schéma

La base de données DOIT contenir une table nommée tiles.

La table DOIT contenir trois colonnes de type integer, nommées zoom_level, tile_column, tile_row, et une de type blob, nommée tile_data. Une instruction create typique pour la table tiles:

CREATE TABLE tiles (entier_zone_variable, entier_tchule_colonne, entier_tableau_olde, données_dossier blob);

La base de données PEUT contenir un index pour un accès efficace à cette table:

CREATE UNIQUE INDEX tile_index sur les tuiles (zoom_level, tile_column, tile_row);

Contenu

La table des tuiles contient des tuiles et les valeurs utilisées pour les localiser. Les colonnes zoom_level, tile_column et tile_row DOIVENT coder l'emplacement de la mosaïque, en suivant la spécification de service de carte de mosaïque, avec la restriction que le profil global-mercator (aka Spherical Mercator) DOIT être utilisé.

Notez que dans le schéma de tuilage TMS, l'axe Y est inversé du système de coordonnées "XYZ" communément utilisé dans les URL pour demander des tuiles individuelles, donc la tuile communément appelée 11/327/791 est insérée comme zoom_level 11, tile_column 327 , et tile_row 1256, puisque 1256 est 2 ^ 11 - 1 - 791.

La colonne tile_data DOIT contenir l'image binaire brute ou les données de pavé vectoriel pour la mosaïque associée en tant que blob.

Grilles

Voir la spécification UTFGrid pour les détails d'implémentation des grilles et des métadonnées d'interaction elle-même: la spécification MBTiles ne concerne que le stockage.

Schéma

La base de données PEUT avoir des tables nommées grids et grid_data.

La table grids DOIT contenir trois colonnes de type integer, nommées zoom_level, tile_column et tile_row, et une de type blob, nommée grid. Une instruction create typique pour la table grids:

Grilles CREATE TABLE (entier_zone_variable, entier_colonne_plateau, entier_tablé_bloc, bloc blob);

La table grid_data DOIT contenir trois colonnes de type integer, nommées zoom_level, tile_column et tile_row, et deux de type text, nommées key_name et key_json. Une instruction create typique pour la table grid_data:

CREATE TABLE grille_données (entier_zone_voliveur, entier_colonne_table, entier_tablé_table, texte_clé_clé, texte_jeu_clé);

Contenu

La table grids, si présente, DOIT contenir des données UTFGrid, compressées au format gzip.

La table grid_data, si présente, DOIT contenir une clé de grille pour les mappages de valeurs, avec des valeurs codées en tant qu'objets JSON.

Métadonnées vectorielles

Comme mentionné ci-dessus, les mosaïques de carreaux vectoriels Mapbox DOIVENT inclure une ligne json dans la table de métadonnées pour résumer les couches disponibles dans les mosaïques et les attributs disponibles pour les entités de ces couches.

La ligne json, si présente, DOIT contenir la représentation sous forme de chaîne UTF-8 d'un objet JSON.

Vector_layers

L'objet JSON dans la ligne json DOIT contenir une clé vector_layers, dont la valeur est un tableau d'objets JSON. Chacun de ces objets JSON décrit une couche de données de pavé vectoriel et DOIT contenir les paires clé-valeur suivantes:

    id (chaîne de caractères): ID de couche, appelé le nom de la couche dans la spécification de mosaïque Vector Mapbox.
    fields (object): objet JSON dont les clés et les valeurs sont les noms et les types d'attributs disponibles dans cette couche. Chaque type DOIT être la chaîne "Number", "Boolean" ou "String". Les attributs dont le type varie entre les fonctionnalités DEVRAIENT être listés comme "String".

Chaque objet de couche PEUT également contenir la paire clé-valeur suivante:

    description (string): Une description lisible par l'homme du contenu de la couche.

Chaque objet de couche PEUT également contenir la paire clé-valeur suivante:

    minzoom (nombre): Le niveau de zoom le plus bas dont les couches apparaissent dans cette couche.
    maxzoom (nombre): Le niveau de zoom le plus élevé dont les couches apparaissent dans cette couche.

Le minzoom DOIT être supérieur ou égal au minzoom du tileset, et le maxzoom DOIT être inférieur ou égal au maxzoom du tileset.

Ces touches sont utilisées pour décrire la situation où différents ensembles de couches vectorielles apparaissent dans différents niveaux de zoom du même ensemble de mosaïques, par exemple dans le cas où une couche "routes secondaires" n'est présente qu'à des niveaux de zoom élevés.

Tilestats

L'objet JSON dans la ligne json PEUT aussi contenir une clé tilestats, dont la valeur est un objet au format "geostats" documenté dans le référentiel mapbox-geostats. Comme les vector_layers, il répertorie les couches du tileset et les attributs trouvés dans chaque couche, mais fournit également des valeurs d'échantillon pour chaque attribut et la plage de valeurs pour les attributs numériques.

Exemple

Un carreau vectoriel contenant des comtés des États-Unis et des routes principales de TIGER peut avoir la table de métadonnées suivante:

    Nom: TIGER 2016
    format: pbf
    limites: -179.231086, -14.601813,179.859681,71.441059
    centre: -84.375000,36.466030,5
    minzoom: 0
    maxzoom: 5
    attribution: Recensement des États-Unis
    description: Comtés de recensement des États-Unis et routes principales
    type: superposition
    version 2
    Json:
   
        {
        "vector_layers": [
            {
                "id": "tl_2016_us_county",
                "description": "Census counties",
                "minzoom": 0,
                "maxzoom": 5,
                "fields": {
                    "ALAND": "Number",
                    "AWATER": "Number",
                    "GEOID": "String",
                    "MTFCC": "String",
                    "NAME": "String"
                }
            },
            {
                "id": "tl_2016_us_primaryroads",
                "description": "Census primary roads",
                "minzoom": 0,
                "maxzoom": 5,
                "fields": {
                    "FULLNAME": "String",
                    "LINEARID": "String",
                    "MTFCC": "String",
                    "RTTYP": "String"
                }
            }
        ],
        "tilestats": {
            "layerCount": 2,
            "layers": [
                {
                    "layer": "tl_2016_us_county",
                    "count": 3233,
                    "geometry": "Polygon",
                    "attributeCount": 5,
                    "attributes": [
                        {
                            "attribute": "ALAND",
                            "count": 6,
                            "type": "number",
                            "values": [
                                1000508839,
                                1001065264,
                                1001787870,
                                1002071716,
                                1002509543,
                                1003451714
                            ],
                            "min": 82093,
                            "max": 376825063576
                        },
                        {
                            "attribute": "AWATER",
                            "count": 6,
                            "type": "number",
                            "values": [
                                0,
                                100091246,
                                10017651,
                                100334057,
                                10040117,
                                1004128585
                            ],
                            "min": 0,
                            "max": 25190628850
                        },
                        {
                            "attribute": "GEOID",
                            "count": 6,
                            "type": "string",
                            "values": [
                                "01001",
                                "01003",
                                "01005",
                                "01007",
                                "01009",
                                "01011"
                            ]
                        },
                        {
                            "attribute": "MTFCC",
                            "count": 1,
                            "type": "string",
                            "values": [
                                "G4020"
                            ]
                        },
                        {
                            "attribute": "NAME",
                            "count": 6,
                            "type": "string",
                            "values": [
                                "Abbeville",
                                "Acadia",
                                "Accomack",
                                "Ada",
                                "Adair",
                                "Adams"
                            ]
                        }
                    ]
                },
                {
                    "layer": "tl_2016_us_primaryroads",
                    "count": 12509,
                    "geometry": "LineString",
                    "attributeCount": 4,
                    "attributes": [
                        {
                            "attribute": "FULLNAME",
                            "count": 6,
                            "type": "string",
                            "values": [
                                "1- 80",
                                "10",
                                "10-Hov Fwy",
                                "12th St",
                                "14 Th St",
                                "17th St NE"
                            ]
                        },
                        {
                            "attribute": "LINEARID",
                            "count": 6,
                            "type": "string",
                            "values": [
                                "1101000363000",
                                "1101000363004",
                                "1101019172643",
                                "1101019172644",
                                "1101019172674",
                                "1101019172675"
                            ]
                        },
                        {
                            "attribute": "MTFCC",
                            "count": 1,
                            "type": "string",
                            "values": [
                                "S1100"
                            ]
                        },
                        {
                            "attribute": "RTTYP",
                            "count": 6,
                            "type": "string",
                            "values": [
                                "C",
                                "I",
                                "M",
                                "O",
                                "S",
                                "U"
                            ]
                        }
                    ]
                }
            ]
        }
    }

Evolutions futures :

Dans une future révision de cette spécification, la table de métadonnées contiendra une ligne de compression pour indiquer le type de compression (le cas échéant) qui a été appliqué aux données de la mosaïque.

Lors d'une future révision de cette spécification, les lignes bounds, minzoom et maxzoom de la table de métadonnées seront obligatoires.

Une révision future de cette spécification déléguera la description de la ligne json de la table de métadonnées à une spécification externe.
Up

































Up

































Up
































Up































Up
































Up
































Up
































Up
































Up





























Up




















Up
 
Aller au Tutoriel_PC.htm
  Retour haut de page
Copyright : Ce site web est protégé contre toute utilisation commerciale.
Dernière modification de cette page :