页面载入中....

页面载入中....

公告

页面载入中....

文章

评论

留言

连接

信息

登陆

搜索

2007-10-6 15:21:00
判断MapCtrl加载数据类型(栅?矢<点?线?面?>) 

    在MapControl中可以加载栅格图像和矢量数据,栅格数据里面包含的波段数据等特征,矢量类型又分点、线和面等,本文就是介绍怎么判断加载的数据类型,是栅格还是矢量,如果是矢量是点还线等。

首先判断栅格和矢量
IDatasetPtr ipDataset;
   ipGxDataset->get_Dataset(&ipDataset);//获得该对象的Dataset
   esriDatasetType dstType;
   ipDataset->get_Type(&dstType);
   ILayerPtr ipLayer;
   if (dstType == esriDTRasterDataset) //如果是栅格数据
   {
    IRasterLayerPtr ipRstLyr(CLSID_RasterLayer);
    IRasterDatasetPtr ipRstDst = ipDataset;
    ipRstLyr->CreateFromDataset(ipRstDst);
    ipRstLyr->put_Visible(VARIANT_TRUE);
    ipLayer = ipRstLyr;
    ISpatialReferencePtr ipSpaRef;    
    IGeoDatasetPtr ipGeoDst = ipRstLyr;
    ipGeoDst->get_SpatialReference(&ipSpaRef);
    m_pMapCtrl->SetRefSpatialReference(ipSpaRef);    
   }
   else if (dstType == esriDTFeatureClass) //如果是失量数据
   {
    IFeatureClassPtr ipFeatureClass(ipDataset);//接口查询;
    ipFeatureLayer->putref_FeatureClass(ipFeatureClass);    //将要素类放到要素层中        
    ipFeatureLayer->put_Visible(VARIANT_TRUE);//设置要素层的属性,是否可见;          
    ipLayer = ILayerPtr(ipFeatureLayer);//接口转换
   }
然后判断矢量的类型
esriGeometryType CMapInfoTool::GetLayerGeoType(ILayerPtr ipLyr)

 IFeatureLayerPtr ipFeaLyr = ipLyr;
 IFeatureClassPtr ipFeaClass;
 ipFeaLyr->get_FeatureClass(&ipFeaClass);
 esriGeometryType type;
 ipFeaClass->get_ShapeType(&type);
 
 return type;
}
当然最后可以得到中文的类型名
CString CMapInfoTool::GetGeoTypeName(esriGeometryType geoType)
{
 CString szTypeName = "";
 switch(geoType)
 {
 case esriGeometryPoint:     {
  szTypeName = "点";
  break;
           } 
 case esriGeometryPolyline:     {
  szTypeName = "线";
  break;
            }
 case esriGeometryPolygon:     { 
  szTypeName = "面";
  break;
            }
 case esriGeometryMultipoint:
  {
   szTypeName = "Multipoint";
   break;
  }
 case esriGeometryLine:
  {
   szTypeName = "Line";
   break;
  }
 case esriGeometryCircularArc:
  {
   szTypeName = "Arc";
   break;
  }
 case esriGeometryEllipticArc:
  {
   szTypeName = "EllipticArc";
   break;
   
  }
 case esriGeometryEnvelope:
  {
   szTypeName = "Enavelope";
   break;
  }
 default:
  {
   break;
   szTypeName = "Other";
  }     
 }
 return szTypeName;
}


  • 标签:数据类型 栅格 矢量 
  • 发表评论:

      大名:
      密码: (游客无须输入密码)
      主页:
      标题:
      页面载入中....
    Powered by Oblog.