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

Printemps des cartes 2024

#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

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

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

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

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

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

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

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

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

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

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

MathieuR
Membre
Lieu: aix-en-provence
Date d'inscription: 16 Feb 2009
Messages: 1690
Site web

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

 

Pied de page des forums

Powered by FluxBB