#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
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@ esrifrance.fr
Web site: http://www.esrifrance.fr
Blog: http://www.arcorama.fr
Hors ligne