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 !.
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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Tue 23 July 2019 15:25

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

QGIS: Script Python pour Georeferencer des DXF / Shape ?

Bonjour,

Je suis embêtée depuis quelques jours. J'ai reçu des fichiers en format dxf correspondant à des données réseaux.
Malheureusement ces données sont mal géoréférencées, et, il faut que je les passe tous en .shp pour pouvoir les intégrer dans notre SIG.
C'est une manipulation totalement faisable à la maison, mais le nombre de fichier est très important, les reprendre un par un prend un temps considérable.
Je sais qu'il est possible de créer des script en langage python directement dans qgis permettant d'automatiser des manipulations.

J'aurai aimé savoir s'il était possible de créer des script pour modifier les formats des fichiers tout en modifiant le géoréférencement?
Tout ça sachant qu'un fichier dxf contient des données points, lignes, et polygone, et qu'il faut donc derrière créer 3 shape différents.

Si ceci est possible, ça me ferai gagner un temps très précieux, sinon j'en ai pour l'été....

Merci beaucoup, ML

Hors ligne

 

#2 Tue 23 July 2019 15:48

Patrice
JeSuisCharlie
Date d'inscription: 16 Sep 2005
Messages: 4730

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Hello

Tu as combien de DXF a traiter ?

SVP peux tu nous joindre en ZIP (Max = 500 Ko) l'un de tes DXF ??
Et quel est le Deplacement XY + Rotation ou Georeferencement a realiser ???

GeoBye, Pat


(Autodesk Expert Elite Team)

Hors ligne

 

#3 Tue 23 July 2019 15:59

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

J'ai presque 3000 dxf à traiter...

J'en ai déjà fait plus de 400 à la main mais vu ce qu'il reste encore je vais jamais voir le bout...

Les dxf sont en Lambert II et il me faut les shape en Lambert 93.


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

#4 Tue 23 July 2019 17:37

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1129

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

ogr2ogr to the rescue :

En ligne de commande avec le shell osgeo4w,
si vous êtes sous Windows :

Code:

FORFILES /p C:\chemin\vers\les\dxfs /m *.dxf /c "ogr2ogr -t_srs EPSG:2154 @fname.shp @file"

Sous Linux/mac :

Code:

 find /chemin/vers/les/dxf -type f -iname *.dxf -exec bash -c "B=${0%.*}; ogr2ogr -t_srs EPSG:2154 $B.shp $0" {} \;

Faites une sauvegarde de vos fichiers dxf avant d'essayer quand même, histoire d'éviter une catastrophe.

Hors ligne

 

#5 Tue 23 July 2019 17:44

Patrice
JeSuisCharlie
Date d'inscription: 16 Sep 2005
Messages: 4730

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Hello

Sinon en theorie le Super Outil gratuit IGNMAP de l'IGN est capable de reprojeter en Batch N fichiers DXF !?

GeoBye, Pat


(Autodesk Expert Elite Team)

Hors ligne

 

#6 Wed 24 July 2019 09:27

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

tumasgiu:  Merci pour les codes. Si je comprends bien il faut avoir installé ogr2ogr pour que la commande fonctionne sous windows?

Si c'est le cas, où trouver un lien de téléchargement sur?


Patrice: Super idée ce logiciel, mais quand je veux l'installer mon antivirus s'affole...


En tout cas merci à tous les deux pour votre aide!

Hors ligne

 

#7 Wed 24 July 2019 09:43

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1129

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

tumasgiu:  Merci pour les codes. Si je comprends bien il faut avoir installé ogr2ogr pour que la commande fonctionne sous windows?

Si c'est le cas, où trouver un lien de téléchargement sur?


Logiquement, si QGIS est installé sur votre machine, vous devez avoir aussi installé le shell osgeo4w,
qui comprends tout un tas d'outils en ligne de commande, comme la famille gdal/ogr.

Hors ligne

 

#8 Wed 24 July 2019 10:17

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Ah ok, super alors je vais le tester comme ça.
Merci beaucoup!

Hors ligne

 

#9 Wed 24 July 2019 10:58

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Alors, je ne connais pas du tout le langage python, donc.... Il semble qu'une partie de ma commande ne lui plaise pas. Le chemin d'accès aux dxf comprend des "-" et ça me passe une partie de la ligne en rouge.
J'imagine que si c'est comme le SQL il y a des symboles qui ne passent pas comme ça?

Hors ligne

 

#10 Wed 24 July 2019 12:12

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Alors, en testant avec mon chemin pour arriver jusqu'aux dxf que j'ai enregistré sur mon bureau pour faciliter l'accès, j'ai ce message d'erreur :

