3S基础知识:VC6.0+MapX编程总结

  一、MapX的帮助

  MapX的官方帮助文档是《MapX在线帮助》。

  个人认为,这套文档过于简单,系统性偏差,与ArcEngine的帮助文档不可比。很多MapX的开发技巧在《MapX在线帮助》中查找不到,只能在互联网上搜索。

  本文试图从一个程序员的视角展开,来整理一下MapX的开发技巧。需要强调的是,VB+MapX模式是在《MapX在线帮助》中重点描述内容,本文将侧重于VC+MapX。

  二、MapX的对象组织

  MapInfo作为地图编辑平台,需要解决一个核心问题: 如何组织地理世界的空间数据和属性数据,以及如何在电脑屏幕上绘制出来。MapX作为二次开发控件,其对象组织结构将直接体现MapInfo对于地理世界的理解。

  在阅读本文的同时,请读者打开《MapX在线帮助》,定位到“The MapX Objects”=〉“Intro - The MapX Objects”。注意:《MapX在线帮助》是安装MapX后的帮助文档,比如我安装了MapX4.0,那么通过“开始”=〉“程序”=〉“MapInfo MapX 4.0”可以打开《MapX在线帮助》。

  这里是MapX的对象结构图(OMD),ArcEngine的帮助文档也有类似的图。学习二次开发,需要熟悉这张图。这样能“一览众山小”,心里有谱,知道如何下手去搜索对象。

  从图中可以发现,OMD有两条核心主线。一条是用于表达空间数据的Layers->Layer->Feature->Parts等对象系列;另一条是用于表达属性数据的Datasets->Dataset->Fields->Field等对象系列。

  

3S基础知识:VC6.0+MapX编程总结_第1张图片

  这两条对象系列是MapInfo的精华所在。其他对象诸如注记、专题、查询等对象都是在两条主线上衍生出来的支线。有能力的读者,如果想从底层写一个地图编辑平台,也可以借鉴此OMD来组织自己的程序数据结构。

  在上一篇文章中,大致描述了MapX的帮助文档以及MapX的体系结构。那么,接下来,我们开始VC6.0 + MapX之旅。

  一、准备工作

  开发前,需要安装Visual Studio 6和MapX,以及搭建测试环境。

  测试环境并不是指程序员进行开发的计算机软件环境,这种环境只能进行单元测试,最理想的测试环境应该是尽可能的模仿用户使用环境。什么是用户环境?有一点可以肯定,用户环境不会安装Visual Studio 6。

  如果没有条件购置第二台电脑搭建测试环境,可以使用虚拟机(比如VMWare等)工具在本机安装双系统,甚至是多系统。

  

3S基础知识:VC6.0+MapX编程总结_第2张图片

  二、在VC6工程中创建MapX Control

  在MapX的帮助文档《MapX在线帮助》中,已经很详尽的描述创建的方法。具体位置:

  1、“开始”=〉“程序”=〉“MapInfo MapX 4.0”可以打开《MapX在线帮助》。

  2、“The MapX User Guide”=〉“Working With Visual C++”=〉“Create a MapX Control Using C++”。

  OK。按照上面的操作,您就已经开始了丰富多彩的MapX开发之旅。

  不过,需要注意两点。

  1、如何将MAPX.H/MAPX.CPP添加进VC6工程?很简单,从例程中找到这两个文件,然后复制到自己的工程目录就可以。而不要使用VC6中安装组建和控件的方法添加(菜单:“project”=>“Add To Project”=>“Components and Controls”)。

  2、按照默认的方法创建的工程在编译运行后,会自动打开一个gst地图。如果想让程序运行时不显示任何地图数据,需要将gst清空,方法如下:

  int CMapxSampleView::OnCreate(LPCREATESTRUCT lpCreateStruct)

  {

  if (CView::OnCreate(lpCreateStruct) == -1)

  return -1;

  //创建mapx控件

  CRect rc(0,0,100,100);

  if( !m_ctrlMapX.Create(NULL, WS_VISIBLE, rc, this, IDC_MAP) )

  return -1;

  //清空 gst 地图

  m_ctrlMapX.SetGeoSet("");

  return 0;

你可能感兴趣的:(ArcGIS教程,遥感)