zoukankan      html  css  js  c++  java
  • 谈谈地图中的道路绘制

    GIS属于可视化领域。一所谓可视化技术是利用计算机图形学和图形处理技术,将数据转化成图形或者图像在屏幕上显示出来,并进行交互处理的理论、方法和技术。个人理解地图中也有几个关键点:

    • 原始数据能够是图像也能够是矢量数据。如我们底图是点、线、面等矢量数据,卫片、街景是图像数据。
    • 渲染即显示到屏幕上,如今各家手机端都是基于opengl,不论图形还是图像终于显示到屏幕都必须像素化(光栅化)。
    • 交互性 地图APP中分量最重的就是交互,背后隐藏的巨大的需求。

     眼下地图中各种Feature数据,楼块是真正三维的。只是仅仅是一些多边形垂直拉出一定高度形成一个挤出体。可是没有贴图。GIS中绝大多数数据还是以二维为主,面数据绘制最简单。标注点数据在预处理时做重叠避让处理绘制时不会相互遮挡,仅仅有线之间有遮挡和层次关系。那么苍白的2D道路数据怎样描写叙述现实世界中复杂的道路交错关系呢?尤其北京的桥最为出名。XX桥上的立交关系很之重要。

    涉及以下两个基本技术:

    1. 道路立交、平交关系表达

    地图中路线用一个有宽度的多边形带表示,有背景描边和前景填充组成。


    图中椭圆框为立交关系,蓝色框位置为平交关系。

    如果A级路重要度大于B级路。


    立交关系比較简单:

    B级路_borderB级路_fill

    A级路_borderA级路_fill

    终于可实现A级路在B级路之上。

    平交关系

    丁字形路口两处平角关系绘制步骤例如以下:


    从左到右绘制顺序为:

    A道路_border(灰色),

    B道路_border(橙色);

    A道路_fill(白色),

    B_道路_fill(黄色)

    终于AB道路平交效果如第四个子图。

    2. ZLevel立交数据

    现实世界是3D的。地图是2D的,那么地图能够理解成现实世界的顶视图。

    顶视图的信息一定没有自由透视模式的信息多。

    无论道路立交关系有多少层。顶视图中获取的图像仅仅能看到相交处处于最高层的道路。

    ZLevel数据正是这么一份补丁数据,它关联了道路相交处于最高层的道路路段。

    例如以下图是定慧桥的卫星图:


    它的ZLevel数据和路网例如以下图,黑色路线为道路数据,蓝色粗线为ZLevel数据。

     

    终于道路绘制时候,先画路网。

    然后再绘制ZLevel数据。终于实现道路的立交层次的表示。

     

    3. 各家地图道路绘制效果对照

    左图是谷歌地图道路:立交关系与现实一致道路有点宽且没有箭头,“定慧桥”文字一直没出现,这么重要的标注。

    右图是腾讯地图:立交关系与现实一致。箭头稍密。有定慧桥标注。

    左图是百度地图道路:立交关系蓝色椭圆标注的地方不正确,有箭头,有定慧桥标注。

    右图是高德地图道路:没有立交关系都是平交,应该是没有使用ZLevel数据,有箭头,有定慧桥标注。


    地图这东西,你越赞赏越懂得赞赏!



  • 相关阅读:
    swift5.x 错误处理
    iOS--iPhoneX设备判断
    swift5.x 多线程的应用场景
    Swift5.x 多线程编程
    Swift5.x 范型
    swift5.x 类初始化、反初始化, 指定初始化器,便利初始化器
    swift5.x 扩展(extension)
    swift5.x 多态,类型检查,类型转换
    Effective java笔记(十),序列化
    Effective java笔记(九),并发
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/6923452.html
Copyright © 2011-2022 走看看