ArcGIS – How to Determine If a Point Lies on a Polyline

arcgis-10.0arcgis-enginelinepointpoint-in-polygon

ArcEngine 10 .Net 4 c#

I'm currently allowing user to select a point on a polyline and creating a point on the line. I am using snapping tool.

I just want to make sure that when the user clicks on the screen, the point feedback that I get lies on top of the polyline.

I was wondering if there is a method that I can check if the IPOINT is ON any of the polylines in the polyline layer.

Best Answer

There's probably an easier way to do it but this is what I do.

//layer is what layer you are checking
ESRI.ArcGIS.Carto.IIdentify identify1 = layer as IIdentify; 

//idGeo is IGeometry you want to query -in your case a point, but I'm using a square here    
IArray array = identify1.Identify(idGeo);  

if (array != null)
{
    object obj = array.get_Element(0);
    IFeatureIdentifyObj fobj = obj as IFeatureIdentifyObj;
    IRowIdentifyObject irow = fobj as IRowIdentifyObject;
    IFeature feature = irow.Row as IFeature;
    IGeometry geometry1 = feature.Shape;
    IPointCollection pc = geometry1 as IPointCollection;
    if(pc != null && pc.PointCount > 0) //then its a polyline
}