1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
private Boolean getElemNear(out IFeature fRet,IPoint Px)
{
double distMin;
double dist;
Boolean bRet=false;
ILayer layer = getLayerByName("Canalisation catégorie actuelle");
ISegmentCollection pSegColl = new PolygonClass();
pSegColl.SetCircle(Px, 100);
ISpatialFilter sFilter = new SpatialFilterClass();
Polygon poly = pSegColl as Polygon;
sFilter.Geometry = poly as IGeometry;
sFilter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
IFeatureLayer fLayer=layer as IFeatureLayer;
IFeatureCursor fCursor = fLayer.Search(sFilter, true);
IFeature feature = fCursor.NextFeature();
distMin = 3000000;
fRet = null;
IProximityOperator proximityOperator = Px as IProximityOperator;
while (feature != null)
{
// Recherche distance mini
dist = proximityOperator.ReturnDistance(feature.Shape);
if (dist<distMin)
{
distMin = dist;
fRet=feature;
bRet = true;
}
feature = fCursor.NextFeature();
}
return bRet;
} |