用VC进行简单的GIS编程

组件式GIS采用标准的组件技术,并支持了目前流行的编程语言如VC、C#、delphi等开发平台,使开发者省去了学习专门的GIS开发语言,使开发更简单。

我最近在用VC6.0进行GIS开发,具体的GIS开发平台是北京超图地理信息技术有限公司(http://www.supermap.com.cn)提供SuperMap Object。

首先,创建一个基于对话框的MFC应用程序,命名为Map,保持默认选项。

然后,添加SuperMap控件到工程中,先在project菜单中选择add to project中的Components and Controls,把Register ActiveX controls文件夹中的SuperMap Control 和SuperWorkspace Control加入工程中,并把两个控件加入对话框中,并适当调整SuperMap控件。

现在为SuperMap Control 和SuperWorkspace Control控件添加变量分别为m_SuperMap和m_SuperWorkspace。接着在初始化对话框的函数中(return TRUE之前)加入如下代码:

//打开地图并显示
CsoDataSource objDataSource;
CsoDatasets objDataSets;
long Index;
//建立工作空间及数据源的联系
m_SuperMap.Connect(m_SuperWorkspace.GetHandle ());
//打开数据源
objDataSource=m_SuperWorkspace.OpenDataSource("C://MyProject//world.sdb","world",0,false); 

if (! objDataSource) 
{
   MessageBox("打开数据源出错!");
   exit(0);
}
//获得数据集
objDataSets=objDataSource.GetDatasets();
//添加图层
for (Index=1;Index<=objDataSets.GetCount();Index++) 
{
   m_SuperMap.GetLayers().AddDataset(objDataSets.GetItem(COleVariant(Index)),false);
}
//刷新,显示
m_SuperMap.Refresh();

其中OpenDataSource("C://MyProject//world.sdb","world",0,false)中的第一个字符串为数据源文件全路径名,第二个为数据源别名,第三个为数据源引擎类型 ,第四个为是否只读。AddDataset的第一个参数为要添加的数据集对象,第二个参数表示是否将数据集添加到 SuperMap 的最顶层。True 表示添加到最顶层;False 表示添加到最底层 。

添加完上面的代码,编译执行就可见到你幅世界地图显示在对话框中。

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 0
    评论
如果您在此处下载压缩包,还要请您联系作者邮箱:cnaulee@gmail.com =========================== 综述: VC++通GIS功能开发解决方案》源代码是基于VC++6.0 MFC 类库,在Win2000平台上开发。界面部分到了较低版本 CJ60Lib 开放源码库,户可自行替换高版本或其他界面库,它不作为本方案商业部分。 《VC++通GIS功能开发解决方案》源代码是迄今为止公开提供最全面、最完善开发GIS产品一套基础解决方案。它界面十分友好和具人性化,它传承了“VC++界面一揽子解决方案”(http://summerplq.51.net)最具经典界面个性,并融合了该产品自身特有亮点。它功能部分解决了GIS开发诸多普遍问题和关键技术(如数据结构,地图显示,基于DEM地形分析等),可适于城市规划、地质勘探、土地丈量、水利枢纽、农田建设,乃至其他构建于城市图和地形图之上GIS类软件开发。可以说,它基本功能方面已相当成熟。 《VC++通GIS功能开发解决方案》是一套内容十分丰富“教科书”,相对应于各个编程程序员来说都有合适学习内容。源程序条理清晰,模块化设计,普遍采注释,对于入门和初级程序员来说,可以拆分支解开来学习;对于开发级程序员来说,它提供了丰富功能实现,省却了您金钱和时间浪费;作为专业级程序员来说,或许你可以从中找到另一条安全、快捷编程思路,从而解决你在诸如方案设计,数据构建,分析实现上困惑。 目前1.0版本:不带数据库,不带查询功能,不带投影变换功能。 方案内容: ============================================ 一、户界面和控制 ------------------------------------ 1、实现全彩启动画面,令你程序增色不少; 2、实现软件启动口令设置。积作者多年经验完善而成,口令加密技术先进; 3、实现全屏功能,通过TAB键方便地互相切换; 4、实现人性菜单按钮,有工具栏纹理、文字、菜单图标,以及右键菜单功能; 5、实现视图窗口位图背景; 6、实现状态栏信息功能,显示坐标和高程; 7、实现对话框按钮个性化,平面加图标,自己琢磨还有更多效果; 8、实现发送邮件和访问主页功能; 9、实现真彩位图,图标,光标大应,你可以在软件中发现大量真彩技术; 10、实现树目录复选图标,彻底解放图层控制。 ! 更多细节请参考“VC++界面一揽子解决方案”3.0v(http://summerplq.51.net) 二、功能实现部分 -------------------------------- 1、数据格式公开透明,这在源代码中是显而易见。数据源还可以通过Mapinfo中间格式转换过来!一旦你有了源代码,自己就可以编写出该转换软件,当然也可以购买我们提供该软件。 2、地图显示(显示、漫游、放大、缩小)。 # 地图显示方式采了图层控制技术,让你点击树目录中“小眼睛”就可以方便地实现图层开关显示。操作时图形不闪烁,结合“存档”功能,你还能保存你设置! # 漫游采无边际方式,任意漫游!同时结合“存档”功能,保存地图显示位置! # “放大”和“缩小”都同时采两种方式:定点缩放和拉框缩放!拉框缩放采了光栅绘图模式,效果自然漂亮! 3、九大GIS分析功能(基于DEM) #量算多点距离#计算线段最大坡度#计算区域面积#计算区域高程#两点通视#中心通视# #区域坡度图#断面图#区域通行分析 全部分析采实时数据显示(操作同时显示结果)技术,配以最后结果显示。 几点说明: ============================================= 1、考虑到数据量大小问题,本方案只带了一幅示例数据,但已经足够!又由于该样图来自于原来四幅图中,而本方案所引擎文件也没有作相应改变,所以点程序中“全图”功能后,该幅图只占了客户区一角,而不是将该幅图放满客户区。这不影响其它任何操作,不是程序有问题。 2、本程序不提供更多数据!但我们提供将Mapinfo中间格式数据(即.mif格式)转换到本程序数据格式软件。所以说,您做城市图也可以放进来。 3、本程序所符号库(所谓符号库,即指地图中点、线、面符号;如高程点,道路,植被等。)采了封装动态链接库DLL_study4R.dll,主要是因为该符号库是商业符号库(欲知其详细内容,请留意本人主页日后将刊登介绍,大体上它包括了所有地形图符号以及城市图符号(如教育机构符号等))。 4、本程序由于CJ60Lib库版本问题而不适合.NET平台,但不是本程序自身问题!户可以替换掉CJ60Lib库改支持.NET版本或其他界面库,或者索性弃!这不影响程序其他实质部分。 5、补充:今后将推出基于DEM数据生成三维图功能(将作为单独模块提供)。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论

打赏作者

fiolee

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值