Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce



#AGAURAGEO

1ère Biennale de l'Information Géographique
Lyon - 17 décembre 2019

http://agaurageo.fr/

#1 Sat 05 October 2019 23:03

preliator
Membre
Date d'inscription: 17 Nov 2018
Messages: 219

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

lejedi76
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 340

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
Membre
Date d'inscription: 17 Nov 2018
Messages: 219

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

lejedi76
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 340

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
Membre
Date d'inscription: 17 Nov 2018
Messages: 219

Re: QGIS: Automatiser Exporter CSV en Shape

Un grand merci smile

Hors ligne

 

#6 Mon 07 October 2019 11:10

lejedi76
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 340

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: 815
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

lejedi76
Moderateur
Date d'inscription: 8 Aug 2013
Messages: 340

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

 

Pied de page des forums

Powered by FluxBB

Partagez  |