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 seg = (IMSegmentation3) 特征;……废话……

如果您需要创建具有线性参考的要素类,您应该从 ArcToolbox 中的“地理处理”工具开始。如果开箱即用的工具可以完成您需要的大部分工作,这将最大限度地减少您的编码。

如果可能的话,我强烈建议您尝试弄清楚您需要使用 ArcMap 做什么......然后退出 ArcObjects。

  1. 线性参考 API
  2. 线性参考工具箱
  3. 了解线性参考
于 2009-08-11T15:35:49.577 回答