0

私が取り組んでいるプロジェクトでは、ポイントの近くの交差点を見つける必要があります(通りの中心線レイヤーを検索します)。検索の90%以上で適切な結果が得られているようですが、場合によっては、ArcObjectsに関する限り、技術的には交差点である交差点が得られますが、必要なものほどではありません。

例として、S。Main Stの特定の地点に最も近い交差点を検索すると、S。MainStとFirstStの交差点を取得する必要があります。ただし、その交差点はたまたまN.MainStの交差点です。 S. Main St、W。First St、E。First St.この結果、交差点を検索するポイントで逆ジオコードを実行すると、N。MainStとS.MainStの単一の結果が得られます。

1つの交差点だけでなく、同じポイントですべての交差点を取得する方法はありますか?そうでない場合、利用可能な結果を​​フィルタリングする方法はありますか?

以下の私の現在のコードは、intersectionName変数のN.MainとS.Mainの値で終わるものです。

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();
}...
4

1 に答える 1

0

ロケーターが1つのポリラインフィーチャクラスのみを参照していると仮定すると(つまり、複合ロケーターではない)、500メートルの検索エンベロープに基づく空間フィルターを使用したポリラインフィーチャクラス(IFeatureClass.Search)に対する空間検索でリバースジオコーダーを置き換えてみます。

于 2010-06-30T15:22:48.140 に答える