GeoPackage

Spectrum Spatial prend en charge le fournisseur de données GeoPackage pour Windows et Linux. GeoPackage est une extension spatiale de la technologie de base de données SQLite. La norme GeoPackage, adoptée l'an dernier par OGC, permet de placer plusieurs tables, leurs relations et leurs métadonnées pertinentes dans un seul fichier. Cette option s'avère utile pour les grands jeux de données et pour contourner les limitations de taille de données et de jeu de caractères de MapInfo Professional.

Spectrum Spatial traite GeoPackage comme une source de données accessible en lecture-écriture.

Conformité à la spécification GeoPackage

La prise en charge de GeoPackage par Spectrum Spatial a été conçue pour être aussi conforme que possible à la spécification OGC. Cependant, d'autres implémentations qui le prennent en charge (soit pour la lecture, l'écriture ou la création) peuvent ne pas être entièrement conformes.

Spectrum Spatial considère qu'une table GeoPackage est conforme si elle :

  • inclut une table gpkg_spatial_ref_sys telle que spécifiée dans la Condition 10 de la spécification OGC ;
  • inclut une table gpkg_contents telle que spécifiée dans la Condition 13  ;
  • contient des tables ou des vues modifiables contenant des fonctions de vecteur. Dans ce cas, ces tables ou ces vues de fonction comportent une colonne avec un type de colonne INTEGER et des contraintes de colonne PRIMARY KEY AUTOINCREMENT, comme spécifié dans la Condition 29.http://www.geopackage.org/spec/#feature_user_tables
  • Implémente des index spatiaux sur des colonnes de géométrie de table de fonction, comme spécifié dans les Conditions 70, 71 et 72.
    Remarque : Un index RTree, même s'il n'est pas obligatoire, est recommandé pour empêcher les problèmes de performances.

Accès aux données dans GeoPackage

Un fichier GeoPackage porte une extension .gpkg et est essentiellement constitué d'une base de données contenant des tables. Pour accéder aux données GeoPackage avec Spectrum Spatial, créez une connexion nommée à un système de fichiers à l'aide de Spatial Manager. Une connexion à un fichier GeoPackage est un chemin d'accès similaire à celui des fichiers TAB et Shape. Une fois la connexion créée, vous pouvez créer des tables nommées l'utilisant. Utilisez les tables nommées GeoPackage comme vous utiliseriez les tables nommées de toute autre fournisseur de données. Une table GeoPackage doit comporter un index spatial pour fonctionner avec Spectrum Spatial. Des exemples de données GeoPackage sont disponibles dans le dossier /Samples/NamedTables du référentiel (WorldGeoPackageTable). La version antérieure de Map Uploader (pour les versions de MapInfo Pro antérieures à la version 16.0) ne prend pas en charge GeoPackage. Les deux droits en lecture et en écriture sont nécessaires sur le dossier parent d'un fichier GeoPackage pour ouvrir la base de données GeoPackage.

Type de données prises en charge

Le fournisseur de source de données GeoPackage suit les mêmes règles que JDBC générique lors du mappage d’un type de données JDBC non spatiales vers le système de type de Spectrum Spatial. Le nom de la colonne spatiale et du système de coordonnées est recherché dans la table gpkg_geometry_columns.

Les types de données de géométrie et de géographie sont les données spatiales équivalentes aux types de données pris en charge de Spectrum Spatial : Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon et GeometryCollection.

Clé principale

La spécification GeoPackage identifie la colonne dans la table qui sert de clé primaire. Cette colonne est repérée comme étant en lecture seule, puisqu’il s’agit d’une colonne à incréments automatiques.

Prise en charge de Insert, Update, et Delete

Les opérations Insert, Update et Delete sont prises en charge sur un fournisseur de source de données GeoPackage. Le mode de journal Write Ahead Logging (WAL) de SQLite est utilisé pour autoriser la lecture et l'écriture simultanées pour GeoPackage, avec ces restrictions :

  • Tous les processus à l'aide d'une base de données doivent se trouver sur le même ordinateur hôte. WAL ne fonctionne pas sur un système de fichiers réseau.
  • Il n'est pas possible d'ouvrir des bases de données WAL en lecture seule. Le processus d'ouverture doit disposer de privilèges d'écriture pour le fichier de mémoire partagé wal-index « -shm » associé à la base de données (si ce fichier existe), ou un accès en écriture sur le répertoire contenant le fichier de base de données, si le fichier «-shm » n'existe pas.

Pour plus d'informations sur WAL, notamment ses avantages et les limitations, reportez-vous à http://www.sqlite.org/wal.html.

Optimisations de MI SQL

GeoPackage prend en charge les mêmes fonctions et opérateurs non spatiaux que le fournisseur de source de données JDBC générique, ainsi que l’opérateur spatial EnvelopesIntersect.

Pour plus d'informations, reportez-vous à l'annexe Délégation aux fournisseurs de données.

Volatilité

Pour Geopackage, la volatilité correspond à toute modification apportée au schéma de la table, telle que l'ajout ou la suppression d'une colonne ou la modification d'un index sur une colonne. En cas de modification, Spectrum Spatial vide les métadonnées de la table du cache et les recharge avant de poursuivre l'opération d'accès aux données. Pour plus d'informations, reportez-vous à la section Volatilité de la source de données.

GeoPackage et MAPINFO_MAPCATALOG

Le fournisseur de données GeoPackage de Spectrum Spatial n'utilise pas de MAPINFO_MAPCATALOG. Cela a plusieurs conséquences :
  • Les géométries lues à partir d'une table GeoPackage n'ont aucun style et s'affichent sous forme de couche noir et blanc dans une carte. Si vous avez besoin de styles, utilisez un thème de remplacement.
  • Il n'est pas possible de créer des tables XY à partir d'une table GeoPackage. Pour créer une table XY à partir d'une une table d'une base de données SQLite, créez une table nommée basée sur JDBC générique. Par exemple, créez une connexion dans Spatial Manager avec une chaîne telle que jdbc:sqlite:c:\data\sample.gpkg conformément aux instructions de Création d'une connexion. Ensuite, créez une table XY conformément aux instructions de Création d'une table XY.

Prise en charge des systèmes de coordonnées

GeoPackage prend en charge un SRS (Spatial Reference System – Système de référence spatial) lorsque le SRID est égal à -1 et un SRS géographique lorsque SRID est égal à 0. Si une table GeoPackage comporte un SRID égal à -1, utilisez les astuces de colonne pour définir un SRS cartésien dans la table nommée. Si le SRID est égal à 0, utilisez les astuces de colonne pour définir un SRS géographique. Si ces astuces de colonne ne sont pas définies ou si elles sont définies de manière erronée, le système déclenche une exception. Ces astuces de colonne doivent être ajoutées manuellement à une définition de table nommée en utilisant WebDav ou un éditeur de texte pour ajouter l'attribut <DBDataSourceMetadata> au fichier XML :

Pour un SRS cartésien :

<DBDataSourceMetadata>
  <FeatureGeometryAttribute srsName="epsg:3857">geom</FeatureGeometryAttribute>
</DBDataSourceMetadata>
Pour un SRS géographique :
<DBDataSourceMetadata>
  <FeatureGeometryAttribute srsName="epsg:4326">geom</FeatureGeometryAttribute>
</DBDataSourceMetadata