中国地图
GIS探索者
地图网
GIS论坛
网站首页| GIS论坛 |新闻动态 | 技术专栏 | GIS书籍 | 资源下载 | 求职招聘 | 研究生考试 | GIS博客 | GIS空间站
欢迎光临GIS空间站!   网站地图
  专栏导航:| ArcGIS | MapInfo | TopMap | 地理信息 | 遥感 | GPS | 测绘 | WebGIS | LBS | 前沿 | 数据库 | 开发 | 行业应用
  推荐栏目:| AO开发 | 业界动态 | GIS资源 | 招聘信息 | 求职简历 | 共享软件 | 电子书籍 | 研究生考题 | 电子期刊 | GIS论文
您现在的位置: GIS空间站 >> 技术专栏 >> ArcGIS >> AO开发 >> 文章正文

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

作者:3S_Studi…    文章来源:本站原创    点击数:    更新时间:2007-9-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
};

文章录入:wzj3sstudio    责任编辑:3S_Studio  发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
■■相 关 图 书:
■■相 关 文 章:
没有相关文章
  • 上一篇文章:

  • 下一篇文章:
  •  
    GIS博客精华
    TopMap下载
    热点文章
    热门资源
     
    关于我们 | 联系我们 | 广告服务 | 友情链接 | 申请链接 | 合作联盟 | 诚聘英才
      GIS空间站(GISSky.Net)版权所有 站长:兔八哥