线性参考类。该类提供用于动态分段的生成路由数据集、校准路由数据集、创建事件表、创建空间数据及事件表的叠加与融合等功能的实现。

命名空间:  SuperMap.Analyst.SpatialAnalyst
程序集:  SuperMap.Analyst.SpatialAnalyst (in SuperMap.Analyst.SpatialAnalyst)
版本: dll

语法

C#
public static class LinearReferencing

备注

  • 线性参考和动态分段

    要理解为什么使用动态分段,首先要了解线性参考技术。线性参考是一种采用沿具有测量值的线性要素的相对位置来描述和存储地理位置的方法,即使用距离来定位沿线的事件。这里的距离表示一个度量值,可以是长度,也可以是时间、费用等。

    下图是线性参考的简单示意,图中底部的线是一条具有测量值的线段(比如公路、管道等),线上方的点和线段是发生在该线段上的事件(如公路上的交通事故、一段道路的路面材料等)。线性参考技术将图中沿线的点和线从左至右分别描述为:距离线段起始位置12个单位的点,沿线段第35个单位开始至第76个单位结束的线段,沿线段第84.3个单位的点。

    在很多实际应用中,使用线性参考进行定位比传统的通过精确的 X、Y 坐标来定位更符合人们的习惯,从而能够更加有效地处理问题。比如在某某路口东300米处发生交通事故,比描述为发生在(6570.3876,3589.6082)坐标处更容易定位。

    动态分段技术就是基于线性参考技术发展起来的。它主要使用两种数据结构:路由数据集和事件表。路由数据集中的路由对象就是线性参考中“具有测量值的线性要素”,它与普通线对象的区别是除X、Y坐标外还存储有第三维信息,即用于度量的测量值;而事件表是一个属性表,其中的每一条记录都存储了一个用于对应路由对象的标识值,以及相应的测量值,即相对位置信息。如图 1 1所示,动态分段的核心过程就是通过事件表中记录的标识值和相对位置信息,将事件表中的每一条记录对应到路由上,动态地生成为点或者线对象。用户可以存储生成的点或线数据,也可以不存储,因为该数据在使用前可以通过事件表和路由快速地动态生成。

    除了使用相对位置描述发生在线上的事件,比传统GIS要素更容易定位外,动态分段技术主要解决了传统GIS中的两个问题。

    1. 提高数据制作效率和降低数据存储空间。
    2. 众所周知,传统GIS中的线性要素只能具有一维属性,要描述线性对象的多个属性时,需要多份线性空间数据。以最为常见的公路为例,要存储公路的路况、路宽、路面材料和铺设年份四个属性,就要分别根据这些属性制作四份线数据。而实际应用中,线要素对应属性是几十、几百的,每个属性都要建立一份空间数据,这不仅增加了数据量,还降低了分析效率,也增加了应用的复杂度。

      而动态分段的特点就是,允许线要素具有多维属性,一份空间数据,一个或几个属性表数据,即可解决问题。使用动态分段技术,可以通过四个事件表来分别记录公路的路况、路宽、路面材料和铺设年份信息,在每个事件表中,使用一个字段来存储该记录对应的路由对象的唯一标识值,使用两个属性字段分别存储该条记录在公路上的起始位置和终止位置,通过这三个属性字段,就能够将属性表中的记录定位到路由数据上,根据属性表中记录与路由数据的对应关系动态地生成表达某个属性的空间数据。

    3. 降低数据维护的复杂度。
    4. 当描述线数据的属性发生变化时,在传统 GIS 中,就要修改属性对应的空间数据。当属性频繁变化时,将使数据的维护工作变得十分繁琐复杂。例如,一般情况下,路况信息需要半小时更新一次,这对于传统GIS工作量的挑战,是巨大的,而使用动态分段技术可以避免这种麻烦,仅需要每隔半小时,修改一下属性对应的数值即可,这极大降低了数据维护的复杂度,使得某些应用变成可能。

  • 动态分段的特点

    1. 不需要重复数字化就可以进行多个属性集的动态显示和分析,有效减少冗余数据。
    2. 并没有按照属性数据集对线路进行真正的分段,只是在需要查询、分析时,动态完成各种属性数据的分段显示。
    3. 所有属性数据集都建立在同一线路位置描述的基础上,即属性数据组织独立于线路位置描述,独立于线路基础底图,因此易于数据的更新和维护。
    4. 可进行多个属性数据集的综合查询和分析。
    5. 路由、事件表与空间数据的联动:在 SuperMap 中,通过路由和事件表生成空间数据之后,系统内部就建立了三者间的动态分段关系,就可以实现路由、事件表和空间数据的联动修改,详细介绍请参见 GenerateSpatialData 方法。
  • 动态分段的基本概念

    在SuperMap中,动态分段主要涉及两种数据结构:路由和事件。路由用来表达具有测量值的线对象,事件记录发生在路由上的现象的位置和其他属性。

    路由:是使用唯一 ID 标识,并具有度量值的线对象。除有 X、Y 坐标外,每个节点还有一个用于度量的值(刻度值),是路由与一般线对象的根本区别。在 SuperMap 中,使用 GeoLineM 类型来描述路由对象。路由对象可以用来模拟现实世界中的公路、铁路、河流和管线等线性地物。存储了路由对象的数据集,称为路由数据集,是一个矢量数据集。

    刻度值(M 值):SuperMap 中,路由的节点信息由(X、Y、M)表达,如下图所示,为某个路由对象的节点信息。刻度值即 M 值,代表该节点到路由起点的度量值,该值可以是距离、时间或其他任何值。M 值独立于路由数据的坐标系统,其单位可以不与(X,Y)的坐标单位相同。M 值可以递增、递减或者保持不变。

    路由位置:路由的一个点或路由上一部分的位置,简称位置。分为点路由位置和线路由位置。点路由位置使用一个刻度值描述沿路由的一个位置,如某某路500米处;线路由位置使用起始刻度值和终止刻度值来描述路由上一部分,如某某路200到1000米处。

    事件:包含路由位置及相关属性的一条记录称为路由事件,简称事件。存储了路由事件集合的属性表称为事件表。与路由位置对应,事件也分为点事件和线事件,分别存储于点事件表和线事件表中。点事件和线事件请参见 EventType 枚举类型。

    零长度事件:是指起始刻度与终止刻度相同的线事件。如果允许设置一个容限值,那么起始刻度与终止刻度的差值的绝对值小于该容限时,也可看做是零长度事件。

    路由标识字段:路由数据集中的一个字段,存储了路由 ID,是路由对象的唯一标识字段。路由数据集、事件表和通过事件表生成的空间数据中均包含该字段,它将事件与路由或空间数据对应起来。

    插值求 M 值:通过外部数据或路由对象本身已知的刻度值,可以利用插值方法来估算路由上其他节点的刻度值。插值方法分为内插和外推两种,外推又可分为向前外推和向后外推 。内插即在数列的已知值之间估计中间各点的值,而外推即估算数列已知数值范围以外的各个值。如下图所示,节点1的 M 值可由点2、4通过向前外推得出,节点3和5的 M 值可由点2、4、6进行内插获得,节点7的 M 值则可以由点4、6通过向后外推得出。

  • 动态分段的一般过程

    SuperMap提供的动态分段的主要功能包括:生成路由数据集、生成事件表、事件表的叠加与融合、生成空间数据。实现动态分段的一般过程为:

    1. 首先获取或生成路由数据集(GenerateRoutes 方法);
    2. 对路由数据集进行校准(CalibrateRoutes 方法);
    3. 然后生成事件表(GenerateEventTable 方法),并根据实际需求对事件表进行叠加(OverlayRouteEvents 方法)、融合(DissolveRouteEvents 方法)或其他修改处理;
    4. 接着由事件表创建对应的空间数据(GenerateSpatialData 方法),可以进行路由数据集、事件表和空间数据的联动修改,以及重新生成空间数据(RebuildSpatialData 方法);
    5. 生成空间数据后,还可以根据研究内容做进一步的处理和分析。

  • 注意事项:

    • 动态分段功能中,对数据集中的路由 ID 字段和刻度值字段(点事件对应刻度值字段,线事件对应起始刻度字段和终止刻度字段)的字段类型有一定限制,下表列出了其对字段类型(请参见 FieldType 枚举类型)的支持情况。注意,其中宽字符和文本型字段的值只能由英文字符、数字或者英文加数字构成,不能包含其他文字或者符号。
    • 动态分段关系
    • 动态分段关系在生成空间数据时建立,即根据路由 ID、刻度值字段等信息建立起路由数据集、事件表和生成的空间数据三者的对应关系。动态分段关系主要用于实现三个角色间的联动修改,并可能影响空间数据的生成及联动修改,详细介绍请参见 GenerateSpatialData 方法。

要获取动态分段更为详细的介绍,还可以阅读《动态分段》技术文档。

继承层次

System..::.Object
  SuperMap.Analyst.SpatialAnalyst..::.LinearReferencing

版本信息

SuperMap iObjects .NET


SuperMap Objects .NET

受以下版本支持: 6.1.3

请参见