zoukankan      html  css  js  c++  java
  • 转载地图优化

    1. 风格

    (1)使用简单线型。越简单的线型显示速度越快,系统默认的实线显示速度最快,长城、铁路、陡坎等线型显示速度慢。尽量减少使用复杂线型,或者减少使用复杂线型的对象数量,可以提高地图显示速度。

    [提示]:

    ◆ 1~6线型是操作系统提供的,显示速度最快;
    ◆ 必须使用复杂线型时,尽量对使用该线型的线对象抽稀;
    ◆ 制作线型时,子线类型尽量使用实线,少使用子线固定颜色。


    (2)使用宽度为1的线型。测试表明,在Windows上绘制两个像素宽的实线比绘制一个像素宽的实线要多花数倍的时间。因此,如果数据集对象多,一定要尽可能想办法减小线的宽度,1个像素宽最好。
     
    (3)使用简单符号。对于矢量符号而言,笔画数量少的简单符号显示速度快于复杂的符号。一般而言,栅格符号显示速度快于矢量符号,特别是当矢量符号笔画比较复杂的情况。

    [提示]:

    ◆ 简单矩形速度最快;
    ◆ 同等复杂程度的符号,显示速度对比:TrueType字体 慢于 矢量 慢于 栅格;
    ◆ 符号旋转比较耗时间,尽量少用。


    (4)使用实色填充模式。实色填充快于单色Pattern填充,单色Pattern填充快于彩色Pattern填充。

    [提示]:

    ◆ 空填充速度最快,其次是Windows默认的填充方式;
    ◆ 填充编辑器中打开填充模式,越大的越快。


    (5)尽量使文本固定大小,并设置文本图层使用统一风格,对eSuperMap(嵌入式GIS开发平台)的地图刷新效率影响很大。

    [提示]:

    ◆ eSuperMap中显示效率最高的文本应具有三个特点:同一个文本层使用相同的风格、水平显示、固定大小;
    ◆ eSuperMap中标注比文本要快。

    2. 数据

    (1)使用简单数据集。一般而言,简单数据集显示速度快于复合数据集。一方面简单数据集不需要存储风格,比复合数据集数据量小;另一方面,简单数据集在不作专题图的情况下,不需要重复创建GDI对象,而复合数据集则需要为每个对象重新经常创建GDI对象。

    [提示]:

    ◆ 字段长度越短越好,字段数据量越少越好;文本型字段,固定长度优于不固定长度。


    (2)少用专题图。显示带专题图的图层时需要读出制作专题图的属性字段内容,因此提取数据的速度比不作专题图时慢,字段越多越慢。尽量不要使用自定义专题图和统计专题图。对SDB数据源而言,作专题图和不作专题图的差别比较大,对于数据库类型的数据源而言,差别则较小。

    [提示]:

    ◆ 制作专题图,对于SDX差别不大;
    ◆ 制作专题图使用的字段,显示效率对比:byte>short>long>text(尤其单值专题图,使用text类型最慢)。


    (3)避免使用大对象。顶点(Vertex)多的对象显示速度慢,范围很大的对象在地图放大的情况下显示速度也慢(因为要进行裁剪),顶点多且范围又大的对象则是要绝对避免的。如果碰到这样的大对象,最好分解成几个小对象,或者用栅格化数据集代替。


    (4)抽稀线数据集。在系统允许的情况下,尽量抽稀线上的点。举个例子,同时有1:100万的县界图和1:400万的县界图,倘若要求的制图精度不高,请选用1:400万的县界图,显示速度比前者快数倍甚至十几倍。原因是,1:100万地图中一个县多边形边界上的点数比1:400的同一个县多很多倍。倘若地图显示的时候不要求放得很大,1:400万的图还可以继续抽稀。SuperMap Deskpro有线数据集抽稀的功能,对于多边形数据,不要直接进行抽稀,最好把线数据抽稀之后重建面数据集拓扑关系,否则多边形之间容易出现缝隙。

    [提示]:

    ◆ 重采样距离设置为0,可以去掉重复坐标点和直线上的一些多余点。


    (5)城市地图尽量使用单线道路数据,少使用双线道路数据。双线道路比单线道路多一倍的数据量,故显示慢。若把双线道路构建成一个庞大的道路多边形进行添色,则更是大忌。


    (6)对于影像数据,请使用影像压缩技术,或者使用影像金字塔技术加快显示速度。


    (7)影响数据库速度的因素主要有两个:字节数、记录数;尤其是记录数,数据集的记录数不要太多,如果记录数超过10万,建议分开(点除外),分解方法主要有:纵向分解(按类型)、横向分解(分区)。


    (8)配置地图的时候尽量找到目标工作机器配置,因为不同的硬件指标会对影响地图显示速度的不同项起作用。


    (9)当SDB文件大小超过机器内存时,推荐使用数据库。

    3. 图层

    (1)地图中图层数量不要太多,最好控制在20层以内,若能控制在10层以内更好。


    (2)使用小对象过滤功能,在缩小显示时过滤掉一些对象。但过滤的像素大小要设置适中,过大地图显示效果不好,过小则性能提高有限。

    [提示]:

    ◆ 对于SDX引擎的数据,效果最好。


    (3)使用View by Scale功能。设置每个图层在不同比例尺下是否可显示,在地图缩小时隐藏细节,同时别忘记在放大时隐藏概略图。这是一个艺术性的工作,需要很高的技巧,更需要不断地试验,以确保在任意比例尺下地图丰富而不零乱,而且显示速度快。注意不要出现“真空比例尺”,即在某个比例尺范围下,没有或者很少内容显示;同时也要避免被上面图层盖住的图层在某个比例尺范围下处于显示状态下。真正的高手必须用好这个功能。

    在实际处理数据时,我们可能会分三步去考虑:数据——图层——专题图,针对这三步,个人做了一个总结:

    1.检查数据
    线数据集在不变形的情况下抽稀
    顶点多且范围大的对象进行分解
    数据库中大记录数数据集按类型或按区域划分为多个数据集
    影像数据集使用压缩或影像金字塔
    2.检查图层
    图层个数控制在10个以内
    使用图层的小对象过滤
    文本图层中文本固定大小,尽可能统一风格
    笔画较少的符号或尽可能使用栅格符号,符号避免旋转
    使用系统线型且宽度为1,若使用自定义线型,子线尽量为实线且颜色不固定
    使用单线道路,避免双线
    图层最大最小比例尺——最为重要
    3.检查专题图
    自定义专题图和统计专题图可否被代替
    专题图使用的字段检查,尽可能不使用文本型字段制作专题图
    标签专题图中使用文本固定大小

  • 相关阅读:
    iOS-MD5加密、SHA1加密
    iOS-AFNetworking参数和多文件同时上传【多文件上传】
    iOS-CocoaPods安装及使用
    Python Queue模块
    Python socket编程
    python select epoll poll的解析
    python redis使用
    python executemany的使用
    python 三层架构说明
    Python isinstance
  • 原文地址:https://www.cnblogs.com/emily_fly/p/1620658.html
Copyright © 2011-2022 走看看