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

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 …

Faire un don 

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

preliator a écrit:

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 smile

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 smile

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

 

Pied de page des forums

Powered by FluxBB