动态分段 |
在SuperMap中,动态分段主要涉及两种数据结构:路由和事件。路由用来表达具有测量值的线对象,事件记录发生在路由上的现象的位置和其他属性。下面对路由、事件及其他相关基本概念进行介绍。
路由:使用唯一ID标识,并具有度量值的线对象。除有X、Y坐标外,每个节点还有一个用于度量的值(称为刻度值),是路由与一般线对象的根本区别。在SuperMap中,使用GeoLineM类型来描述路由对象。路由对象可以用来模拟现实世界中的公路、铁路、河流和管线等线性地物。
刻度值:SuperMap中,路由的节点信息由(X、Y、M)表达,如图 4‑1所示。刻度值即M值,代表该节点到路由起点的度量值,该值可以是距离、时间或其他任何值。M值独立于路由数据的坐标系统,其单位可以不与(X,Y)的坐标单位相同。M值可以递增、递减或者保持不变。
|
图 4‑1 一条路由及其节点信息 |
路由数据集:存储事件发生的地点,也就是路由的数据集,是一个矢量数据集。
路由位置:路由的一个点或路由上一部分的位置,简称位置。分为点路由位置和线路由位置。点路由位置使用一个刻度值描述沿路由的一个位置,如某某路500米处;线路由位置使用起始刻度值和终止刻度值来描述路由上一部分,如某某路200到1000米处。
事件:包含路由位置及相关属性的一条记录称为路由事件,简称事件。与路由位置对应,事件也分为点事件和线事件。存储了路由事件集合的属性表称为事件表。点事件与线事件分别存储于点事件表和线事件表中,如图 4‑2所示。
l 点事件
点事件发生在路由上的一个精确点位置上。例如,发生在公路上的交通事故、高速公路上的测速仪器、公交站点、管线上的阀门等。在点事件表中,每个点事件(一条记录)都对应一个路由ID(路由标识字段),并使用一个字段来存储描述点事件位置,即刻度字段,用于存储点事件在对应路由上的M值。
l 线事件
线事件发生在路由的一段上。如某段道路的铺设年份、交通拥堵状况、管线的管径等。在线事件表中,每个线事件(一条记录)都对应一个路由ID(路由标识字段),并使用下面两个字段来存储描述线事件的刻度值:
起始刻度字段:用于存储线事件的起点在对应路由上的M值。
终止刻度字段:用于存储线事件的终点在对应路由上的M值。
|
图 4‑2 点事件和线事件 |
零长度事件:是指起始刻度与终止刻度相同的线事件。如果允许设置一个容限值,那么起始刻度与终止刻度的差值的绝对值小于该容限时,也可看做是零长度事件。
路由标识字段:路由数据集中的一个字段,存储了路由ID,是路由对象的唯一标识字段。路由数据集、事件表和通过事件表生成的空间数据中均包含该字段,它将事件与路由或空间数据对应起来。注意,该字段只能是数值型。
子对象的间隔:路由可以是包含多个子对象的复杂对象。当两个子对象不连续时,就产生了间隔。是否忽略子对象的间隔影响着路由刻度值的连续性,如果忽略子对象的间隔,刻度值将是连续的,否则就是不连续的,此时子对象的间隔的距离就是两个端点的直线距离。如图 4‑3所示,忽略子对象间隔时,第一个子对象的终点的M值和第二个子对象起点的M值相同;不忽略子对象间隔时,第二个子对象的起点的M值就是第一个子对象的终点的M值加上两者的间隔的距离。
|
图 4‑3 是否忽略子对象间隔对刻度值的影响 |
插值求M值:通过外部数据或路由对象本身已知的刻度值,可以利用插值方法来估算路由上其他节点的刻度值。插值方法分为内插和外推两种,外推又可分为向前外推和向后外推。内插即在数列的已知值之间估计中间各点的值,而外推即估算数列已知数值范围以外的各个值。
如图 4‑4所示,节点1的M值可由点2、4通过向前外推得出,节点3和5的M值可由点2、4、6进行内插获得,节点7的M值则可以由点4、6通过向后外推得出。
|
图 4‑4 使用插值估算M值 |