Traceback (most recent call last):
  File "C:\PROGRA~1\QGIS3~1.4\apps\Python37\lib\code.py", line 63, in runsource
    code = self.compile(source, filename, symbol)
  File "C:\PROGRA~1\QGIS3~1.4\apps\Python37\lib\codeop.py", line 168, in __call__
    return _maybe_compile(self.compiler, source, filename, symbol)
  File "C:\PROGRA~1\QGIS3~1.4\apps\Python37\lib\codeop.py", line 99, in _maybe_compile
    raise err1
  File "C:\PROGRA~1\QGIS3~1.4\apps\Python37\lib\codeop.py", line 87, in _maybe_compile
    code1 = compiler(source + "\n", filename, symbol)
  File "C:\PROGRA~1\QGIS3~1.4\apps\Python37\lib\codeop.py", line 133, in __call__
    codeob = compile(source, filename, symbol, self.flags, 1)
  File "<input>", line 1
    FORFILES /p C:\Users\lamarrem\Desktop\COUFFE /m *.dxf /c "ogr2ogr -t_srs EPSG:2154 @fname.shp @file"
                ^
SyntaxError: invalid syntax


Je ne sais pas du tout traduire pour savoir ce qui ne lui plait pas dans la commande...

Hors ligne

 

#11 Wed 24 July 2019 13:13

neskuik01
Participant assidu
Date d'inscription: 16 Feb 2015
Messages: 193

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

LamarreM a écrit:

Alors, je ne connais pas du tout le langage python, donc.... Il semble qu'une partie de ma commande ne lui plaise pas. Le chemin d'accès aux dxf comprend des "-" et ça me passe une partie de la ligne en rouge.
J'imagine que si c'est comme le SQL il y a des symboles qui ne passent pas comme ça?


Et si tu copies tes fichiers .dxf dans un autre répertoire pour tester genre c:\fichdxf\ ?  Tu as bien lancé la commande dans l'invité de commande osgeo ?

C:\Users\lamarrem\Desktop\COUFFE => COUFFE c'est le répertoire ?
Si oui  peut être tester avec "C:\Users\lamarrem\Desktop\COUFFE\" ?

Hors ligne

 

#12 Wed 24 July 2019 13:58

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

En fait mes fichiers sont stockés dans un serveur linux donc j'ai copié le dossier qui se nomme "COUFFE" sur mon bureau tout simplement.
Parce que le chemin pour aller chercher les fichiers dans le serveur sont très long, j'avais peur que ça soit trop long.

L'invité de commande osgeo? J'ai lancé dans la console python....

Hors ligne

 

#13 Wed 24 July 2019 14:21

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Alors j'ai relancé la commande mais cette fois dans le shell OSGeo4W et ça a fait quelque chose, j'ai pas l'impression d'avoir de message d'erreur, mais je ne vois pas non plus où seraient stockés les nouveaux fichiers.

Je suis un peu perdue, c'est vraiment pas mon travail habituel...

Hors ligne

 

#14 Wed 24 July 2019 14:24

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Ah si un message d'erreur par fichier j'imagine:

