|
|
|
|

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

AddLayer Adds a layer to the Map's collection of layers at the specified index position. AddLayerFromFile Loads a layer file and adds it to the Map's collection of layers at the specified index position. AddShapeFil...

作者:3S_Studio来源:本站原创|2007年09月25日

Method AddLayer Adds a layer to the Map's collection of layers at the specified index position.
Method AddLayerFromFile Loads a layer file and adds it to the Map's collection of layers at the specified index position.
Method AddShapeFile Adds a shapefile as a layer to the Map.

上面是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
};

上一篇:ArcGIS Engine标准培训教程

下一篇:用灰度矩阵在AO中生成单波段栅格图像