1

カスタム ArcGIS Desktop ツール プロジェクトに取り組んでおり、自動リニア リファレンス機能を実装したいと考えています。簡単に言うと、ルートに沿って問題のあるセグメントを表示し、色分け (緑、黄、赤など) を使用して重大度を示したいと思います。これは非常に一般的なシナリオであり、このタスクを達成するための「正しい方法」は、特定のルート セグメントに異なるコードを割り当てることができる線形イベント テーブルを作成することであることがわかりました。私の同僚の中には手動で行う方法を知っている人もいますが、これをプログラムで複製する方法を見つけることができないようです。

現在のツールは C# で記述されており、問題のある領域を特定するために必要なすべての計算を既に実行しています。主な問題は、ArcObjects についてよく知らないため、どこから始めればよいかわからないことです。コード サンプルや提案は大歓迎です (C# が推奨されますが、C++、VB などはいずれにせよ確実に役に立ちます)。

編集 :

MakeRouteEventLayer ツールを使用しようとしていますが、さまざまな前提条件が満たされていないようです。ルートは SDE サーバーでホストされます。これまでのところ、私はこの方法で接続を確立しています:

ESRI.ArcGIS.esriSystem.IPropertySet pConnectionProperties = new ESRI.ArcGIS.esriSystem.PropertySet();
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory pWorkspaceFactory;
ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace;
ESRI.ArcGIS.Location.ILocatorManager pLocatorManager;
ESRI.ArcGIS.Location.IDatabaseLocatorWorkspace pDatabaseLocatorWorkspace;

pConnectionProperties.SetProperty("server", "xxxx");
pConnectionProperties.SetProperty("instance", "yyyy");
pConnectionProperties.SetProperty("database", "zzzz");
pConnectionProperties.SetProperty("AUTHENTICATION_MODE", "OSA");
pConnectionProperties.SetProperty("version", "dbo.DEFAULT");

pWorkspaceFactory = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactory();
pWorkspace = pWorkspaceFactory.Open(pConnectionProperties, 0);
pLocatorManager = new ESRI.ArcGIS.Location.LocatorManager();
pDatabaseLocatorWorkspace = (ESRI.ArcGIS.Location.IDatabaseLocatorWorkspace)pLocatorManager.GetLocatorWorkspace(pWorkspace);

今、私は MakeRouteEventLayer のコンストラクターのすべてを準備しようとして立ち往生しています。Feature LayerをInput Route Featuresとして渡す方法が見つからないようです。また、イベント テーブルの適切な作成方法もわかりません。文書化/コメントされておらず、データ型が言及されていないため、理解できないこれを除いて、私が達成しようとしていることに関連する例を見つけることができないようです。

4

1 に答える 1

1

あなたが何をしたいのか完全にはわかりません。リニア リファレンス値を取得したり、すでにリニア リファレンスが定義されているフィーチャクラスでそれらを直接操作したりする場合、それは非常に簡単です。

IFeatureClass fc = ....; IFeature 機能 = fc.GetFeature(...); IMSegmentation3 セグメント= (IMSegmentation3) 機能; ...何とか...

リニア リファレンスを使用してフィーチャ クラスを作成する必要がある場合は、ArcToolbox の「ジオプロセシング」ツールから開始する必要があります。すぐに使えるツールで必要なことのほとんどを実行できる場合は、コーディングを最小限に抑えることができます。

可能であれば、ArcMap で何をする必要があるかを理解しようとすることを強くお勧めします...その後、ArcObjects を取り消します。

  1. 線形参照 API
  2. リニア リファレンス ツールボックス
  3. リニア リファレンスについて
于 2009-08-11T15:35:49.577 に答える