#1 Wed 18 August 2004 11:43
- Nicolasvalls
- Invité
Outil de selection par polyligne
bonjour,
N'ayant pas obtenu de reponse resolvant mon probleme, je reitere ma question.
En programmation, je souhaiterai selectionner des points a l'aide d'une polyligne. La polyligne est bien tracee mais je n'arrive pas a selectionner les points. Le probleme vient du fait que la polyligne ne passe pas exactement (ce qui est impossible) sur les points.
Je pense qu'il faudrait construire un buffer (zone tampon) sur la polyligne ce qui permettrai de selectionner les points contenus dans ma polyligne. Je ne sais pas qu'elle methode utiliser ni quel type d'objet. Voici mon code pour la creation de la polyligne :
Code:
Sub selection_polylignes() Dim mondoc As IMxDocument, macarte As IMap, monenv As ISelectionEnvironment Dim monelastik As IRubberBand, maligne As IPolyline Set mondoc = ThisDocument Set monenv = New SelectionEnvironment monenv.AreaSelectionMethod = esriSpatialRelContains Set macarte = mondoc.Maps.Item(0) Set monelastik = New RubberLine Set maligne = monelastik.TrackNew(mondoc.ActivatedView.ScreenDisplay, Nothing) If maligne Is Nothing Then Exit Sub macarte.SelectByShape maligne, monenv, False mondoc.ActiveView.Refresh End Sub
PS: Je n'ai pas a ma disposition les CD de documentation Arcview
Merci de vos reponses.
www.nicolasvalls.fr.fm
#2 Wed 18 August 2004 14:21
- Olivier GUYOT-DE-LA-POMMERAYE
- Invité
Re: Outil de selection par polyligne
Bonjour,
Vous allez effectivement etre oblige de passer par un buffer; voila comment je procederais:
1 - vous allez creer un buffer sur la base de votre Polyline d'entree
2 - vous allez faire une selection spatiale sur votre couche de point a partir du Polygone Buffer
3 - et ajouter les entites a la selection de votre couche de points
En pratique voila ce que cela pourrait donner:
ATTENTION il s'agit de "pistes" pas d'un bout de code pret a l'emploi, il n'a pas ete teste, et encore moins debugge.
Code:
'Instanciation de l'Objet permettant de generer un polygone a partir d'un Arc
Dim oITopologicalOperator As ITopologicalOperator
Set oITopologicalOperator = VOTRE_OBJET_POLYLINE
'Instanciation de l'Objet qui va recevoir le Buffer
Dim oGeom As IGeometry
'Bufferisation a 1 metre
Set oGeom = oITopologicalOperator.Buffer(1)
'Preparation du Filtre Spatial avec le Polygone Buffer
Dim oSpatialFilter As ISpatialFilter
Set oSpatialFilter = New SpatialFilter
Set oSpatialFilter.Geometry = oGeom
oSpatialFilter.GeometryField = "SHAPE"
oSpatialFilter.SpatialRel = esriSpatialRelIntersects
'La on fait l'intersection avec vos POINTS
Dim oIntersectFeatureCursor As IFeatureCursor
Set oIntersectFeatureCursor = VOTRE_FEATURECLASS_DE_POINTS.Search(oSpatialFilter, False)
Dim oIntersectFeature As IFeature
Dim oIntersectIFeatureSelection As IFeatureSelection
Set oIntersectIFeatureSelection = VOTRE_ILAYER_DE_POINT
'Parcours des POINTS Impactes
Set oIntersectFeature = oIntersectFeatureCursor.NextFeature
Do While Not oIntersectFeature Is Nothing
'Ajout a la FeatureSelection
oIntersectIFeatureSelection.Add oIntersectFeature
Set oIntersectFeature = oIntersectFeatureCursor.NextFeature
Loop
'Instanciation des Objets ArcMap
Dim oMxDoc As IMxDocument
Set oMxDoc = Application.Document
Dim oMap As IMap
Set oMap = oMxDoc.FocusMap
Dim oActiveView As IActiveView
Set oActiveView = oMap
'Rafraichissement de la selection
oActiveView.PartialRefresh esriViewGeoSelection, Nothing, NothingPour ce qui est de l'aide ArcObject, si celle ci n'est pas installe sur votre machine, une version "UpToDate" est presente a l'adresse suivante : http://arcobjectsonline.esri.com/
Bonne continuation,
Cordialement,
Olivier Guyot de La Pommeraye
#3 Wed 18 August 2004 16:21
- Honza
- Invité
Re: Outil de selection par polyligne
De: Honza
juste un conseil, visitez le site et le forum US d'ESRI plus a meme de vous aider sur les questions de programmation (but in english of course)
http://support.esri.com/
http://arcobjectsonline.esri.com/
par ex, vous devriez y arriver en adaptant le code suivant
http://forums.esri.com/Thread.asp?c=93& … 538#237177


