J'utilise QGIS 2.0.1 et je suis connecté à une base de données activée spatialement MS SQL Server (pas ESRI). Je peux me connecter à la couche et la charger très bien dans ma table des matières. J'ai caché un certain nombre de champs qui ne sont pas importants pour la visibilité.
Maintenant, je veux exporter ces données vers un autre type de données (nous utiliserons le fichier de formes pour cet exemple). Lorsque je clique avec le bouton droit sur le calque, choisissez "Enregistrer sous" et définissez le fichier de sortie, j'obtiens l'erreur suivante:
L'exportation vers un fichier vectoriel a échoué. Erreur: type non pris en charge pour le champ GlobalID
Remarque 1 : si je coche "Ignorer la création d'attributs" dans la boîte de dialogue, le fichier de formes est créé sans erreur.
Remarque 2 : ArcGIS n'a pas ce problème, il convertit simplement le champ GUID en type "TEXT".
En regardant la table, l'un des champs que j'ai caché est un GUID de type SQL < uniqueidentifier >, qui est vraisemblablement le coupable. Pour tenter de résoudre ce problème, j'ai rendu le champ «masqué». J'aurais supposé que parce que le champ était caché, QGIS n'essaierait pas d'exporter ce champ, mais cela s'est avéré ne pas être le cas.
Pouvez-vous définir les champs que vous souhaitez exporter à partir de QGIS?
Est-il possible pour QGIS d'exporter uniquement les champs "Visibles"? Ou existe-t-il une autre façon de procéder à partir de QGIS (peut-être définir les champs via une requête ogr2ogr)? Cela semble être une lacune de QGIS si je ne peux pas définir les champs à exporter.
MISE À JOUR: J'ai fait un test en utilisant un exemple de fichier de formes pour voir si je pouvais limiter les champs de sortie. La ligne de commande ogr2ogr suivante a fonctionné et a supprimé tous les champs à l'exception de "nom":
ogr2ogr -f "ESRI Shapefile" test.shp city.shp -sql "select name from city"
mais en utilisant QGIS et en ajoutant:
-sql "select name from city"
à la section "calque" de la boîte de dialogue "Enregistrer sous" n'a pas abouti à un fichier de formes avec uniquement le champ unique. Je ne vois donc pas vraiment comment je peux manipuler la sortie du fichier pour n'afficher que quelques champs. Toute aide est appréciée.
la source
-sql "select <fields> from <table>"
(en excluant le champ GlobalID des <champs>) à la partie "Couche" de la boîte de dialogue "Enregistrer sous", mais la même erreur est toujours apparue. Ai-je mal utilisé ce bloc de code ou s'agit-il d'un bug?Réponses:
Si cela fonctionne pour vous en ligne de commande avec ogr2ogr, je pense que c'est la meilleure solution pour l'utiliser. Vous pouvez écrire un simple fichier bat pour créer un fichier de formes à partir de votre base de données MSSQL. De toute évidence, vous ne pouvez pas modifier les données et les sauvegarder sur le serveur de cette façon.
QGIS possède les zones de saisie Source de données et Couche, mais ce ne sont que pour les paramètres -dsco et -lco d'ogr2ogr. Le pilote de fichier de formes OGR n'a pas de dsco ou lco utile pour vos besoins:
http://www.gdal.org/ogr2ogr.html
http://www.gdal.org/ogr/drv_shapefile.html
Alternativement, il devrait être possible d'écrire un plugin python qui demande les données du serveur avec une commande SQL SELECT à vos besoins. Cela permettrait même de modifier les données.
la source
Je vous suggère de vérifier la table des attributs pour la couche dans la table des matières et si le champ GlobalID existe. Basculez en mode édition, supprimez la colonne qui crée le problème lors de l'exportation et fermez la fenêtre. Enregistrez ensuite en tant que fichier de formes ou quel que soit le format de sortie que vous souhaitez. J'espère que ça aide.
la source