Pages: 1
- Sujet précédent - QGIS 2.18: Charger une couche "csv" - sans x,y - en python 2 - Sujet suivant
#1 Wed 05 May 2021 12:58
- zutix
- Participant actif
- Date d'inscription: 19 Mar 2020
- Messages: 87
QGIS 2.18: Charger une couche "csv" - sans x,y - en python 2
Bonjour
Que faut-il écrire en python 2 pour faire l’équivalent du chargement manuel suivant ?
Clic sur l’icône (apostrophe) qui permet d’ajouter une couche de texte délimité (csv) puis choix des paramètres suivants :
Nom fichier : D:/QGIS/PROJETS/TEST/TestFic.csv
Nom couche : Test Codage : UTF-8
√ Délimiteurs personnalisés ( √ Tab et √ Point-virgule)
Enregistrements (Nb lignes à ignorer : 0 et √ en-têtes en 1ère ligne)
Options des champs ( ) ( ) signifie : aucune sélection
Définition de la géométrie (√ Pas de géométrie)
Paramètres de la couche ( )
Le code suivant dans la console python ne charge pas la couche, probablement parce qu’il manque l'information : pas de géométrie (point est sélectionné par défaut).
uri = "file:///D:/QGIS/PROJETS/TEST/TestFic.csv?delimiter=%s" % (";")
layer = QgsVectorLayer(uri, "Test", "delimitedtext")
D'avance merci, Cordialement
Hors ligne
#2 Thu 06 May 2021 22:53
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS 2.18: Charger une couche "csv" - sans x,y - en python 2
Bonjour,
si vous ne renseignez pas le xField et le yField par défaut il ne prend pas de géométrie.
le code n'ajoute pas la couche à la liste de couche sans :
Code:
QgsMapLayerRegistry.instance().addMapLayer(layer)
Que renvoit :
Code:
layer.isValid()
Hors ligne
#3 Wed 19 May 2021 07:52
- zutix
- Participant actif
- Date d'inscription: 19 Mar 2020
- Messages: 87
Re: QGIS 2.18: Charger une couche "csv" - sans x,y - en python 2
Bonjour et merci pour la réponse JD.
1- le code suivant dans la console python se déroule sans erreur :
uri = "file:///D:/QGIS/PROJETS/TEST/TestFic.csv?delimiter=%s" % (";")
layer = QgsVectorLayer(uri, "Test", "delimitedtext")
QgsMapLayerRegistry.instance().addMapLayer(layer)
layer.isValid()
mais
2- layer.isValid() renvoie False et aucune couche ne se charge.
(La couche texte venant du csv que je voudrais charger en python se charge sans difficulté à la main avec la procédure décrite ci-avant)
Problème difficile non encore résolu.
Hors ligne
#4 Wed 19 May 2021 09:55
- zutix
- Participant actif
- Date d'inscription: 19 Mar 2020
- Messages: 87
Re: QGIS 2.18: Charger une couche "csv" - sans x,y - en python 2
En cherchant à comprendre et en fouillant,
dans les propriétés de la couche, onglet Général, la source de la couche voulue - créée à la main - est :
file:///D:/QGIS/PROJETS/TEST/TestFic.csv?type=csv&delimiter=5Ct;&geomType=none&subsetIndex=no&watchFile=no
En l’affectant à uri puis en effectuant les opérations ci-dessus, cela charge une couche Test mais les séparateurs sont mal placés et la table n’est donc pas celle attendue. D’où l’idée d’écrire :
uri="file:///D:/QGIS/PROJETS/TEST/TestFic.csv?type=csv&delimiter=%s;&geomType=none&subsetIndex=no&watchFile=no" % (";")
Conclusion : voilà ce qui crée une couche Test constituée d’une table conforme au fichier TestFic.csv :
uri="file:///D:/QGIS/PROJETS/TEST/TestFic.csv?type=csv&delimiter=%s;&geomType=none&subsetIndex=no&watchFile=no" % (";")
layer = QgsVectorLayer(uri, "Test", "delimitedtext")
QgsMapLayerRegistry.instance().addMapLayer(layer)
Merci de l'aide et bonne journée
Hors ligne
Pages: 1
- Sujet précédent - QGIS 2.18: Charger une couche "csv" - sans x,y - en python 2 - Sujet suivant