banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Sat 05 October 2019 23:03

preliator
Participant assidu
Date d'inscription: 17 Nov 2018
Messages: 433

QGIS: Automatiser Exporter CSV en Shape

Bonjour à tous,

J'ai téléchargé des données sur un site qui ne les rend accessibles que par CSV, avec un champ en X et Y qu'il faut importer sur QGis.

Disposant d'une petite centaine de ces fichiers CSV que je souhaite convertir en Shape, je me demandais s'il existe une méthode automatique (pour m'éviter à devoir répéter l'opération 100 fois) pour pouvoir :

- Importer le fichier CSV dans QGis

- Lui indiquer quels champs correspondent aux X et Y

- Enregistrer la couche en Lambert 93

Ca me dépannerais beaucoup ^^ Merci à vous.

Hors ligne

 

#2 Sun 06 October 2019 20:41

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS: Automatiser Exporter CSV en Shape

Bonsoir,
Les champs x et y sont les même pour tous les fichiers ?
Le mieux est de passer par un script python.  Une âme charitable voudra bien vous dépanner si vous indiquez votre version de Qgis.

Cordialement

Hors ligne

 

#3 Sun 06 October 2019 21:13

preliator
Participant assidu
Date d'inscription: 17 Nov 2018
Messages: 433

Re: QGIS: Automatiser Exporter CSV en Shape

Merci pour votre réponse.
Oui, ces champs sont les même pour tous !
J'utilise la version 3.8 de qgis.
Effectivement, si je pouvais apprendre la manière d'automatiser cela avec python, ça serait génial smile
Merci

Hors ligne

 

#4 Mon 07 October 2019 11:01

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS: Automatiser Exporter CSV en Shape

Bonjour,

voici un script :

Code:

from qgis.core import QgsVectorLayer, QgsVectorFileWriter, QgsCoordinateReferenceSystem
import os


folder = r'D:/mn/chemin' #bien mettre des slash
encoding='ISO-8859-1'
delimiter = ',' #delimiteur
decimalPoint = ',' #point decimal
xField = 'x'
yField = 'y'
crs = 'EPSG:4326' #projection

uri="file:///{}?encoding={}&type=csv&delimiter={}&detectTypes=yes&decimalPoint={}&xField={}&yField={}&crs={}&spatialIndex=no&subsetIndex=no&watchFile=no"

crs_export = QgsCoordinateReferenceSystem('EPSG:2154')

for f in os.listdir(folder):
  if f.endswith(".csv"):
    csvfile = os.path.join(folder, f)
    csvuri = uri.format(csvfile, encoding, delimiter,decimalPoint, xField, yField, crs)
    basename, ext = os.path.splitext(csvfile)
    shpfile = os.path.join(folder, basename + '.shp')
    layer = QgsVectorLayer(csvuri, 'layer', 'delimitedtext')
    if layer.isValid():
      QgsVectorFileWriter.writeAsVectorFormat(layer, shpfile, 'UTF-8', crs_export, 'ESRI ShapeFile')
      print('export')
    else:
      print('erreur : ' + f)

EDIT : j'avais oublié que vous vouliez la couche finale en LAMBERT-93

Dernière modification par lejedi76 (Mon 07 October 2019 11:09)

Hors ligne

 

#5 Mon 07 October 2019 11:06

preliator
Participant assidu
Date d'inscription: 17 Nov 2018
Messages: 433

Re: QGIS: Automatiser Exporter CSV en Shape

Un grand merci smile

Hors ligne

 

#6 Mon 07 October 2019 11:10

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS: Automatiser Exporter CSV en Shape

J'ai modifié le code pour exporter la couche en Lambert-93

Hors ligne

 

#7 Mon 07 October 2019 20:52

ThomasG
Membre
Lieu: Nantes
Date d'inscription: 9 Sep 2005
Messages: 948
Site web

Re: QGIS: Automatiser Exporter CSV en Shape

Salut,

Même si la réponse est valide, pas besoin de QGIS pour faire ces opérations. Il faut ouvrir une ligne de commande et avoir GDAL installé. Si tu as QGIS, tu as GDAL installé normalement, tu dois si nécessaire lancer "OSGeo4W Shell" si tu es sous Windows.

Sur Windows, en supposant que tes champs pour les coordonnées x et y commencent par X et Y et que tes coordonnées dans le CSV sont du Lambert 93 et que tu veux exporter en Lambert 93

Code:

for /R %f in (*.csv) do ogr2ogr -s_srs EPSG:2154 -t_srs EPSG:2154 -oo X_POSSIBLE_NAMES=X* -oo Y_POSSIBLE_NAMES=Y* -f "ESRI Shapefile" "%~dpnf.shp" %f

Sur Linux,

Code:

for f in *.csv ;
do ogr2ogr -s_srs EPSG:2154 -t_srs EPSG:2154 -oo X_POSSIBLE_NAMES=X* -oo Y_POSSIBLE_NAMES=Y*  -f "ESRI Shapefile" ${f%csv}shp $f;
done;

Pompé et adapté de la réponse à la question en anglais https://gis.stackexchange.com/questions … ng-ogr2ogr

Si tu dois gérer l'encodage, voir https://gis.stackexchange.com/a/15915/638

Ensuite, si tu veut rajouter les fichiers dans QGIS, tu fais un glisser-déposer de tous les fichier shp et c'est bon.


Cordialement

Thomas

Hors ligne

 

#8 Tue 08 October 2019 15:07

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS: Automatiser Exporter CSV en Shape

Bonjour,

effectivement pas besoin de passer par Qgis pour ce genre de tâche mais la demande a été faite dans ce forum.

Le seul avantage que je vois de passer par un script python, c'est que c'est à la fois multiplateforme, et l'utilisateur néophyte n'as pas trop besoin de mettre les mains dans le cambouis, simplement de modifier les paramètres d'entrée qui vont bien.

Après si les utilisateurs ne sont pas effrayés par le shell, cette solution est utile.

Cordialement,

Hors ligne

 

#9 Thu 28 January 2021 15:55

JuanLasso
Juste Inscrit !
Date d'inscription: 10 Dec 2019
Messages: 4

Re: QGIS: Automatiser Exporter CSV en Shape

Bonjour,

D'abord un grand merci à @JD pour le script !!! , j'ai essayé de l'utiliser et malgré un petit message d'erreur à la fin, il marche bien. Par contre, j'ai besoin des SHP en sortie en UTF-8. J'ai bien modifié la partie encoding mais il continue à me créer des couches en ISO-8859-1. Auriez vous une idée de comment régler cela ?

Merci d'avance

Cordialement,
Juan

Dernière modification par JuanLasso (Mon 01 February 2021 18:06)

Hors ligne

 

#10 Mon 01 February 2021 18:13

JD
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 726

Re: QGIS: Automatiser Exporter CSV en Shape

Bonsoir,

normalement c'est prévu pour mais le script est un peu ancien. Sous quelle version de qgis êtes-vous ?

Hors ligne

 

#11 Tue 02 February 2021 15:07

JuanLasso
Juste Inscrit !
Date d'inscription: 10 Dec 2019
Messages: 4

Re: QGIS: Automatiser Exporter CSV en Shape

Bonjour,

Je suis sur 3.10.13 A Coruna

Hors ligne

 

Pied de page des forums

Powered by FluxBB