最新第5.1讲 组件式GIS二次开发关键技术讲学课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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