在ArcGIS中进行线性参考的编程方法

时间:2009-08-11 15:21:28

标签: c# arcgis arcobjects

我正在开发一个自定义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的constructor做准备。我似乎无法找到我应该如何将要素图层作为输入路线要素传递。另外,我不明白如何正确创建事件表。我似乎找不到任何与我想要完成的事情相关的例子,除了this one我不明白,因为它没有记录/评论,并且没有提到数据类型。

1 个答案:

答案 0 :(得分:1)

我不完全确定你想做什么。如果要获取线性参考值或直接在已定义线性参考的要素类中操作它们,那就非常简单。

IFeatureClass fc = ....; IFeature特征= fc.GetFeature(...); IMSegmentation3 seg =(IMSegmentation3)功能; ......等等......

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

我会强烈建议尝试使用ArcMap来计算你需要做什么...然后退出ArcObjects。

  1. Linear Referencing API
  2. Linear Referencing Toolbox
  3. Understanding Linear Referencing