GIS足迹

用地图装点生活的每个角落。MSN:gisfoot@hotmail.com。QQ交流群:42019368。

« VC6.0+ArcGIS二次开发----用ARC ENGINE读取ACCESS表VC6.0+ArcGIS二次开发------将IFEATURECLASS添加进IMAP »
2007-10-8 8:40:20 | 发布:爬山虎 | 分类:二次开发 | 评论:0 | 引用:0 | 浏览:

VC6.0+ArcGIS二次开发----要素的定位与选择

 //**************************************************
       版权所有,转载请保留作者信息。
//------------------------------------------------------------------
 
       名    称:VC6.0+ArcGIS二次开发----要素的定位与选择
       作    者:www.gisfoot.com
       MSN:   gisfoot@hotmail.com
       时    间:2007-10-8 周一
//**************************************************
在地图操作中经常要定位地图,ARC ENGINE提供了定位的方法:ipActiveView->put_Extent(ipEnvelope)。选择的方法由Imapcontrol提供。
但是,问题围绕在如何获得ipEnvelope指针展开。ipEnvelope可以通过若干方法获得,其效率效果不一。
 
方法一:
       获取要素的外截矩形定位,通过要素本身选择。
 
ipMap->SelectFeature( ipFeatLayer ,ipFeatureOne );
 
ipFeatureOne->get_Shape( &ipFtOneGeo );
              ipFtOneGeo->get_Envelope(&ipEnvelope);
             
              if(ipEnvelope != NULL)
              {
                     //加宽
                     hr = ipEnvelope->Expand( 5,5,VARIANT_TRUE );
                    
                     //移动屏幕
                     hr = ipActiveView->put_Extent( ipEnvelope );
              }
 
方法二:
       获取要素的中心定位,通过要素的形状选择。
 
       //中心定位
       ipFeatureOne->get_Shape(&ipGeometry);
       if(ipGeometry != NULL)
       {
              ipMap->SelectByShape( ipGeometry,NULL,VARIANT_FALSE );
             
              ipGeometry->get_Envelope(&ipEnvelope);
             
              //加宽
              ipEnvelope->Expand( 1.5,1.5,TRUE );
             
              ipArea = ipEnvelope;
              ipArea->get_Centroid(&centerPoint);
              ipMapCtrl->CenterAt(centerPoint);
             
             
              ipActiveView->put_Extent(ipEnvelope);
       }

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

最新评论及回复

友情链接

[Top] Powered By Z-Blog 1.8 Devo Build 80201. Theme FormerDays Design By haphic

ICP备案号正在申请。Copyright ©2008 gis足迹. All Rights Reserved.