Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

I am creating a tool which the user will select point or line features from the map and it will display their names in a list then after clicking on any of these features from the list, it will show the intersected polygons in another list.

The problem that I don't know how to do a SpatialFilter to do this intersecting functionality, which it will be done like the one in the Select By Location tool.

Any help will be appreciated, thanks in advance.

share|improve this question

1 Answer 1

up vote 5 down vote accepted

Please have a look IFeatureClass.Search Method

To get feature by mouse click:

public List<IFeature> Search(IPoint mousePoint, double buffer, IFeatureClass featureClass)
{
    var envelope = mousePoint.Envelope;
    envelope.Expand(buffer, buffer, false);
    var geodataset = (IGeoDataset)featureClass;
    string shapeFieldName = featureClass.ShapeFieldName;
    Geodatabase.ISpatialFilter spatialFilter = new Geodatabase.SpatialFilter();
    spatialFilter.Geometry = envelope;
    spatialFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelCrosses;
    spatialFilter.set_OutputSpatialReference(shapeFieldName, geodataset.SpatialReference);

    Geodatabase.IFeatureCursor featureCursor = ArcFeatureClass.Search(spatialFilter, false);

    var features = new List<IFeature>();
    Geodatabase.IFeature feature;
    while ((feature = featureCursor.NextFeature()) != null)
        features.Add(new Feature(feature));
    return features;
}
share|improve this answer
    
Thanks, I will check this now but I am wondering about what spatialFilter.set_OutputSpatialReference does ? –  Seem Feb 6 '13 at 10:05
    
It sets spatial reference for Query –  Emi Feb 6 '13 at 10:10
    
I am working on it and I have some issues one of them that I am not using envelop because I have the ObjectId of the (point/line) feature and I have to get the intesection through this Id –  Seem Feb 6 '13 at 13:14
    
Is it like, you have a feature and you need other features that are at the same location? –  Emi Feb 7 '13 at 3:30
    
Thanks very much, your answer helped me a lot to find out the answer. –  Seem Feb 7 '13 at 9:06

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.