最新第5.1讲 组件式GIS二次开发关键技术讲学课件

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

// status line indicator
• 设置地图控件大小
• void CMyMapView::OnSize(UINT nType, int cx, int cy)
•{

int nBorderSize = 1;

CFormView::OnSize(nType, cx, cy);


// TODO: Add your message handler code here
m_ctrlMap.SetMousePointer(53);
•}
• void CMyMapView::OnViewZoomin()
•{

// TODO: Add your command handler code here

m_eCurView = eViewZoomIn;

m_ctrlMap.SetMousePointer(51);
•}
• void CMyMapView::OnViewZoomout()
•{

// TODO: Add your command handler code here

m_eCurView = eViewZoomOut;

m_ctrlMap.SetMousePointer(52);
•}
• void CMyMapView::OnOnMouseDownMapcontrol(long button, long shift,

m_ctrlMap.SetExtent(ipCurExt);

m_ctrlMap.UpdateWindow();

}

break;

case eViewZoomIn:

m_ctrlMap.SetExtent(m_ctrlMap.TrackRectangle());

break;

case eViewPan:

}
•}
VC++中使用ArcGIS控件
• 建立各控件的关联
– //设置同伴控件buddy control – m_ctrlToolbar.SetBuddyControl(m_ctrl
Map.GetObject()); – m_ctrlTOC.SetBuddyControl(m_ctrlMa
p.GetObject());
第二节 地图表现
• 地图浏览 • 图层渲染 • 显示注记
第二节 地图表现
• 地图可视化揭示的空间联系:
– 哪些特征与其他特征连接; – 哪些特征与其他特征毗邻; – 哪些特征包含在一个面中; – 哪些特征相交; – 哪些特征在其他特征附近; – 特征高程上的差异; – 特征间的相对位置。
第二节 地图表现

if(m_ctrlMap.GetSafeHwnd() != NULL)

{

m_ctrlToolbar.MoveWindow(nBorderSize,

nBorderSize,

cx-2*nBorderSize,

20);

m_ctrlTOC.MoveWindow(nBorderSize,

20+2*nBorderSize,
第5.1讲 组件式GIS二次开发 关键技术
主要内容
• ArcGIS控件 • 地图表现 • 数据操作 • 地图编辑 • 地图分析
VC++中使用ArcGIS控件
1. 添加控件 2. 设置控件
VC++中使用ArcGIS控件
VC++中使用ArcGIS控件
3. 添加成员变量
VC++中使用ArcGIS控件

int(cx*0.4),

cy-3*nBorderSize-20);

m_ctrlMap.MoveWindow((int(cx*0.4))+(2*nBorderSize),

20+2*nBorderSize,

((int)(0.6*cx))-(3*nBorderSize),

cy-20-3*nBorderSize);
• ArcGIS提供数据视图(Data View)与页 面视图(Layout View)两种地图表现方式, 地图的这两个视图都应该提供相应的浏 览工具。
实现基本的浏览功能
• 1. 添加资源
• 2. 添加枚举型成员变量
– enum BROWSERTASK
–{

eViewUndefined,

eViewZoomIn,

m_ctrlMap.SetExtent(m_ctrlMap.GetFullExtent());
•}
• void CMyMapView::OnViewPan()
•{

来自百度文库
// TODO: Add your command handler code here

m_eCurView = eViewPan;


m_ctrlMap.Pan();

break;

default: break;

}
•}
实时地图坐标显示
• 1. 添加状态指示窗格
– static UINT indicators[] =
–{
– ID_SEPARATOR,
// status line indicator
– ID_SEPARATOR,

long x, long y, double mapX, double mapY)
•{

switch(m_eCurView)
{

case eViewZoomOut:
{

IEnvelopePtr
ipCurExt;

ipCurExt = m_ctrlMap.GetExtent();

ipCurExt->Expand(1.5,1.5,VARIANT_TRUE);
• 地图能做什么?
– 识别在某个位置有某物 – 定位你在何处 – 识别分布、关系不易看清的趋势 – 将各种来源的数据集成到一个公共的地理参考中 – 通过组合和叠置数据来解决空间问题 – 找到一地到另一地的最佳路径 – 对未来的事件进行建模
第二节 地图表现——地图 浏览
• 地图浏览包括漫游、缩放、全图显示、 显示前一视图、显示后一视图等,是包 括一个图形系统的最基本的功能。

eViewZoomOut,

eViewPan
– } m_eCurView;
实现基本的浏览功能
3. 创建事件处理函数
4. 添加浏览功能函数
实现基本的浏览功能
• void CMyMapView::OnViewFullview()
•{

// TODO: Add your command handler code here
相关文档
最新文档