Ajouter une couche à un géopackage existant qui ne fonctionne pas dans QGIS?

9

Mon organisation utilise principalement ArcGIS et nous avons besoin de partager des données avec les sous-traitants. J'ai récemment introduit QGIS (car l'une de nos applications utilise WKT pour importer des données géospatiales et QGIS facilite la conversion de divers formats en WKT), j'ai donc commencé à regarder le format de géopackage et QGIS comme solution de partage de données - nous voulons arrêter en utilisant des fichiers de formes en raison des limitations de longueur de colonne.

En utilisant QGIS, je peux créer un géopackage avec une seule couche en utilisant 'enregistrer sous', lire et éditer la couche en utilisant QGIS, le lire en utilisant ArcGIS cependant, si j'essaie d'ajouter des couches au géopackage en utilisant DB Manager (selon Comment en ajouter un autre couche à GeoPackage dans QGIS? ) J'obtiens une «erreur 11: échec de la connexion à la base de données». J'ai définitivement une connexion au géopackage dans DB Manager car je peux prévisualiser la couche existante et exécuter une requête (c'est-à-dire sélectionner * dans [couche]).

Cela semble être un bogue ( https://hub.qgis.org/issues/14981 ) qui n'est pas programmé pour être corrigé, donc je me demande si d'autres outils ou plug-ins sont disponibles pour que nous puissions ajouter des couches à un géopackage utilisant QGIS?

J'utilise Windows 10, QGIS 2.14.9 et ArcGIS 10.4.

Remarque: Bien que je puisse ajouter une couche au géopackage à l'aide d'OGR2OGR, je ne peux pas obtenir l'adhésion de nos sous-traitants, qui sont des spécialistes de terrain et non des professionnels de l'informatique, pour utiliser des outils de ligne de commande au lieu d'un SIG.

Remarque 2: J'ai actualisé l'utilisation de spatialite pour l'instant car QGIS ne gère pas les données de spatialite créées avec ArcGIS. (DB Manager génère une erreur: dbname = 'H: /Temp/SQLiteTesting/BaseData/ArcSpatialite/Aspatialite.sqlite' table = "arccatTrees" sql = est une couche non valide - non chargée)

Colin
la source
Ce serait bien de voir une telle spatialite db incompatible et d'enquêter un peu.
user30184

Réponses:

13

Mon conseil est de passer à> = 2.18.1. La version 2.18.1 a introduit une fonctionnalité dans laquelle cliquer avec le bouton droit sur une couche et sélectionner enregistrer sous, puis choisir un fichier gpkg existant, vous donne maintenant le choix soit d'écraser le fichier entier, soit d'ajouter la couche en tant que nouvelle couche dans le géopackage. [1] (c.-à-d. N'utilisez pas le plug-in DB Manager, utilisez simplement la fonction de couche «enregistrer sous» intégrée)

[1] Voir https://github.com/qgis/QGIS/commit/85fbc4a7d902c12794fbbfeec5ce43d8a2c0887e

ndawson
la source
1
Merci ndawson. J'ai fait des tests de cusory avec 2.18.2 et la fonctionnalité d'enregistrement en tant que fonction a bien fonctionné pour moi. J'ai remarqué que DB Manager a changé et a séparé la spatialite et le géopackage dans l'interface utilisateur. J'ai de nouveau essayé l'importation à l'aide de DB Manager mais cela a toujours échoué. «Enregistrer sous» est la voie à suivre! :-)
Colin
mais qu'en est-il de la création d'un nouveau calque? lorsque je veux dessiner des points par exemple et que je veux l'ajouter à un géopackage existant, je ne peux pas parce que peu importe comment j'appelle la couche, cette fonctionnalité essaie d'écraser toute la base de données
hilpers
1
En outre, une option pour enregistrer directement les sorties des géoalgorithmes dans le géopackage serait magnifique
hilpers
Je peux par exemple ajouter de nouvelles entités polygonales à un GPG existant avec des données polygonales. Mais est-il possible d'ajouter plusieurs couches (point, polygone, etc.) ensemble dans un GeoPackage? Je n'ai pas pu y parvenir. (avoir QGIS 2.18.13)
Juhele
Désolé, c'est de ma faute. J'ai oublié d'entrer un nom unique pour chaque couche dans GPG, donc QGIS a utilisé le nom de fichier GPG pour le nom de la couche et chaque nouvelle couche a donc essayé de s'ajouter à la couche existante au lieu de l'ajouter.
Juhele