『公告』 预祝您龙年大吉,万事如意, 过节期间, 大家如需数据服务,请拨打400 或直接添加客服微信,再祝大家龙年,心想事成。
关注我们 新浪 腾讯

浅析MapControl加载三个加载数据的函数

浅析MapControl加载三个加载数据的函数
加载数据到MapControl中,在IMapControl2下,我们可以看到有三个Add开头的函数,利用这三个函数,我们可以用普通的文件对话框加载ArcGIS支持的矢量,栅格,图层数据。比起AO提供的浏览GIS数据对话框,简单,快速,但是有一个缺点就是浏览数据时看到的物理的数据文件,不能像Catalog中看到数据的逻辑形式。

       上面是MapControl支持的三个加载数据的函数。下面我们利用这三个函数来完成图层文件,栅格数据和矢量数据到MapControl中的加载,之所以说是图层文件,没说图层数据,是区别于栅格和矢量数据的,因为图层文件(.lyr)本身没有数据,他只是真正的数据导出的一个文件,记录的数据源及其设置(符号颜色等)。

       1,利用AddLayer来加载图层文件

       m_mapCtrlMain.AddLayerFromFile(szPathName, 0);

       其中CMapCtrl m_mapCtrlMain是与MapControl绑定的控件变量;CString szPath.lyr图层文件的路径文件名。

       2,利用AddLayerFromFile加载栅格数据

       IRasterLayerPtr ipRasLyr(CLSID_RasterLayer); 

       _bstr_t bstrFile = szPathName.GetBuffer(szPathName.GetLength());

       BSTR BstrFile = bstrFile;

       ipRasLyr->CreateFromFilePath(BstrFile);

       m_mapCtrlMain.AddLayer(ipRasLyr, 0);

       其中,CString szPathName为栅格数据的路径文件名

       3,利用AddShapFile加载矢量数据

       m_mapCtrlMain.AddShapeFile(szPath, szFileName);

       其中CString szPath为路径名,CString szFileName为文件名

       如果把这三个函数集合到一起,做成一个通用的函数的加载数据的函数话,好么就是下面的

//参数列表:

szPath  ------路径

szFileName ---文件名

ImgFormat ----数据格式(见后面介绍)

void CImgShowView::AddImg(CString szPath, CString szFileName, ImgFormat Format)

{

      CString szPathName = szPath + "\\" + szFileName;

      if (Format == BMP || Format == IMG) { //还可以增加其他栅格类型

          IRasterLayerPtr ipRasLyr(CLSID_RasterLayer); 

          _bstr_t bstrFile = szPathName.GetBuffer(szPathName.GetLength());

          BSTR BstrFile = bstrFile;

          ipRasLyr->CreateFromFilePath(BstrFile);

          m_mapCtrlMain.AddLayer(ipRasLyr, 0);

     }

     else if (Format == SHP) {

         m_mapCtrlMain.AddShapeFile(szPath, szFileName);

     }

     else if (Format == LYR) {

          m_mapCtrlMain.AddLayerFromFile(szPathName, 0);

     }

     IActiveViewPtr ipActView = m_mapCtrlMain.GetActiveView();

     ipActView->Refresh();

}

enum ImgFormat //标志数据格式,当然数据格式自己还可以再加

{

     BMP,

     IMG,

     SHP,

     LYR

};

      京ICP备2025132830号-1 京公网安备 号