MapWinGIS编程(一)

         最近用了MapWinGIS做了一个项目,把在开发中使用到的东西分享一下吧。MapWinGIS 是一个基于微软的COM思想编写的相当高效的地图引擎,放大、缩小、漫游速度很快。系统来说,MapWinGis 是一套类似于AO的二次开发组件库(只是没有AO那么强大),其核心库是一个名字为MapWinGIS的 ActiveX控件,MapwinGIS.ocx注册到VS中即可使用,在这里,我使用的是VS2010+C#进行开发。MapWinGIS的相关操作可以查看点击打开链接。

         在实际开发中Shp文件的使用时比较多的,先来介绍一下关于Shp文件与MapWinGIS控件本身的相关操作。

         1.定义shp图层变量与代表shp标识的索引,由于对于Shp的操作很多是用索引来进行操作。

     public  MapWinGIS.Shapefile shp = new MapWinGIS.Shapefile();
     public  int hndshp=-1;
          定义一个Shapefile类型的变量进行操作shp,再定义一个hndshp来作为shp问文件的索引,默认从0开始,如果没有加载该shp索引为0,加载之后shp的索引也为0,这样就不太好进行区分是否加载了该shp,这里可以把shp文件的索引定义为-1,加载后索引为0,如果移除该shp,再手动设置shp为-1,这样就能很容易判断shp的加载状态

       2.加载shp文件到MapWinGIS控件 

          MapWinGIS控件名字为axMap,首先读取shp的存储路径,如果不存在则返回,存在shp文件则打开该shp文件然后加载。

      string SHPPath = Path.Combine(Application.StartupPath, @"shp\Shp.shp");
            if (!System.IO.File.Exists(SHPPath))
                return;
      shp.Open(SHPPath);
      hndshp = axMap.AddLayer(shp, true);
      3. MapWinGIS控件的放大,缩小,平移,全图等操作。

         上述操作均是对MapWinGIS控件的操作,注意与Shp的操作区分开来, MapWinGIS控件名字为axMap。

         放大操作:

    axMap1.CursorMode = MapWinGIS.tkCursorMode.cmZoomIn;
         缩小操作:       

    axMap.CursorMode = MapWinGIS.tkCursorMode.cmZoomOut;
        平移操作:

    axMap.CursorMode = MapWinGIS.tkCursorMode.cmPan;
        恢复全图操作:

    axMap.ZoomToMaxExtents();
      4 .shp图层的放置与显隐

      在实际操作过程中,MapWinGIS控件往往不止放置一个shp文件,比如说放置一副tif影像文件和一个shp文件,如果随意放置可能会出现shp文件被影像遮挡的现象,这里就需要对MapWinGIS多个图层进行位置的放置。多个图层放在MapWinGIS控件中,可能只需要观察某一些图层,隐藏掉其他图层,这时需要控制显影。

      放置图层首先要获取图层的位置,这里就需要对MapWinGIS中的图层索引进行操作了,比如现在有一张shp文件和一副tif文件。

    int position = axMap.get_LayerPosition(hndshp);
    获取到图层位置后,可以选择放置在底部还是顶部:  

   axMap.MoveLayerBottom(position);
   axMap.MoveLayerTop(position);

      控制图层显影: 
 

   axMap.set_LayerVisible(hndshp, true);
   axMap.set_LayerVisible(hndshp, false);


 
 








     








         

        

         

         




你可能感兴趣的:(MapWinGIS编程(一))