Pages: 1
- Sujet précédent - QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches - Sujet suivant
#1 Thu 31 August 2017 17:04
- Rom01
- Participant occasionnel
- Date d'inscription: 25 Jul 2013
- Messages: 31
QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
Bonjour à tous,
je dispose de plusieurs centaines de shapefiles représentant des parcelles. Je souhaiterais créer un shapefile représentant l'enveloppe de l'ensemble des polygones contenus dans ces centaines de shapefiles. Peu importe la table attributaire ou les champs, le résultat que je recherche est purement graphique.
Pour cela, j'ai tenté d'utiliser l'outil "fusionner des couches vecteurs", pour pouvoir par la suite fusionner toutes mes entités. Malheureusement, l'outil "fusionner des couches vecteurs" plante en m'indiquant cette erreur : "Le champ {} de la couche {} possède un type de données différent dans les autres couches". Effectivement, les tables attributaires des shapefiles input ne sont pas toutes identiques. Certains noms de champs sont identiques d'une table à une autre mais avec un type de données différent (d'où l'erreur certainement...).
J'ai également tenté les outils "v.patch" et "v.hull" de GRASS sans résultats.
Quelqu'un a-t-il une idée ?
Merci pour votre aide !
Romain
Hors ligne
#2 Fri 01 September 2017 10:59
Re: QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
Bonjour,
Il y a trois étapes :
- La première est de retruscturer toutes tes couches, afin de permettre leur fusion. Le plus simple est de fusionner une copie de ces centaines de couches auxquelles auraient été soustraites les colonnes attributaires
- Une fois cela fait, on procède à la fusion
- Puis enveloppe convexe sur la fusion
Concernant l'étape de restructuration, on aurait pu espérer que le modeleur graphique de QGIS permette de traiter un dossier entier de shapefiles auxquels appliquer l'algo "refactoriser les champs" mais si le modeleur comprend l'option "exécuter par lot" pour toutes les couches ouvertes dans un projet, son mode de fonctionnement ne permet pas d'opérer facilement l'export automatique de couches retructurées aisément car il faut donner, pour chacune des couches, le chemin et le nom du fichier d'export.
Il faut donc programmer.
La ligne suivante, à exécuter dans une fenêtre de commande ou via un batch, si tu es sous windows, te permettra de ne retenir que la colonne géométique des couches. Un champ FID sera automatiquement attribué aux couches résultantes (avec le suffixe _geom)
Code:
for /R %F IN (*.shp) DO ogr2ogr -f "ESRI Shapefile" "%~nF_geom.shp" "%~nxF" -dialect sqlite -sql "select geometry from '%~nF'"
Avant de lancer cette commande, il faut te positionner dans le dossier comprenant les shapefiles
geodata au cerema et petits billets en géomatique
Hors ligne
#3 Fri 01 September 2017 18:36
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
Bonjour,
car il faut donner, pour chacune des couches, le chemin et le nom du fichier d'export.
En principe, quand tu ajoutes le dossier de destination (en réalité le fichier) pour le premier fichier à traiter, il y a une fenêtre "Paramètres d'auto remplissage" qui s'ouvre et qui propose des options pour remplir automatiquement la destination pour les autres couches, entre autres en utilisant leur nom.
La doc en parle http://docs.qgis.org/2.18/fr/docs/user_ … ters-table
Hors ligne
#4 Mon 04 September 2017 08:32
Re: QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
Super ! Je n'avais pas remarqué :-)
Par contre, je ne sais pas si le sextante modeler permet d'enlever automatiquement tous les champs des couches afin de ne conserver que la géométrie si celles-ci n'ont pas la même structure ?
geodata au cerema et petits billets en géomatique
Hors ligne
#5 Mon 04 September 2017 09:30
- SANTANNA
- Moderateur
- Lieu: Angers
- Date d'inscription: 18 Jan 2008
- Messages: 3945
Re: QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
Bonjour,
Il y a bien un algorithme "supprimer la colonne" mais c'est malheureusement juste une colonne à la fois. A part la passer dans une boucle (et je ne suis pas sûr que le modeleur graphique le permette) ca risque d'être long et rébarbatif.
La prochaine 3.0 proposera par contre un algorithme "Drop field(s)" ....
Hors ligne
#6 Tue 05 September 2017 11:57
- Rom01
- Participant occasionnel
- Date d'inscription: 25 Jul 2013
- Messages: 31
Re: QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
Bonjour,
merci pour vos conseils.
L'outil "refactoriser les champs" pose effectivement problème car la structure de mes shapefiles ne sont pas les mêmes. Je n'arrive donc pas à obtenir via un batch des couches ayant une structure identique. Peut-être existe-t-il toutefois une "formule magique" à indiquer dans la colonne "correspondance de champs" de cet outil...je ne l'ai pas trouvé...
Même problématique pour l'algo "supprimer la colonne". Comme indiqué par Santanna, je n'arrive pas à effacer toutes les colonnes via un batch, ni à effacer toutes les colonnes sauf "ID"...
MathieuR, pardonne mon ignorance, mais je ne comprends pas où rentrer ta ligne de code : dans la commande QGIS ? dans la commande Windows ? j'ai tenté sans succès, peux-tu m'indiquer la marche à suivre stp ?
Merci beaucoup pour votre aide
ps : je confirme, en mode batch, l'auto remplissage des noms de fichiers en sorite fonctionne très bien
Hors ligne
#7 Tue 05 September 2017 13:31
Re: QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
Bonjour,
Il faut lancer l'invite de commandes windows et lancer la commande et s'étant positionné dans un premier temps dans le dossier contenant les shp.
La commande à lancer, pour se positionner dans le dossier, est toujours à, exécuter dans l'invite windows :
Code:
cd [tonDossierAvecLesShapefiles]
geodata au cerema et petits billets en géomatique
Hors ligne
#8 Tue 05 September 2017 16:50
- Rom01
- Participant occasionnel
- Date d'inscription: 25 Jul 2013
- Messages: 31
Re: QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
Merci MathieuR.
Je n'arrive pas à faire fonctionner le code. J'ai le message d'erreur "'ogr2ogr' n'est pas reconnu en tant que commande interne ou externe, un programme exécutable ou un fichier de commabdes".
J'ai réinstallé Python (3.6 32bits) ainsi que GDAL (2.1.4 cp32 win32). Ces installations ont bien fonctionné, mais le même message d'erreur s'affiche toujours. ogr2ogr is not defined...
Hors ligne
#9 Tue 05 September 2017 17:15
Re: QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
C'est parce que chemin vers ogr2ogr n'est pas dans la variable sytème PATH
Installe plutôt fwtools plutôt que les binaires, et utilise ensuite fwtools depuis le shell qui sera installé.
http://fwtools.maptools.org/
Le shell est une invite de commandes qui te permettra d'utiliser directement les outils tels qu'ogr2ogr
geodata au cerema et petits billets en géomatique
Hors ligne
#10 Tue 05 September 2017 17:38
- Rom01
- Participant occasionnel
- Date d'inscription: 25 Jul 2013
- Messages: 31
Re: QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
C'est fait, plus de problème lié à ogr2ogr, mais nouveau message d'erreur pour chaque shp se trouvant dans mon dossier : "ERROR 1 : sql : unrecognised field name geometry"
Hors ligne
#11 Wed 06 September 2017 09:56
Re: QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
Au temps pour moi, apparemment, ça ne fonctionne pas avec l'ogr2ogr de fwtools, mais avec GDAL 2.1.3, c'est ok.
Donc réessaie ceci en indiquant le chemin vers le bon ogr2ogr et en utilisant, non pas le shell fwtools mais celui de windows :
Code:
for /R %F IN (*.shp) DO cheminVersLeBinDeTonGDAL2.1.4]\ogr2ogr -f "ESRI Shapefile" "%~nF_geom.shp" "%~nxF" -dialect sqlite -sql "select geometry from '%~nF'"
geodata au cerema et petits billets en géomatique
Hors ligne
#12 Wed 06 September 2017 14:34
- Rom01
- Participant occasionnel
- Date d'inscription: 25 Jul 2013
- Messages: 31
Re: QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches
Merci beaucoup MathieuR, c'est parfait !
Hors ligne
Pages: 1
- Sujet précédent - QGIS: Créer l'enveloppe des polygones contenus dans plusieurs couches - Sujet suivant