在ArcGIS中使用“MakeRouteEventLayer”

时间:2009-08-12 20:25:19

标签: c# arcgis arcobjects

我正在尝试使用MakeRouteEventLayer工具,但似乎无法满足不同的前提条件。路由托管在SDE数据库中。到目前为止,我通过建立与数据库服务器的连接来设置工作区,但我不知道如何获取MakeRouteEventLayer的constructor所需的参数。我似乎无法找到我应该如何将要素图层作为输入路径要素传递。另外,我不明白如何正确创建事件表。我似乎找不到任何与我想要完成的事情相关的例子,除了this one我不明白,因为它没有记录/评论很多,并且没有提到数据类型。

为了您的信息,我正在处理的工具是用C#编写的。

1 个答案:

答案 0 :(得分:0)

阅读桌面应用程序的帮助文件可能很有用,因为它解释得更好:ESRI WebHelp for ArcGIS 9.3.1

过去使用个人地理数据库时,我不得不处理类似的问题。所以从本质上讲,这就是你需要做的事情:

  1. 将工作区设置为数据库(在创建连接后)。使用等效于gp.Workspace =“connection here”
  2. 的C#
  3. 第一个参数(必需)是路径要素图层名称,引用您的工作空间(如果工作空间是dbName,而里面是routeFL,那么图层名称将只是routeFL)。
  4. 第二个参数(必需)是每个唯一路径的标识符。它可以是您定义的RouteID,也可以是路径图层中每个要素的唯一标识符。
  5. 第三个参数(必需)是包含您要在路径上找到的事件的表。
  6. 第四个参数(必需)是事件的类型,POINT或LINE。它由事件所在的routeID(Events表中标识您应该处于的路径上的字段),事件类型(POINT或LINE)以及From和To测量字段组成。如果您使用的是point,则from只使用一个,称为测量字段。
  7. 第五个参数(必需)是您的输出图层。请注意,这是一个IN-MEMORY层,因此它不接受路径,也不会永久存储。之后您可以在其上运行命令来存储它。
  8. 其余参数是可选的,包括:(a)事件文件中的偏移字段,(b)要添加并填充可能错误的错误字段,(c)要添加的角度字段以指示路线和点事件之间的角度 - 不适用于线路事件,因为它们在路线上),(d)角度类型,垂直或相切,(e)是否记录补偿角度(仅当您启用角度测量时) (首先),(f)偏离路线的左/右方向,只有先提前设置偏移,最后(g)你拥有的点类型(多点或点)。
  9. 希望这可以让您更好地了解字段以完成任务。 Python示例可能对您有所帮助:

    gp.workspace = "myDB.mdb"
    # Route file to use
    routeFC = "myRoutes"
    # The identifier for each route
    routeID = "rID"
    # Where my events are stored
    eventTable = "accidents"
    # My events use a routeID to identify route they are on, are POINTS and their measure field is called "mile"
    eventProperties = "routeID POINT mile"
    # Temporary layer to save everything to
    outputLayer = "accidentEvents"
    # Have no offset
    offset = "#"
    # Need to add the errors for verification purposes
    error = "ERROR_FIELD"
    # Need to store angles
    angles = "ANGLE_FIELD"
    # Need perpendicular angle
    angleType = "NORMAL"
    # Run the command now to create the layer
    gp.MakeRouteEventLayer(routeFC, routeID, eventTable, eventProperties, outputLayer, offset, error, angles, angleType)
    

    上面的代码允许您在临时的内存中创建路径事件图层。要保存图层,只需运行SaveToLayerFile(inLayer,outLayer)命令即可完成。