麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

ArcGIS三维入门(6-7)ArcGIS三维C/S开发一体化

构建系统人们常常希望在一个系统中能够同时包含二维和三维 GIS 的功能,能够实现二三维联动。利用ArcGIS Engine 提供的二维控件MapContronl 和三维控件GlobeControl能够快速实现二三维联动。三维显示组件与二维显示组件可以集成使用,可以共享同一个工作空间和数据库连接,基于相同的数据集,既可以二维显示,也可以三维显示;使用空间分析组件,其分析的结果,既可以在二维组件显示,也可以在三维组件显示;二三维联动演示,如图

核心实现代码:

#region  维向二维同步代码
void m_pGlobeDisplayEvents_AfterDraw( ESRI.ArcGIS.Analyst3D.ISceneViewer pViewer )
{
  m_globeViewUtil.QueryVisibleGeographicExtent( m_pCurMapExt );
  if ( m_pCurMapExt == null )
  {
    return;
  }
  /* 'Obtain the locations of the observer and target of the camera */
  IPoint    ObsPoint    = null;
  IPoint    TgtPoint    = null;
  GetObserverTarget( out ObsPoint, out TgtPoint );

  /* //缩小范围 */
  m_pCurMapExt.CenterAt( TgtPoint );
  m_MapActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds = m_pCurMapExt;

  m_MapActiveView.PartialRefresh( esriViewDrawPhase.esriViewGeography, null, null );
}


void GetObserverTarget( out IPoint ObsPoint, out IPoint TgtPoint )
{
  /* Obtain the locations of the observer and target of the camera */
  ObsPoint = null;             TgtPoint = null;
  if ( m_GlobeDisplay == null )
    return;
  if ( m_GlobeDisplay.ActiveViewer == null )
    return;
  IGlobeCamera  pGlobeCamera = m_GlobeDisplay.ActiveViewer.Camera as IGlobeCamera;
  double        obsLat, obsLon, obsAltKms;
  pGlobeCamera.GetObserverLatLonAlt( out obsLat, out obsLon, out obsAltKms );
  double tgtLat, tgtLon, tgtAltKms;
  pGlobeCamera.GetTargetLatLonAlt( out tgtLat, out tgtLon, out tgtAltKms );
  ObsPoint  = new ESRI.ArcGIS.Geometry.Point();             IZAware pZAware = ObsPoint as IZAware;
  pZAware.ZAware    = true;
  ObsPoint.PutCoords( obsLon, obsLat );
  ObsPoint.Z = obsAltKms;

  TgtPoint  = new ESRI.ArcGIS.Geometry.Point();
  pZAware       = TgtPoint as IZAware;
  pZAware.ZAware    = true;
  TgtPoint.PutCoords( tgtLon, tgtLat );
  TgtPoint.Z = tgtAltKms;
}


#endregion
#region 二维向三维同步代码

void m_pActiveViewEvents_AfterDraw( ESRI.ArcGIS.Display.IDisplay Display, esriViewDrawPhase phase )
{
  IActiveView pActiveView = m_Globe as IActiveView;

  pActiveView.Extent = m_MapActiveView.ScreenDisplay.DisplayTransformation.VisibleBounds;
  pActiveView.Refresh();
}


#endregion

ArcGIS C/S 开发一体化的优势:

无缝二三维开发体系,系统开发集成更加方便,有助于开发出更加面向业务需求的应用系统。

手册目录

本手册的全部内容: ArcGIS三维入门手册

相关阅读

麻辣GIS-Christina

作者:

地理小学生。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)