动态分段
动态分段技术是在传统 GIS 数据模型的基础上,利用线性参考技术,实现属性数据在地图上动态地显示、分析及输出等,是 GIS 空间分析中的一个重要技术手段。它不是在线要素沿线上某种属性发生变化的地方进行“物理分段”,而是在传统的 GIS 数据模型的基础上利用线性参考系统的思想及算法,将属性的沿线变化存储为独立的属性表字段(事件属性表);在分析、显示、查询和输出时直接依据事件属性表中的距离值对线性要素进行动态逻辑分段,使用相对位置描述发生在线上的事件,比传统 GIS 要素更容易定位。除此之外,该技术还提高了数据制作效率和数据存储空间利用率,降低了数据维护的复杂度。目前已广泛应用于公共交通管理、路面质量管理、航海线路模拟、通讯网络管理、电网管理等诸多领域。
本专题将以长春市道路的数据为例,根据某一时刻的某些道路出现拥堵和车路段辆较多现象,利用动态分段技术在客户端实时动态显示出道路的路况(拥挤/缓行/畅通),以提示驾驶人员避免进入拥堵路段,选择合适的行驶路线。动态分段接口使用方法如下:
在客户端设置用于向服务端发送的动态分段各参数,包括数据返回选项 DataReturnOption、动态分段参数 generateSpatialDataParams。
// 配置动态分段参数
var generateSpatialDataParams = new SuperMap.GenerateSpatialDataParameters({
routeTable: "RouteDT_road@Changchun", // 路由数据集
// 路由数据集的标识字段,即路由ID
routeIDField: "RouteID",
// 用于生成空间数据的事件表名
eventTable: "LinearEventTabDT@Changchun",
// 用于生成空间数据的事件表的路由标识字段
eventRouteIDField: "RouteID",
measureField: "", // 用于生成空间数据的事件表的刻度字段
measureStartField: "LineMeasureFrom", // 事件表的起始刻度字段
measureEndField: "LineMeasureTo", // 事件表的终止刻度字段
measureOffsetField: "", // 刻度偏移量字段
errorInfoField: "", // 错误信息字段
//设置数据返回选项
dataReturnOption: new SuperMap.DataReturnOption({
expectCount: 1000, // 设置返回的最大记录数
dataset: "generateSpatialData@Changchun",
// 如果用户命名的结果数据集名称与已有的数据集重名, 则删除已有的数据集
deleteExistResultDataset: true,
// 设置数据返回模式为DATASET_ONLY,返回数据集的名称
dataReturnMode: SuperMap.DataReturnMode.DATASET_ONLY
})
});
定义动态分段服务对象,用于将客户端设置的动态分段分析服务参数( generateSpatialDataParams )传递给服务端,并接收服务端返回的动态分段分析结果数据。当向服务端发送请求并且服务端成功返回结果时,用户可在客户端对获得的动态分段空间数据做相应处理,将空间数据中的路况信息以专题图的形式展现给用户。
var serviceUrl = "http://support.supermap.com.cn:8090/iserver/services/spatialanalyst-changchun/restjsr/spatialanalyst"
// 创建动态分段服务实例
var generateSpatialDataService = L.supermap.spatialAnalystService(serviceUrl);
// 向服务端发送请求,并将返回的结果以专题图的形式展现在客户端
generateSpatialDataService.generateSpatialData(generateSpatialDataParams, function (serviceResult) {
// 获取返回的数据
var result = serviceResult.result;
});