如何通过ArcObjects中的ReverseGeoCoding找到多个交点结果?

时间:2010-06-29 21:06:10

标签: c# esri arcobjects reverse-geocoding

我正在进行的项目要求我在一个点附近找到交叉点(搜索街道中心线图层)。对于90%以上的搜索,我似乎得到了合适的结果,但是在某些情况下,就ArcObjects而言,我得到了技术上交叉的交叉点,但并不是我所需要的。

例如,如果我搜索最接近S. Main St某一点的交点,我应该得到S. Main St& S的交点。第一圣但是,这个交叉点恰好是N. Main St,S。Main St,W。First St和E. First St.的交汇点。因此,当我在点搜索时执行反向地理编码交叉点,我得到了N. Main St&的单一结果。 S. Main St。

有没有办法让所有交叉点都在同一点而不仅仅是一个交叉点?如果没有,有没有办法过滤可用的结果?

我目前的代码是N的最终值。主要& 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 :(得分:0)

假设您的定位器仅引用一个折线要素类(即不是复合定位器),我会尝试使用基于500米搜索范围的空间过滤器对折线要素类(IFeatureClass.Search)进行空间搜索来替换反向地理编码器。