#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

