Как найти несколько результатов пересечения с помощью ReverseGeoCoding в ArcObjects? - PullRequest
0 голосов
/ 30 июня 2010

Проект, над которым я работаю, требует, чтобы я нашел перекрестки рядом с точкой (поиск слоя центральной линии улицы). В 90 +% моих поисков я, кажется, получаю соответствующие результаты, однако в некоторых случаях я получаю пересечения, которые являются технически пересечениями, что касается ArcObjects, но не так, как мне нужно.

В качестве примера, если я ищу перекресток, ближайший к определенной точке на S. Main St, я должен получить пересечение S. Main St & First St. Однако, это пересечение оказывается пересечением N. Main St, S. Main St, W. First St и E. First St. В результате этого, когда я делаю обратный геокод на точке, ищущей пересечения, я получаю единственный результат N. Main St & S. Главная ул.

Есть ли способ получить все пересечения в той же точке, а не только одно пересечение? Если нет, есть ли способ отфильтровать доступные результаты?

Мой текущий код ниже - это то, что заканчивается значением N. Main & S. Main в переменной intersectionName.

ILocatorManager2 locMgr = new LocatorManagerClass();
ILocatorWorkspace locWorkspace = locMgr.GetLocatorWorkspace(this.wksp);

ILocator locator = locWorkspace.GetLocator("Streets_AddressLocator");

if (locator == null)
      return string.Empty;

IReverseGeocoding reverseGeo = locator as IReverseGeocoding;
IReverseGeocodingProperties reverseProps = reverseGeo as IReverseGeocodingProperties;
reverseProps.SearchDistance = 500;
reverseProps.SearchDistanceUnits = esriUnits.esriMeters;

IIntersectionGeocoding intersect = locator as IIntersectionGeocoding;

try
{
       IPropertySet propSet = reverseGeo.ReverseGeocode(pnt, true);
       intersectionName = propSet.GetProperty("Street").ToString();
}...

1 Ответ

0 голосов
/ 30 июня 2010

Предполагая, что ваш локатор ссылается только на один класс пространственных объектов полилинии (т.е. это не составной локатор), я бы попытался заменить обратный геокодер пространственным поиском по классу пространственных объектов полилинии (IFeatureClass.Search) пространственным фильтром на основе 500-метрового конверта поиска.

...