路况专题图制作

在道路导航应用中,常常使用专题图来表达道路的拥堵情况,图 1所示,使用绿色表示道路畅通、红色表示道路拥堵。在实际中,道路一般都为双向道路,并且每个方向的拥堵情况不同,所以反应到实际的导航数据上,使用双线来表达道路。
一般情况下,只要数据中有表达道路畅通拥堵信息的字段,例如某字段“Condition”其中的字段值1表示畅通、字段值2表示缓行、字段3表示很堵,那么就可以基于这个字段对道路制作单值专题图,将单值1使用绿色线条表达、单值2使用黄色线条表达、单值3使用红色线条表达,图 1所示。

不难看出,下图的道路是大比例尺下显示的情况,我们可以基于普通的单值专题图就可以实现,无需额外设置。然而当缩小地图比例尺,在看路况,就会发现问题,双线道路都重叠了,此时无法清楚地看到双向道路的拥堵情况。


图 1 大比例尺下路况专题图

基于上述地图比例尺较小的情况下,需要显示双线道路的路况,SuperMap提供了两个接口很好地实现了所需效果:TrafficConditionExpress、TrafficConditionOffset,下面详细介绍实现方法:
  • TrafficConditionExpress接口指定一个字段或者字段表达式,该接口值有三种情况:0、1、2,其中,0表示不显示路况,例如:小比例尺下的辅道;1表示所显示路况的道路为单线道路,例如:匝道;2表示所显示路况的道路为双线道路,例如:高速公路。
  • TrafficConditionOffset接口指定一个数值,当小比例尺下,通过设置该接口,对表达路况专题图中的双线线型分别向两侧偏移指定距离,这样,小比例尺下也可以清楚地显示出双线道路的路况,图 2所示。该接口仅对双线道路(即TrafficConditionExpress接口对应字段表达式的值为2时)进行偏移处理。


图 2 小比例尺下路况专题图制作
小结:
  1. 对于比例尺较大时,一般为双线道路可以完全显示时,制作路况只需使用表达道路拥堵情况的字段制作单值专题图,并设置对应状态的风格即可。
  2. 对于小比例尺下显示路况,首先要保证数据字段包含两类信息:第一:有表达单双线及是否显示路况的字段;第二:有表达道路拥堵情况的字段。接下来就可以通过拥堵状况字段为道路制作单值专题图,并设置对应状态的风格;为接口TrafficConditionExpress指定字段或字段表达式,指示道路单双线情况或者是否显示路况;通过TrafficConditionOffset设置双线路况向两侧的偏移距离,单位为:0.1毫米。
  3. 这里再提及一些路况制图的技巧:按照地图显示的比例尺级别,路况也应该分层级制图和显示,例如,大比例尺下,匝道的路况可以显示出来,而到了中比例尺下,匝道可能不显示路况;大比例尺下显示辅道的路况,小比例尺下辅道的路况不显示。另外,显示双线道路的路况时,不同比例尺下双线道路的偏移量(TrafficConditionOffset)设置也应根据实际情况进行调整。

路况使用的线型符号:

表达路况的线型符号,不能使用系统符号,也就是ID为0至5的符号。

数据检查和处理:

双线道路的路况显示的原则是分别对双线道路的两根线向两侧偏移指定量(TrafficConditionOffset),偏移方向是线对象数字化方向的右侧(正值)或者左侧(负值),但是用户数据会存在双线道路的两条线的数字化方向是相同的,此时偏移就不合理,都朝向一侧偏移,而非两侧偏移,因此,这里提供了一个数字化方向的处理工具,将这种双线道路的两条线数字化方向相同改为数字化方向相反的情况。工具下载地址为:

链接: http://pan.baidu.com/s/1jHNAuf8 密码: mhrq

工具的使用说明:

运行工具,如下图所示,在“”UDB数据位置“”指定要处理的道路数据所在的数据集全路径。

在“”线数据集设置“”区域完成要处理的道路数据集的指定,以及需要的字段信息。要处理的数据集建议您做好备份。所指定的字段都给出了例子,这些例子来源于四维数据的字段内容,若您的数据不是四维数据,请根据字段的含义选出对应正确的字段。

起始字段:线对象起始点。

终止字段:线对象终止点。

方向字段:道路线对象的方向。

对应节点数据集:N(四维数据中)

ID字段:ID(四维数据中)

工具处理后,会根据方向字段所记录的方向与数字化方向,对起始点和终止点进行处理,以道路方向字段所记录的方向与起始点和终止点记录的方向统一。


备注说明:
目前,SuperMap iDesktop .NET 8C(2017)还没有完全集成路况专题图制作的设置,但是基于路况拥堵字段制作单值专题图是没有问题的,主要是TrafficConditionExpress和TrafficConditionOffset接口的设置没有集成进去,用户可以导出路况单值专题图模板(*.xml)文件,然后修改其中的标签(<sml:ConditionExpression>和<sml:ConditionOffset>),在将模板文件加载回去来实现。


  • <sml:ConditionExpression>:指定字段或者字段表达式。用于确定所显示路况的道路是单线、双线,还是不显示道路的路况。该字段表达式值有三种情况:0、1、2,其中,0表示不显示路况;1表示所显示路况的道路为单线道路;2表示所显示路况的道路为双线道路。
  • <sml:ConditionOffset>:指定双线道路路况时,双线向两侧偏移的距离,单位为0.1毫米。

在Vue项目中添加百度地并实现路况层的展示,可以通过以下步骤完成: 1. 在Vue组件中引入百度地的JavaScript API。可以在组件的`mounted`生命周期钩子中调用百度地的API。 2. 创建地实例,并设置好地的中心点、缩放级别等参数。 3. 加载路况层。百度地API提供了`BMap.TrafficLayer`这个类用于显示实时交通路况。 以下是一个简单的示例代码: ```javascript <template> <div id="map-container" style="width: 100%; height: 500px;"></div> </template> <script> export default { name: 'MapComponent', data() { return { map: null, trafficLayer: null, }; }, mounted() { // 加载百度地API this.loadScript('https://api.map.baidu.com/api?v=3.0&ak=你的API密钥'); // 确保API加载完毕后创建地实例 window.onload = () => { this.map = new BMap.Map('map-container'); this.map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 设置中心点和缩放级别 this.trafficLayer = new BMap.TrafficLayer(); // 创建路况层实例 this.map.addControl(new BMap.MapTypeControl()); // 添加地类型控件 this.map.setMapType(BMAP_TRAFFIC_MAP); // 设置为路况 this.map.addOverLay(this.trafficLayer); // 将路况层添加到地上 this.trafficLayer.refresh(); // 刷新路况层 }; }, methods: { loadScript(url) { const script = document.createElement('script'); script.type = 'text/javascript'; script.src = url; document.body.appendChild(script); }, }, }; </script> <style scoped> #map-container { width: 100%; height: 100%; } </style> ``` 请替换上面代码中的`你的API密钥`为你申请的百度地API密钥。在实际使用时,你可能还需要处理地的其他功能,如拖拽、缩放等交互。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值