Pages: 1
- Sujet précédent - Arcgis 9.2 + VBA = Selection par Longueur max ou Aire max - Sujet suivant
#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: 3197
- 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
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 QueryFilterLa 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).
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: 3197
- 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
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
Pages: 1
- Sujet précédent - Arcgis 9.2 + VBA = Selection par Longueur max ou Aire max - Sujet suivant