FromPoint не пересекает свою собственную IPolyline5 - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть полилиния и точечный класс объектов.Я создаю точечный объект на слое Point для FromPoint и ToPoint IPolyline5, как показано ниже:

IFeature pointFeature1 = pointFeatureClass.CreateFeature ();
pointFeature1.Shape = polyline.FromPoint;
IFeature pointFeature2 = pointFeatureClass.CreateFeature ();
pointFeature2.Shape = polyline.ToPoint;

Позже я затем запускаю геометрию from и point через метод, подобныйниже, чтобы найти все пересекающиеся полилинии из класса полилиний.

ISpatialFilter filter = new SpatialFilter ();
filter.Geometry = pointGeometry;
filter.SpatialRel = esriSpatialRelEnum.esriSpatialRelIntersects;
IFeatureCursor cursor = lineFeatureClass.FeatureClass.Search (filter, false);

По крайней мере, фильтр пересечения должен найти полилинию, с которой я получил 2 точки.Странно то, что он работает для FromPoint, но не для ToPoint.

Оба класса пространственных объектов используют одну и ту же географическую систему координат и систему проецируемых координат.

Я надеюсь, что что-то делаюглупо, но просто не могу понять, что.

Ответы [ 3 ]

0 голосов
/ 08 февраля 2012

При создании новых объектов из существующих, вы не должны использовать прямую ссылку, а ShapeCopy. Попробуйте изменить свой первый блок на:

pointFeature1.Shape = polyline.FromPoint.ShapeCopy;
pointFeature2.Shape = polyline.ToPoint.ShapeCopy;
0 голосов
/ 19 апреля 2017

вместо

pointFeature1.Shape = polyline.FromPoint;

используйте

PointFeature1.Shape = ((polyline.FromPoint as IPoint) as IFeature).ShapeCopy;

и для

pointFeature2.Shape = polyline.ToPoint;

используйте

PointFeature1.Shape = ((polyline.ToPoint as IPoint) as IFeature).ShapeCopy;
0 голосов
/ 08 февраля 2012

Я получил его для согласованной работы с esriSpatialRelIntersects, просто буферизировав точку на 0,001.

...