Suite

Comment créer un QgsVectorLayer valide à partir de texte délimité ?


J'ai du mal à charger des fichiers csv dans des calques à l'aideQgsVectorLayer().

Je sais que cela ressemble à une répétition, mais j'ai lu attentivement

Créer un script pour ajouter une couche de texte délimité dans QGIS

et

http://hub.qgis.org/issues/7491

mais je n'arrive toujours pas à le faire fonctionner.

Un exemple de mon fichier de données, test.csv :

Indice,y,x 0,37.7646618,-122.4960858 1.37.777494,-122.416311 2.37.717707,-122.3997056 3.37.732284,-122.498118 4.37.749998,-122.392333

Mon code :

import os import urllib import pathlib from qgis.core import QgsVectorLayer local_path = 'C:devFCMS_conflationdataTMC_nodes.csv' node_layer = 'test' abspath = os.path.abspath(local_path) params = {'delimiter': ',', 'decimalPoint' : '.', 'xField' : longitude, 'yField' : latitude} uri = "%s?%s" %(pathlib.Path(abspath).as_uri(), urllib.unquote( urllib.urlencode(params))) layer = QgsVectorLayer(uri, node_layer, "delimitedtext")

L'URI formaté ressemble à :

[] uri >>> 'file:///C:/dev/FCMS_conflation/data/TMC_nodes.csv?decimalPoint=.&delimiter=,&xField=longitude&yField=latitude'

J'ai essayé de nombreuses variantes des paramètres, y compris lecrsettaper. Mais peu importe ce que j'essaie, je ne peux pas créer de calque valide.

[] layer.isValid() >>> False

J'ai vérifié que je peux ajouter le fichier à l'aide de l'interface graphique QGIS. J'ai même essayé d'utiliser l'uri fourni parlayer.metadatadepuis le plugin Python.

J'utilise QGIS 2.10.1 sur une machine Windows 7 64 bits.


Il semble que vous deviez définir le chemin du préfixe QGIS, comme je l'explique dans Chargement de la couche raster à l'aide de PyQGIS? et Échec de la création des couches de mémoire dans l'application QGIS sous Linux


Voir la vidéo: Excel or CSV to QGIS. burdGIS (Octobre 2021).