我正在开发一个自定义 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传递。另外,我不明白如何正确创建事件表。除了这个我不理解的例子之外,我似乎找不到任何与我试图完成的事情相关的例子,因为它没有记录/评论并且没有提及数据类型。