FAILURE:
Unable to open datasource `2008-048-0819.shp' with the following drivers.

Hors ligne

 

#15 Wed 24 July 2019 16:12

neskuik01
Participant assidu
Date d'inscription: 16 Feb 2015
Messages: 193

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Je n'ai jamais travailler avec osgeo perso hmm , donc tous ce que je te dis sera à prendre avec des pincettes. Peux-tu envoyer un la commande que tu as rentré  ?

Hors ligne

 

#16 Wed 24 July 2019 16:34

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

FORFILES /p C:\Users\lamarrem\Desktop\COUFFE /m *.dxf /c "ogr2ogr -t_srs EPSG:2154 @fname.shp @file"

Hors ligne

 

#17 Wed 24 July 2019 16:39

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1129

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Désolé,

j'ai pas testé le code avant de vous le proposer.
Le voici corrigé :

Code:

forfiles /p I:\Temp\Tests\ /m *.dxf /c "cmd /c ogr2ogr -t_srs EPSG:2154 @fname.shp @file"

Par contre, j'ai essayé avec votre dxf test, et ogr m'a indiqué qu'il n'y avait pas d'information
de projection source (il manque le SCR).
Si vos fichiers de travail comportent cette info, pas de problème,
sinon vous pouvez le "forcer" avec  l'option :

-s_srs EPSG:27572

Dernière modification par tumasgiu (Wed 24 July 2019 17:53)

Hors ligne

 

#18 Wed 24 July 2019 16:51

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Merci, je vais réessayer du coup.
Effectivement quand j'ouvre mes fichiers sur QGis je dois donner le SCR, donc il ne doit pas être indiqué dans le fichier.

La commande -s_srs EPSG:27572 est à placer à quel endroit?

Hors ligne

 

#19 Wed 24 July 2019 17:33

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1129

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

juste après ogr2ogr.

J'ai donné le code EPSG Lambert Zone II,
mais vérifiez  si c'est vraiment celui qu'il vous faut.

Hors ligne

 

#20 Thu 25 July 2019 08:23

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Donc j'ai essayé avec cette commande:

forfiles /p C:\Users\lamarrem\Desktop\COUFFE\ /m *.dxf /c "cmd /c ogr2ogr -s_srs EPSG:27572 -t_srs EPSG:2154 @fname.shp @file"

et j'obtiens ce message d'erreur:

SyntaxError: invalid syntax

Dernière modification par LamarreM (Thu 25 July 2019 08:29)

Hors ligne

 

#21 Thu 25 July 2019 09:35

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1129

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

SyntaxError: invalid syntax

Ca ressemble à du Python çà.
Il faut lancer la commande dans le terminal Osgeo4w
(le programme s'appelle Osgeo4w shell)

Dernière modification par tumasgiu (Thu 25 July 2019 09:38)

Hors ligne

 

#22 Thu 25 July 2019 09:58

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1129

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Je viens de m'apercevoir que le type de geometrie
de votre dxf est GeometryCollection.

Ce type n'est pas supporté par le format Shape !

Hors ligne

 

#23 Thu 25 July 2019 10:42

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Oui pardon, j'ai instinctivement activé le python dans le shell.

Alors le nouveau test est beaucoup plus concluant puisque j'ai réussit à récupérer des shape.

Et ce message d'erreur a chaque fichier:

Warning 6: Normalized/laundered field name: 'EntityHandle' to 'EntityHand'
ERROR 1: Attempt to write non-linestring (POINT) geometry to ARC type shapefile.
ERROR 1: Unable to write feature 34 from layer entities.
ERROR 1: Terminating translation prematurely after failed
translation of layer entities (use -skipfailures to skip errors)


Dans les nouveau shape j'ai soit des points, soit des lignes, soit des polygones, c'est aléatoire en fonction des fichiers et il manque dans tous les cas des éléments, comme si l'extraction n'a pas été complète.

Dernière modification par LamarreM (Thu 25 July 2019 10:54)

Hors ligne

 

#24 Thu 25 July 2019 11:15

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1129

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Oui,

comme je vous l'explique dans mon précédent message,
vos dxf contiennent entités avec plusieurs types de géométrie
différents, le format ShapeFile ne peut pas gérer cela,
une couche doit posséder des géométries d'un seul type.

Si vous voulez vraiment utiliser le format Shape,
il va falloir pour chaque shape, créer autant de couches
que de types de géometries.
Je ne sais pas si Ogr2Ogr est capable de le faire automatiquement.
Si ce n'est pas le cas, un script python serait plus pratique.

Hors ligne

 

#25 Thu 25 July 2019 11:31

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

D'accord, je comprend bien le problème...

Un script python serait compliqué à mettre en place pour ce genre de chose?

Hors ligne

 

#26 Thu 25 July 2019 11:37

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1129

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Non, ca ne devrait pas être trop compliqué,
mais quand même un plus que de changer de format de sortie,
si c'est possible.

Hors ligne

 

#27 Thu 25 July 2019 11:49

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Est ce que vous arriveriez à en faire un?

Je ne connais pas du tout le python, je commence tout juste à lire un cours de débutant donc je suis très loin de pouvoir écrire un script comme ça.

Hors ligne

 

#28 Thu 25 July 2019 16:37

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1129

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Je pourrais vous aider à en écrire un, oui.

C'est certainement à votre portée.

Hors ligne

 

#29 Mon 29 July 2019 13:37

LamarreM
Participant occasionnel
Date d'inscription: 6 May 2019
Messages: 29

Re: QGIS: Script Python pour Georeferencer des DXF / Shape ?

Bonjour,

Après une grande aide de la part de umasgiu, merci encore, nous avons trouvé une solution à mon problème.

L'idée est d'extraire en plusieurs fais en précisant à chaque fois le type de géométrie voulu, ce qui me créé des répertoires contenant les shape extrait par géométrie. On ajoute également une commande pour préciser le nom que l'on veut donner aux fichiers pour mieux s'y retrouver, et le tour est joué!

La commande donne donc:

forfiles /p I:\Tests /m *.dxf /c "cmd /c ogr2ogr -nln entities_lines -where \"OGR_GEOMETRY='Point'\" -s_srs EPSG:27572 -t_srs EPSG:2154 -f \"ESRI Shapefile\" @fname @file"

Avec nln nom du fichier
et where pour préciser la géométrie à extraire.

Cela pourra peut être resservir à quelqu'un un jour.

Encore merci pour le temps passé à m'aider!

ML

Hors ligne

 

Pied de page des forums

Powered by FluxBB