SuperMap iObjects .NET 11i 知识库
动态分段  

8   生成事件表

事件表实际上就是一个属性表,其中的每一条记录代表了一个事件,除了必须包含的路由标识字段、事件在路由上的刻度字段外,还可以包括其他用于描述事件的属性信息。在本文的第4章基本概念中对事件表进行了较为详细的介绍。

8.1     生成事件表的方式

生成事件表有两种方式。一种是人工建立一个属性表,添加路由标识字段和其他属性字段,并输入相应的属性信息来生成事件表。这种方式虽然简单但往往需要耗费较多的人力物力。另一种方式是通过点或线空间数据和路由数据来自动生成事件表。

点事件表的生成

由二维点数据和路由数据集可以生成点事件表。如图 8‑1是点事件的生成示意图,粉色区域是以给定的查找半径为半径,对路由对象生成的一个缓冲区域,称为查找范围。落在该区域内的点用于生成事件表,每个点将对应一个事件(事件表中的一条记录)。生成的点事件表,除包含系统字段外,还会增加两个属性字段,分别用于存储对应路由的路由ID和点到路由的垂足点的位置的M值(作为该点事件的刻度值)。而查找范围之外的点不会生成事件(如p2点)。

线事件表的生成

与点事件表的生成类似,如果二维线对象完全落入查找范围内,每条线将会生成一个线事件,属性字段包含路由ID、线的起点到路由的垂足点位置的M值(作为线事件的起始刻度值)和线的终点到路由的垂足点位置的M值(作为终止刻度值);未落入或部分落入查找范围的线对象将不会生成线事件。图 8‑2是生成线事件表的示意图,线l2到路由的最大直线距离大于查找半径,因此,不会生成对应的事件。

81 点事件表的生成

82 线事件表的生成

8.2     生成事件表的方法和参数设置

LinearReferencing类的GenerateEventTable方法可以帮助用户通过空间数据和参考路由数据来生成事件表。该方法需要指定两个参数。一个是生成事件表所要参考的路由数据集,另一个是生成事件表参数(GenerateEventTableParameter)对象。通过一个实例化的GenerateEventTableParameter对象的属性,可以设置生成事件表的各个参数。下面对这些参数进行详细介绍。

事件数据(EventDataset

用于生成事件表的空间数据称为事件数据。事件数据可以是矢量点数据集或线数据集,对应地会生成点事件表或线事件表。

路由标识字段(RouteIDFieldOutputDatasetRouteField

RouteIDField属性用于指定用于生成事件表的路由数据集的路由标识字段,OutputDatasetRouteField属性用于设置生成的结果事件表的路由标识字段。在事件表中该字段的值与事件所对应的路由的ID一致。注意,SuperMap对路由ID字段的字段类型有所限制,请参见表 6.2。如果RouteIDField属性设置的字段类型不支持,会导致生成事件表失败。

查找半径(SearchRadius

8‑1和图 8‑2中的粉色区域为生成事件表时的查找范围,该范围由查找半径决定,即以查找半径为半径对路由对象扩展出的缓冲范围。查找范围内的事件数据用于生成事件表,范围以外(包括部分在查找范围外)的数据不能生成事件。SearchRadius属性默认值为1.0e-10。其单位由SearchRadiusUnit属性决定,默认为米(Unit.Meter)。用户可以通过SearchRadiusUnit属性设置查找半径的单位,系统在生成事件表时会自动换算成与用户生成事件表的参考路由数据集的的坐标系统单位。

是否创建距离字段(HasDistanceField

HasDistanceField属性只对点类型的事件数据有效。如果设置为true,则会在生成的事件表中自动增加一个字段,用来存储点到对应路由的直线距离;反之则不会生成该字段。

是否只查找最近路由(FindingClosestRoute

FindingClosestRoute属性只当事件数据为点数据时有效。当某个点在多条路由的查找范围内时,如果该属性设置为true,则只生成距离该点最近的路由上的事件;如果为false,则只要该点在路由的查找范围内,就生成对应的事件。举例来讲,如果某点在三条路由的查找范围内,如果只查找最近距离的路由,则结果事件表中只生成一条事件记录,否则会生成三条分别对应三条路由的事件记录。

是否保留事件数据的属性字段(RetainingAllFields

用于生成事件表的事件数据中可能将一些可能有用信息存储在除字段字段之外的属性字段中,如果将RetainingAllFields属性设置为true,则在生成的事件表中,将会包含这些属性字段,反之则不会添加这些字段。当选择保留系统字段外的属性字段时,如果生成点事件表,被保留的字段将添加"_P"后缀;如果生成线事件表,则添加"_L"后缀。

其他结果参数设置

当事件数据为点数据时,还需要设置结果事件表的刻度字段(MeasureField),用于存储事件的位置信息(刻度值)。同样,事件数据为线数据时,需要设置结果事件表的起始刻度字段(MeasureStartField)和终止刻度字段(MeasureEndField),分别用于存储线事件的起始刻度值和终止刻度值。此外,还可以设置结果事件表的名称(OutputDatasetName)和输出数据源(OutputDatasource)。注意,如果OutputDatasourcenull,结果事件表将会自动存储到参考路由数据集所在的数据源中。

 

 


  版权所有© 北京超图软件股份有限公司。保留所有权利。