如何使用ArcGIS9.2中的动态显示(Dynamic Display)技术(五)

来源:互联网 发布:在淘宝网上怎么购物 编辑:程序博客网 时间:2024/04/30 19:48

      ArcGIS9.3对Dynamic Display做了很大的改进,底层显示方式做了本质的一些改变。其中最大的变化是添加了IDynamicCacheLayerManager 接口,这个接口极大提升了动态图层显示时地图的显示效果,9.3以前的版本,地图的缩放都是重复刷新每个地图背景,在地图比较复杂的情况下,几乎是无法忍受的慢,但是如果采用9.3的新接口,可以在使用之前先用类似Arcgis Server的方法对地图进行cache工作,而后在IDynamicCacheLayerManager 中使用connect方法指定cache的文件夹,便能达到理想的效果,其实也可以自己利用该接口直接做cache,那么在多次浏览后,cache的效果使得地图背景显示的效果极佳。部分程序代码如下:

       VARIANT_BOOL varCacheable;
        ipLayer->put_Cached(VARIANT_TRUE);
        IDynamicCacheLayerManagerPtr ipDynamicCacheLayerManager(CLSID_DynamicCacheLayerManager);
        hr= ipDynamicCacheLayerManager->Init(m_ipMap,ipLayer);
        hr=ipDynamicCacheLayerManager->get_Cacheable(&varCacheable);
        
        CComBSTR bstrFoldName;
        CComBSTR bstrFoldPath;
         hr= ipDynamicCacheLayerManager->get_FolderPath(&bstrFoldPath);
        hr= ipDynamicCacheLayerManager->get_FolderName(&bstrFoldName);
        hr= ipDynamicCacheLayerManager->Connect(bstrFoldPath,bstrFoldName);
       
        hr= ipDynamicCacheLayerManager->put_ConsolidatedGroupLayer(VARIANT_TRUE);
        hr= ipDynamicCacheLayerManager->put_DetailsThreshold(20);
        hr= ipDynamicCacheLayerManager->Invalidate(NULL,VARIANT_TRUE);
        hr= ipDynamicCacheLayerManager->put_Format(CComBSTR("PNG"));
        
        break;

      目前也可以直接使用ArcGIS Server的地图服务作为Dynamic Layer显示背景。

 

何种情况下使用Dynamic Display比较合适

     前期和客户做过目标显示的比对测试,如果动态目标个数在一千以上,选择使用Dynamic Display比较合适。

     如果动态目标数量不多,则建议使用element,主要是程序实现比较简单。

     扩展性和底层控制,Dynamic Display效果更好,但是仍有缺陷,例如symbol的部分中文支持。