Annonce
Pour sa 21ème année, l’association GeoRezo a toujours besoin de vous !
10€ = 1 mois de frais bancaires ; 15€ = 12 mois de nom de domaine ; 30€ = 1 semaine de location des serveurs …
Retrouver nos membres bienfaiteurs
#1 Mon 20 January 2020 12:02
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
QGIS: Shape et python
Bonjour à tous,
Sur Python, je voudrais créer un nouveau Shape à partir d'un autre, en appliquant un certains nombre de filtres. Pour cela, j'utilise la library pyshp.
Voici mon code de départ :
Code:
import shapefile sf = shapefile.Reader("Parcelles/parcelle.shp") w = shapefile.Writer("result/test.shp", shapeType = 5, encoding="utf8") w.fields = sf.fields[1:] for shaperec in sf.iterShapeRecords(): w.record(*shaperec.record) w.shape(shaperec.shape) w.close()
De cette manière, je crée simplement une copie du shape d'origine. Après avoir testé plusieurs combinaison, je ne sais pas où placer mes conditions de filtre (par exemple, champ1 = valeur ET champ2 = valeur, etc).
Merci à vous.
Hors ligne
#2 Mon 20 January 2020 12:32
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS: Shape et python
Pour cela, j'utilise la library pyshp.
Il y a une raison à utiliser cette librairie plutôt que l'environnement pyqgis ?
D'après la documentation ici : https://pypi.org/project/pyshp
je pense que tu peux faire un truc du genre :
Code:
import shapefile sf = shapefile.Reader("Parcelles/parcelle.shp") w = shapefile.Writer("result/test.shp", shapeType = 5, encoding="utf8") w.fields = sf.fields[1:] for shaperec in sf.iterShapeRecords(): if shaperec.record['mon_champs'] == 'toto' and shaparec.record['mon_champs2'] == 'toto2': w.record(*shaperec.record) w.shape(shaperec.shape) w.close()
Cdt,
Hors ligne
#3 Mon 20 January 2020 12:48
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: QGIS: Shape et python
Un grand merci à toi, cela résout complètement mon problème
En fait, j'ai déjà essayé d'utiliser pyqgis sur mon IDE Sublime Text. Malheureusement, je n'ai jamais réussi à faire "l'installation" nécessaire pour faire fonctionner mes programmes. Après avoir déterminé à Sublime text où était situé le Python de qgis (C:\Program Files (x86)\QGIS 3.8\bin), mes programmes m'affichent tous la même erreur :
ImportError: No module named site
J'explique cela dans ce sujet : https://georezo.net/forum/viewtopic.php?id=118856
J'ai utilisé cette librairie car elle me permettait de faire cet exercice de manipulation de shape
Hors ligne
#4 Mon 20 January 2020 12:53
- preliator
- Participant assidu
- Date d'inscription: 17 Nov 2018
- Messages: 433
Re: QGIS: Shape et python
Oups, petite dernière chose. Est-il possible de déterminer le SCR directement dans mon programme ? La couche shape générée ne dispose pas de SCR
Hors ligne
#5 Mon 20 January 2020 13:57
- JD
- Moderateur
- Date d'inscription: 8 Aug 2013
- Messages: 726
Re: QGIS: Shape et python
Il faut créer un fichier .prj propre pour ton nouveau shapefile ou le copier directement s'il existe.
Regarde ici :
http://geospatialpython.com/2011/02/cre … e-for.html
Hors ligne