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未采用此方式,修改可能涉及代碼挺多。