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 Mon 18 July 2016 14:04

Logispace
Juste Inscrit !
Date d'inscription: 18 Jul 2016
Messages: 4

QGIS & Python: multi selections par expression

Bonjour à tous,

je suis novice sous QGIS en particulier avec Python pour QGIS. Je lis et apprends sur les différents forum mais il n'est pas forcement facile de trouver le sujet qui correspond fidèlement au besoin précis recherché. Je poursuis mes recherches mais j'aimerais avoir vos conseils.

Je souhaite réaliser un programme Python QGIS pour rechercher et sélectionner des enregistrements répondant à certaines conditions.

J’aimerais, pour chaque valeur d'un champ attributaire, sélectionner la date et heure (d'un autre champ attributaire Date&heure) la plus proche d'une heure H définie par l'utilisateur et exporter ces informations dans un nouveau shapefile.

Quels conseils me donneriez vous pour réaliser cela? ou lien page web / forum.

Merci à vous, Bonne journée.

Dernière modification par Logispace (Mon 18 July 2016 14:34)

Hors ligne

 

#2 Thu 28 July 2016 11:53

Logispace
Juste Inscrit !
Date d'inscription: 18 Jul 2016
Messages: 4

Re: QGIS & Python: multi selections par expression

Bonjour,
Je progresse doucement avec PyQGIS.Cependant, je bloque pour realiser une selection non standart sur une couche.

Quelques informations complémentaires :
Je compare quelques données de deux couches différentes. J'ai relevé les valeurs qui m’intéressent de la couche1 et les valeurs de la couche2.
Pour chaque valeur d’intérêt (V1) de la couche1, je souhaite procéder pour chaque valeur d'un champs de ma couche2 (C2) à une comparaison itérative pour obtenir le plus petit écart, entre un autre champ de la couche 2 et V1 (donc par V1 et par C2).


Mon problème actuellement est que je n'arrive pas a faire une sélection par expression correcte sur ma couche2. J'aimerais sélectionner les lignes pour lesquelles l'attribut ATT1 est égale à une des valeurs que j'ai pré identifié. J’itère ensuite sur toutes les valeurs identifiées.

(une fois cela obtenu, je souhaite comparer, un autre champ de ces lignes sélectionnées de la couche 2, à des valeurs (DATE) pre identifiées de la couche1 mais c'est pour après...)

Si quelqu'un a suivi a peu prés mon cheminement, je veux bien votre aide...

Voici mon code actuel (valeuruniqueV1 (dateheure) et C2(identifiant) sont des tableaux de valeurs) :

for value1 in valeuruniqueV1:
    ecart_minP= datetime.datetime.strptime('01/01/2100 01:00','%d/%m/%Y %H:%M') - datetime.datetime.strptime('01/01/1900 01:00','%d/%m/%Y %H:%M')
    ecart_minN= datetime.datetime.strptime('01/01/2100 01:00','%d/%m/%Y %H:%M') - datetime.datetime.strptime('01/01/1900 01:00','%d/%m/%Y %H:%M')
    journee=datetime.datetime.strptime('01/01/1900 00:00','%d/%m/%Y %H:%M') - datetime.datetime.strptime('02/01/1900 00:00','%d/%m/%Y %H:%M')
    DHp=0
    DHn=0
   
    for value2 in valeuruniqueC2 :
        ecart = 0
        iter1 = macouche.getFeatures(QgsFeatureRequest().setFilterExpression (u' "%s"= '+str(value2) %feature['ATT1']))
        macouche.setSelectedFeatures( [ f.id() for f in iter1 ] )
        selection = macouche.selectedFeatures()
        for feature in selection:
             print('check1')
             print feature['DATE3']
             attri1=feature.attributes()
             datetime.datetime.strptime(feature['DATE3'],'%d/%m/%Y %H:%M')
             datetime.datetime.strptime(value1,'%d/%m/%Y %H:%M')
             ecart= datetime.datetime.strptime(value1,'%d/%m/%Y %H:%M') - datetime.datetime.strptime(feature['DATE3'],'%d/%m/%Y %H:%M')
             zero= datetime.datetime.strptime('01/01/1900 01:00','%d/%m/%Y %H:%M') - datetime.datetime.strptime('01/01/1900 01:00','%d/%m/%Y %H:%M')
             if ecart < zero:
                ecart= datetime.datetime.strptime(feature['DATE3'],'%d/%m/%Y %H:%M') - datetime.datetime.strptime(value1,'%d/%m/%Y %H:%M')
                if ecart_minN > ecart :
                    #ecart=ecart
                    ecart_minN=ecart
                    DHn=feature['DATE3']
             else:
                if ecart_minP>ecart :
                    ecart_minP=ecart
                    DHp=feature['DATE3']

Dernière modification par Logispace (Thu 28 July 2016 11:54)

Hors ligne

 

#3 Thu 28 July 2016 12:12

Logispace
Juste Inscrit !
Date d'inscription: 18 Jul 2016
Messages: 4

Re: QGIS & Python: multi selections par expression

Pour être plus synthétique, pouvez-vous me dire comment réaliser une sélection des lignes de la couche pour lesquelles la valeur de l'attribut "A" de la couche est égale à la valeur de la boucle for au dessus ?

Hors ligne

 

Pied de page des forums

Powered by FluxBB