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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 07 January 2009 14:33

bebert_lama
Participant assidu
Date d'inscription: 9 Nov 2006
Messages: 253

Arcgis 9.2 + VBA = Selection par Longueur max ou Aire max

Bonjour à tous,

j'aimerais sélectionner des objets par critère de longueur ou d'aire par un script VBA ?
Comment dois je faire pour sélectionner l'objet de "longueur = max" ou "aire = max" ?
Dois je faire une commande de tri avant ?

Merci de votre aide.

Bebert

Hors ligne

 

#2 Thu 08 January 2009 15:45

Fabien.Krzewinski
Participant occasionnel
Date d'inscription: 19 Aug 2008
Messages: 18

Re: Arcgis 9.2 + VBA = Selection par Longueur max ou Aire max

Hors ligne

 

#3 Thu 08 January 2009 17:56

bebert_lama
Participant assidu
Date d'inscription: 9 Nov 2006
Messages: 253

Re: Arcgis 9.2 + VBA = Selection par Longueur max ou Aire max

Salut,

ok merci pour le lien, là présentement cela ne marche pas....mais je ne suis pas ue référence en VBA....
Une petite idée de mon erreur ? Certainement les paramètres de la fonction ?

Et donc la seule solution c'est le Tri ?

Cela ne me convient pas totalement, j'aurais préféré dire à VBA :
sélectionne l'objet de valeur max plutôt que de dire sélectionne l'objet situé en premier (ou dernier) du Tri.....

Merci à toi Fabien
A+
bebert

Hors ligne

 

#4 Fri 09 January 2009 07:23

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3199
Site web

Re: Arcgis 9.2 + VBA = Selection par Longueur max ou Aire max

Bonjour,

Je n'y connais presque rien en matière de modèle objet Arcgis, par contre en VB VBA je me défends pas trop mal. Dans le code exposé dans le lien précédent il y a qq chose qui me gène:

Code:

Dim pQueryFilter As IQueryFilter
Set pQueryFilter = New QueryFilter

La déclaration du type ne correspond pas à son instanciation Il y a un "I" en trop ou en moins.

Ensuite utiliser un tri sur des enregistrements d'une table pour trouver la valeur min ou max, c'est étrange.
Soit une table(matable)d'une geodatabase (donc une base access) contenant un champ "longueur"
Il suffit d'effectuer une requête SQL de type (pour le maximum):

Code:

SELECT Matable.valeur1, Max[Matable.longueur] as longueurmax 
FROM Matable 
GROUP BY Matable.valeur1;

Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#5 Thu 15 January 2009 15:28

Fabien.Krzewinski
Participant occasionnel
Date d'inscription: 19 Aug 2008
Messages: 18

Re: Arcgis 9.2 + VBA = Selection par Longueur max ou Aire max

Christophe V. a écrit:

Bonjour,

Je n'y connais presque rien en matière de modèle objet Arcgis, par contre en VB VBA je me défends pas trop mal. Dans le code exposé dans le lien précédent il y a qq chose qui me gène:

Code:

Dim pQueryFilter As IQueryFilter
Set pQueryFilter = New QueryFilter

La déclaration du type ne correspond pas à son instanciation Il y a un "I" en trop ou en moins.


Il n'y a rien de gênant: la "classe" QueryFilter est "un" IQueryFilter cf. la documentation esri.

Tout le concept des arcObjects d'esri se base là dessus (interface et implémentation de l'interface).

Christophe V. a écrit:

Ensuite utiliser un tri sur des enregistrements d'une table pour trouver la valeur min ou max, c'est étrange.
Soit une table(matable)d'une geodatabase (donc une base access) contenant un champ "longueur"
Il suffit d'effectuer une requête SQL de type (pour le maximum):

Code:

SELECT Matable.valeur1, Max[Matable.longueur] as longueurmax 
FROM Matable 
GROUP BY Matable.valeur1;


Effectivement, si on utilise une geodatabase , ce que tu écris est la solution la plus propre.
Par contre, à partir d'un shapefile; IQueryFilter ne permet pas de faire des groupements lors d'une requête SQL donc pas de max, min etc de disponible. Une astuce simple proposée afin de remédier à ce problème : le tri.

Hors ligne

 

#6 Fri 16 January 2009 07:15

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3199
Site web

Re: Arcgis 9.2 + VBA = Selection par Longueur max ou Aire max

Bonjour,

Merci pour l'explication, (j'avais mis en préambule mon ignorance).

Si j'ai tout bien compris IQueryFilter est une interface, et QueryFilter est un des objets qui la réalise ?

Pour la deuxième partie, je n'avais pas envisagé l'aspect shp. Effectivement le tri est une astuce.

A+


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#7 Fri 16 January 2009 10:59

Fabien.Krzewinski
Participant occasionnel
Date d'inscription: 19 Aug 2008
Messages: 18

Re: Arcgis 9.2 + VBA = Selection par Longueur max ou Aire max

Christophe V. a écrit:

Merci pour l'explication, (j'avais mis en préambule mon ignorance).

Si j'ai tout bien compris IQueryFilter est une interface, et QueryFilter est un des objets qui la réalise ?


Tu as tout compris !

Fabien

Hors ligne

 

Pied de page des forums

Powered by FluxBB