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

GEODATA DAYS 2024

#1 Mon 21 January 2008 16:04

rayer_mag
Participant occasionnel
Date d'inscription: 20 Sep 2007
Messages: 13

Zone tampon et VBA

Bonjour ,

Toujours pour le même projet (mes haies) je dois récupérer dans une couche les entités localisées presque au même endroit qu'une entité que j'ai sélectionnée.
Je pensais les sélectionner par une zone tampon, mais je ne trouve pas le script VBA pour cette requête.
Quelqu'un pourrait-il m'aiguiller ?
Merci

Hors ligne

 

#2 Mon 21 January 2008 19:57

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

Re: Zone tampon et VBA

Bonjour Mag,

Alors pour une sélection par buffer, il s'agit d'une requête spatiale. Nous avons trouvé une jolie fonction sur EDN, gardons-là.

Nous avons quatre arguments pour cette fonction :
- WhereClause ? Peut-être, mais enfin non, il n'y a pas de sql spatial avec ArcGIS.
- pFeatureClassIN ? Pas vraiment.
- spatialRelation ? On peut chercher pour voir les possibilités, mais rien ne concernant les zones tampons.

Ne reste plus que searchGeometry. Et comme Magalie tu as eu ton TOEIC, tu sais que la zone tampon se traduit par buffer. Sur EDN, pas moyen de trouver quelque chose, mais l'index de  l'aide du développer (même données que sur edn, mais sur le disque dur, au format aide Windows) donne une méthode Buffer dans une interface ITopologicalOperator

Il suffit donc de mettre tout ça en place :

Code:

Dim pTransZoneTampon as ITopologicalOperator
Dim pTampon_geom as IGeometry
Set pTransZoneTampon  = pElement_geom
Set pTampon_geom = pTransZoneTampon.Buffer(distance)

Et tu as alors un élément géométrique correspondant à ta zone tampon. Utilise-le dans ta requête spatiale.

Pour récupérer l'élément sélectionné, je crois que c'est bon maintenant.


Pour afficher (ou pas) les couches, l'objet carte (IMap) contient les différentes couches. Et la propriété de l'interface de la couche (ILayer) nommé Visible doit être ce qu'il faut :

Code:

ThisDocument.m_pCarte.Layer(0).Visible = True
ThisDocument.m_pCarte.Layer(4).Visible = False

Dans le cas où le résultat de la sélection est vide, il suffit de faire un test de nullitude :

Code:

If requête_résultat is Nothing Then

Et voilà !

Décidemment B.A. ne changera jamais, un petit cours avant, ça n'aurait pas fait de mal.


Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !

Hors ligne

 

#3 Tue 22 January 2008 14:01

Gaëtan LAVENU
Participant occasionnel
Date d'inscription: 5 Sep 2005
Messages: 15

Re: Zone tampon et VBA

Bonjour,

Rapidement... il faudra procéder en 2 temps:
1) création de la géométrie du buffer en utilisant l'interface ITopologicalOperator
2) sélection des entités en utilisant l'objet ISpatialFilter

De nombreux exemples utilisant ces deux classes ArcObjects se trouvent dans l'aide en ligne.

Gaëtan LAVENU
ESRI France

E-mail: glavenu@texte-a-enlever.esrifrance.fr
Web site: http://www.esrifrance.fr
Blog: http://www.arcorama.fr

Hors ligne

 

Pied de page des forums

Powered by FluxBB