1.
地图层的裁剪: 原始的数据图层包含大量的feature信息,比如路径上存在大量的顶点vertex,由于vertex过密,导致绘制时消耗的时间过大,所以对地图数据要预处理,减化路径复杂度来加速绘制速度。自行编写处理算法,好像geos库有路径简化的实现,或者使用clib,slib处理
2.
设置图层可视范围: 每种图层是否显示要根据设置的可视范围来判别,没有达到指定的显示范围,层对象就是隐藏
3.
相同类型图层对象子类化: 道路可以分国道、省道及更小单位的对象,每种对象划分在不同的图层上,根据设定的可视范围来决定是否进行绘制
4.
spatial indexed: 选择地图数据的存储方式来加速访问图层数据。Qgis的效率很低,通过ogr库虽然能访问多种gis数据,但是当选择REct进行搜索时却是遍历图层所有对象(feature),此法效率低下。Rtree indexed算法能改善此种效果,但目前尚无对此算法研究。选择空间数据库存储是个好的方法。对于地图集中式管理可以采用pgsql-postgis或者mysql-sptial db,或者oracle sde,发现微软sql-server 2005目前也有空间数据库引擎。
对于本地文件型地图存储方式,观察到很多国内地图引擎产商采用自己的文件格式,一个省区的地图数据处理之后只有10M,目前尚无经历去研究此种存储方式,唯一简单的就是采用sqlite+spatialite来实现空间数据存储,其实现了ogc的部分spatial sql,看其介绍尚无rtree算法(builtin),可能对于超大的数据量的处理性能会差很多
5.
缩放重绘:只有在缩放操作时才进行地图数据的查询加载
6.
对于进行Pan操作时平滑的现实,采用图层显示区域缓存的方式。地图显示区域进行pan时,可能要对8个方向进行拖动,比如显示区域320×240,那请求区域时请求320×3,240×3区域的feature对象,当往下拖动地图时上部的缓存区域将出现无效区域,完成拖放时将上部缓冲区域填充,此种方法如同openlayers技术。Qgis未采用此方式,修改可能涉及代码挺多。