基于开源QGIS源码编译的二次开发方法的探究
基于GIS的集成二次开发

第18卷第2期2000年6月北京轻工业学院学报JOU RNAL O F BE I J I N G I N ST ITU T E O F L IGH T I NDU STR Y V o l 118N o 12Jun 12000 文章编号:100127429(2000)022*******基于G IS 的集成二次开发文远保, 杜亚辉(华中理工大学计算机学院,武汉 430074)摘 要 介绍了G IS 的集成二次开发技术,并指出这种方式正成为应用型G IS 开发的主流方向,最后对Pow er B u ilder 采用OL E A u tom ati on 技术进行M ap info 集成开发进行了具体讨论Λ关键词 地理信息系统;集成二次开发;对象链接与嵌入自动化技术;桌面地图信息系统中图分类号 T P 31115;P 208 文献标识码 A收稿日期:20000302地理信息系统G IS (Geograp h ic Info r m ati on System )起源于20世纪60年代末期,它是由地理学、制图学、遥感与摄影测量学、计算机CAD 技术、数据库技术等学科和技术综合发展而来的,其研究对象是各种具有空间地理特征的空间数据[1]ΛG IS 广泛应用于与自然界有关的领域和行业,随着G IS 应用需求的增加,应用G IS 的开发工作日显重要Λ利用开发工具充分发挥G IS 的功能也成为今后信息系统评价的一个方面[2],因此如何针对不同的应用目标高效地开发出既合乎需要、又具有方便美观界面的应用型G IS 成为开发人员普遍关心的问题Λ1 集成二次开发技术111 技术简介集成二次开发是指以通用编程软件尤其是面向对象的可视化开发工具(如PB 、V isual C ++、V isual B asic 、D elph i 等)为开发平台,利用G IS 工具软件(如A rc V iew ,M ap info 等)实现G IS 基本功能Λ集成二次开发既可以充分利用可视化软件开发工具的高效方便的编程功能,又可以充分利用G IS 工具软件完备的空间数据可视化分析处理功能,集二者之所长,不仅能大大提高应用系统的开发效率,而且使用面向对象的可视化软件开发出来的应用程序具有良好的外观、完善的功能、可靠性好、便于维护等优点,现已成为应用型G IS 开发的主流Λ集成二次开发分两种方式:1)利用G IS 工具软件生产厂家提供的建立在OCX 技术基础上的G IS 功能组件(如ESR I 公司的M apob jects ,M ap info 公司的M apX 等),在PB 等编程04北京轻工业学院学报2000年6月 工具编制的应用程序中直接将OCX控件嵌入,通过编程将其中的G IS功能发挥出来ΛOCX 技术的方便快捷性,使之成为今后集成的方向;2)利用DD E技术或采用OL E A u tom ati on (OL E自动化)技术,用PB等编程工具开发出前台可执行应用程序,以DD E方式或OL E自动化方式启动G IS工具软件在后台运行,实现应用程序中的G IS功能[1]Λ1.2 术语解释DD E(D ynam ic D ata Exchange—动态数据交换),主要是一个发送消息和接收消息的机制,使得应用程序之间能够实现共享数据、在远端执行命令以及检查错误状态等功能ΛOL E(O b ject L ink ing and Em beding),意为对象链接与嵌入Λ是在DD E的基础上建立的,提供了一种使W indow s应用程序之间共享数据和程序的机制Λ现在OL E是一个标准的组件集成和服务体系结构,OL E技术是目前非常流行的一种技术ΛOCX(OL E Cu stom Con tro l),名为OL E定制控件Λ它一般是生产厂家根据普遍需求,特意制作的能实现一定功能的组件,它能够提供某些处理的服务器程序,符合OL E标准Λ实际上,OCX功能组件也是一种OL E技术,在进行集成开发时,也采用OL E自动化技术ΛM ap info 公司提供的M apX就是一个功能强大的OCX组件,为用户提供了完整的地图信息系统解决方案ΛOL E A u tom ati on—OL E自动化,即对象链接与嵌入自动化技术,是指通过编程来使一个OL E服务器应用程序自动修改它的OL E对象Λ1.3 技术说明1)使用W indow s平台Λ只有W indow s平台才支持DD E和OL E技术,在W indow s平台上,PB和M ap info完全支持DD E和OL E这两个机制ΛOL E自动化技术与DD E技术相比,响应速度更快,并且能够更好提供错误信息报告,随着其技术的更加完善,已越来越得到普及应用,提倡应用OL E自动化技术进行开发Λ主要介绍采用OL E自动化技术进行M ap info p rofessi onal(桌面地图信息系统平台,以下简称M ap info)的集成二次开发Λ2)理解OL E自动化技术Λ通常OL E技术,在应用程序窗口中(如W ORD)放入可插入控件(In sertab le con tro l,如BM P图象控件),双击它激活控件服务器,在服务器窗口进行对象编辑Λ它需要用户除了应用程序(如W ORD)之外,还要对其它的服务器(如BM P绘图程序)的功能操作有一定了解,增加用户负担Λ如果通过OL E自动化技术,对OL E对象变量(如OL Eob ject,PB为OL E进行自动化设计的对象类型)编程,引用存储在OL Eob ject变量中的对象进行自动化控制,OL E服务器对前台应用程序的要求在后台响应自动完成,用户就可以不用直接介入服务器的操作ΛG IS开发工具平台本身的复杂性对用户有一定要求,易使非专业用户望而却步,将其通过OL E自动化技术转换成可被用户接收的、易操作的应用系统也是集成开发的初衷Λ3)区别OL E服务器提供的OL E对象ΛM ap info提供的OL E对象有可插入的可视控件(M ap info M ap,地图控件)和不可视可编程对象(OL P,OL E p rogramm ab le ob ject)——M ap info A pp licati onΛM ap info M ap控件对应的服务器只是M ap info中的地图服务器,不是开发工具平台Λ地图控件只能使用的部分特性来创建、显示和编辑地图,不是所有的M ap info 功能都可以在地图嵌入范围内使用Λ进行M ap info 集成二次开发,是指利用M ap info A pp licati on 对象进行集成开发来实现G IS 功能Λ2 集成二次开发的实施进行开发,应该在熟悉软件工程设计思想的基础上,采用科学的开发步骤和技术[1]Λ2.1 选好开发工具面向对象开发工具Pow er B u ilder (PB )是目前最有代表性的数据库前端开发工具之一,受到从事管理信息系统(M IS )和数据库应用系统开发人员的欢迎ΛPB 可以使开发人员的工作速度更快,成本更低,质量更高,功能更强ΛM ap info 公司的M ap info P rofessi onal 产品则是目前世界上最为完备、功能强大、全面而直观的桌面地图信息系统Λ它复杂而深层次的可视化地理分析功能,可以帮助用户在不同的数据之间建立关联,从地理学的角度来获取商业信息Λ二者的结合,既可以大大提高开发效率,又能从外观、速度和G IS 功能等方面使信息系统更加完善Λ2.2 掌握开发技术集成二次开发主要技术关键有两个:一是M ap info 的OL E 对象实例的创建;二是M ap info 功能在PB 环境下本地化,利用M ap info OL E 服务器提供的方法实现G IS 功能Λ为此,应掌握以下技术:1)熟悉开发工具Λ应熟悉PB 中OL E 对象实例的处理及编程实现方法,了解M ap info 平台应用,注意运用M ap info 为方便用户而附带的一些功能,如数据库管理、报表统计分析等Λ在编程时,这些功能可直接在应用系统上通过简单的语句调用,简化开发过程Λ2)将M ap info 集成进其它应用程序中,应了解M ap basic 语句和函数ΛM apbasic 语言提供了M ap info 与其它应用程序的接口功能,详细可参考M ap basic 手册Λ其中最关键的是:由Set A pp licati on W indow (设置M ap info 父窗口)和Set N ex t Docum en t (设置M ap 窗的父窗口,如将地图窗口作为客户程序的子窗口)实现与M ap info 的对话、运行环境Λ3)了解M ap info 为支持OL E 自动化而设计的指令集ΛM ap info 提供的指令主要有:Do (string )(将字符串转换为M ap basic 语句并执行),Eval (string )(将字符串转换为M apbasic 表达式,并且返回表达式的值),R un M enuComm and (m enu id )(执行M ap info 菜单或按钮命令)等Λ开发者可以在PB 的B row ser 工具中查看到完整的M ap info 服务器的属性和方法Λ4)熟悉OL E 自动化实现方法ΛPB 实现OL E 自动化的步骤可以在一个事件脚本中完成,也可以由窗口中的几个控件的活动组成Λ如果需要在所开发的应用程序中让用户参与自动化,可以:1)在窗口声明中声明一个OL E 对象实例变量;2)在窗口的Open 事件中初始化所声明的变量并与服务器连接;3)把用户的要求以命令的形式发给服务器;4)在窗口的C lo se 事件中关闭与服务器的连接并清除这个OL E 对象[3]Λ14 第18卷第2期文远保等:基于G IS 的集成二次开发24北京轻工业学院学报2000年6月 3 开发实例按照OL E自动化的步骤,将地图集成在窗口中,能显示运行中的错误信息Λ声明全局变量:M ap info出错信息变量String M IE rro r M essage创建OL Eob ject对象OL Eob ject M I OL Eob ject在窗口w2m ain的Op en事件脚本中:声明局部变量:应用程序与M ap info服务器连接时返回的信息变量In teger E rrCodeString M sgtom i为OL Eob ject变量分配空间M I OL Eob ject=C reate OL Eob ject与M ap info服务器应用程序连接,并检查连接是否成功E rrCode=M I OL Eob ject.Connecttonew ob ject("M ap info.A pp licati on")If E rrCode<>0T hen M essageBox("Fatal E rro r","E rro r connecting to the m ap server.Ex iting...") H altE lse将当前窗口作为M ap info的对话框父窗口M sgtom i="Set A pp licati on W indow"+String(H andle(th is))M I OL Eob ject.Do(M sgtom i)打开要显示的地图的表文件M sgtom i=′Op en T ab le"′+"C: M ap Infom ati on data w o rld "+′w o rld.tab"′+" In teractive"M I OL Eob ject.Do(M sgtom i)用P ictu re控件(P2m ap)作为显示地图的容器M sgtom i="Set N ex t Docum en t Paren t"+String(H andle(P2m ap))+"Style1"M I OL Eob ject.Do(M sgtom i)显示地图M sgtom i="M ap from w o rld"M I OL Eob ject.Do(M sgtom i)可以按照用户的习惯,移走M ap info默认的地图上单击鼠标右键的快捷菜单M I OL EO b ject.A pp licati on.Do(′C reate M enu"M app erSho rtcu t"I D17as"(2"′)在应用程序的System E rro r 事件脚本中:提交从M ap info 中获得的错误信息,并显示错误信息.M IE rro r M essage =M I OL Eob ject .L astE rro r M essageIf M IE rro r M essage <>""T henM essageBox ("M ap Info E rro r ",M IE rro r M essage )End If在应用程序的C lo se 事件脚本中:关闭与服务器应用程序的连接并清除OL Eob ject 变量ΛM I OL Eob ject .D isconnectO b ject ()D estroy M I OL Eob ject在应用程序的Open 事件脚本中:打开窗口w 2m ainOp en (w 2m ain )以上程序在PB 615,M ap info P rofessi onal 410,W in 98平台上测试通过ΛM ap info 的功能,可以通过PB 在应用程序中建立菜单或工具按钮,运用服务器提供的方法逐一实现,并可以利用PB 本身方便易用的开发方法对其功能进行扩充Λ如实现缩小地图时先确认再进行,可在建立的地图缩小工具按钮的click 事件脚本中用M essagebox ()函数加上M I OL Eob ject 1R un M enuComm and (1706)语句来实现,这个工具的功能就不是单纯的M ap info 中的缩小地图功能了Λ4 讨论运用目前较流行的可视化编程工具(V C 、VB 、D EL PH I、PB )进行M ap info 的集成开发,实现方法接近Λ在用PB 进行开发时,可能会出现一些在V C 、VB 开发中意想不到的问题,因此在具体问题的处理上应区别对待ΛM ap info 提供的有些服务器指令,比如R un M enuComm and (m enu id )),它的参数为菜单代码,较简单,一般在处理这类指令时不会出问题Λ经常会遇到需要将应用程序中的变量通过M apbasic 函数进行服务器对象控制,服务器指令在执行时要先解释成M apbasic 语句或函数Λ由于PB 在编译程序时,不能识别服务器应用程序的命令和函数,即M apbasic 函数及参数无法辩别,也不能识别服务器返回信息的数据类型Λ很多情况往往是因数据类型声明或格式书写不当而出错,影响了开发Λ例如,用变量T ab lenam e 表示M ap info 打开的第一个数据表的名称,类型声明为string Λ实现时要用到Eval (string exp ressi on )指令,其中exp ressi on 表达式应为M apbasic 的T ab leinfo ()函数,其类型为string ΛT ab leinfo ()函数语法T ab leinfo (w hat tab le ,w hat info r m ati on shou ld be retu rened ),不可能象在M apbasic 开发语言中书写那么简单,应注意以下问题:1)T ab leinfo ()中有两个参数:变量L CV 表示已打开表的索引,其值为1表示打开的第一个表;变量m 2tab le 2nam e 其值为1表示需要返回表的名称Λ它们的数据类型不能是In teger ,应为String 类型Λ如String L CV ="1",Con stan t String m 2tab le 2nam e ="1"Λ若声明为In teger ,PB 会以为Eval ()指令中的类型中含有数字类型,而认为数据类型34 第18卷第2期文远保等:基于G IS 的集成二次开发44北京轻工业学院学报2000年6月 不匹配,出现编译错误Λ2)T ab leinfo()中参数应加参数转换标志符Λ"&"在VB中作为参数转换标志符,在PB 中“&”表示行连续符,用"+"作为参数转换标志符Λ应注意“+”与变量之间应有空格,忽略空格,M ap info运行会出错Λ应写为T ab leinfo("+L CV+","+m2tab le2nam e+")Λ3)Eval()中的string类型T ab leinfo()函数外的字符串标识,要用“”来标识Λ不要因为T ab leinfo()函数中参数L CV和m2tab le2nam e外都带有“”,认为双引号“”外的引号用单引号‘’表示,而写成‘T ab leinfo("+L CV+","+m2tab le2nam e+")’,引起系统误解出错Λ正确书写应该是:T ab lenam e=M I OL Eob ject.Eval("T ab leinfo("+L CV+","+m2tab le2nam e+")")为了PB顺利进行M ap info集成,建议:1)访问服务器属性及调用服务器函数的表达式的数据类型都设置成A ny,把这些表达式的值赋给类型为A ny的变量,以避免数据类型转换错误Λ在程序运行中,当把数据赋给A ny 变量时,它只是临时地接受该数据的数据类型,可以先使用C lass N am e函数判断一个A ny变量的数据类型,然后再做适当的赋值操作Λ如果已知服务器自动化函数的返回值,就不需使用A ny数据类型,可直接把返回值赋给一个具有正确数据类型的变量[3]Λ如,上例知道要返回的是表名称T ab lenam e,其数据类型可直接声明为StringΛ2)应尽量使用产品默认的代码值(常用代码值可在m apbasic.def、icon.def、m enu.def 中查看),引用M ap info或M apbasic中的约定变量名称的方法不可靠Λ如上例,变量m2tab le2 nam e源自M ap basic.def中的做法不好,如果直接使用tab lenam e=M I OL Eob ject.Eval(" tab leinfo(1,1)"),就不易出错,这样既可加速运行,又可避免PB或M ap info工具本身解码过程中的误解Λ为加强程序的可读性,可以用注释说明Λ5 结论G IS开发工具与可视化开发工具的结合使得可视化的数据在可视化界面上得到很好发挥,用户易接受,开发也易实现Λ但随着信息系统网络功能的需求,G IS面临着在因特网中如何实现的挑战,目前基于W eb的G IS开发还较复杂,也并非完全意义上的W ebG IS,因此现有G IS产品还急待改善Λ参考文献:[1] 陈述彭,鲁学军,周成虎.地理信息系统导论[M].北京:科学出版社,1999.[2] 张剑平等.地理信息系统与M A P I N FO应用[M].北京:科学出版社,1999.[3] 刘红岩等.PB应用开发技术详解[M].北京:电子工业出版社,1999.INTEGRATED SECONDARY D EVELOP M ENT OF GISW EN Yuan2bao, DU Ya2hu i(Colleg e of Co m p u ter S cience and T echnology,H uaz hong U n iversity of S cience andT echnology,W uhan430074,Ch ina)Abstract In troduced the in tegrated secondary developm en t m ethod of G IS,stated that the m ode w ill be the m ain stream,and discu ssed som e questi on abou t u sing pb too ls to develop m ap info by the techno logy of OL E A u tom ati on.Key words Geograp h ic Info r m ati on System;in tegrated secondary developm en t;OL E A u tom ati on;M ap info(编辑:邓清燕)54 第18卷第2期文远保等:基于G IS的集成二次开发。
GIS二次开发(B)实验报告

GIS二次开发(B)实验报告学号:姓名:班级:专业:指导老师:2014年11月22日目录1 实验一:软件安装与AOI书签开发 (1)1.1 实验目的 (1)1.2 实验内容 (1)1.3 实验结果 (1)2 实验二:地图数据组织与访问 (5)2.1 实验目的 (5)2.2 实验内容 (5)2.3 实验结果 (5)3 实验三:地图渲染与制图输出 (9)3.1 实验目的 (9)3.2 实验内容 (9)3.3 实验结果 (9)4 实验四:空间数据处理 (16)4.1 实验目的 (16)4.2 实验内容 (16)4.3 实验结果 (16)5 实验总结 (20)1实验一:软件安装与AOI书签开发1.1实验目的✧掌握ArcGIS Engine开发环境的相关软件安装✧掌握AOI书签程序开发1.2实验内容✧安装Visual Studio 2010✧安装Microsoft .NET Framework 3.5✧安装ArcGIS Engine 10.1✧安装ArcObjects Developer kit For Microsoft .NET Framework 10.1 ✧安装ArcGIS License Manager,并授权✧实现AOI书签的创建✧实现AOI书签的调用1.3实验步骤与结果1).添加控件和类库引用在程序主窗体添加一个菜单项(MenuItem),改名字Name改成MiCreateBooke。
在创建组合框。
2).添加“创建书签”函数Public void CreateBookmark(string sBookmarkName){IAOIBookmark aioBookmark=new AOIIBookmarkClass();If(aoiBokkmark!=null){aoiBook.location=axMapControll.ActieView.Extent;=sBookmarkName;}IMapBookmarks bookmarks=axMapControll.Map as TMapBookmarks; If(bookmarks!=null){Bookmarks.AddBookmark(aoiBookmark)}cb—BookmarkList.Items.Ad();}3).添加“书签名称设置”窗体4).实现创建书签与调用书签功能在主窗体的创建书签中编写函数代码。
基于开源QGIS源码编译的二次开发方法的探究

地 图尽 量 放 大 到 当前 窗 口、 显 示 当 前 的 图层 、 回 到上 次的视 图 和刷新 地 图 。
[ 收 稿 日期 ] 2 0 1 5 —0 6 —3 0 [ 作 者 简 介] 陈卫 林 ( 1 9 8 9 ) , 女, 汉族 , 安 徽安 庆 人 , 在读 硕 士 研 究生 , 地 图制 图学 与 地理 信 息 工 程专 业 , 研 究 方ຫໍສະໝຸດ 向是 3 S技 术 集成 与 应 用
[ 关键词] Q GI S 开 源 软 件 二 次 开发
[ 中 图分 类 号 ] P 2 0 8 [ 文献标识码] B [ 文章编号] 1 0 0 7 —3 0 0 0 ( 2 0 1 5 ) 0 6 4
1 概 述
3 S技术 是 目前 I T 领域 的热 门话 题 , GI S也
2 0 1 5年 第 6期
・ 北京测绘 ・
基于开源 Q G I S源 码 编 译 的二 次 开 发 方 法 的探 究
陈卫林 郑 礼 全
( 安 徽 理 工 大 学 测绘 学 院 , 安徽 淮南 2 3 2 0 0 1 )
[ 摘 要 ] 以往 的 商 业 地 理 信 息 系统 软 件 由 于平 台之 间存 在 不 同 的 开 发 模 式 、 数 据 组 织 方 式和 数 据 格 式
课课家教育-基于OpenLayers的WebGIS程序二次开发实例教程

目录章节1基于OpenLayers的WebGIS程序二次开发实例第1节第1讲认识OpenLayers3第1讲认识OpenLayers3第2节第2讲WebGIS项目的构建第2讲WebGIS项目的构建第3节第3讲前端展现框架搭建第3讲前端展现框架搭建第4节第4讲Web在线地图的加载与切换第4讲Web在线地图的加载与切换第5节第5讲Web离线地图的加载与切换00:23:39第5讲Web离线地图的加载与切换第6节第6讲基本控件的使用00:14:35第6讲基本控件的使用第7节第7讲测量控件的使用00:09:55第7讲测量控件的使用第8节第8讲点对象的标注和属性控制00:21:43第8讲点对象的标注和属性控制第9节第9讲Popup的使用00:12:53第9讲Popup的使用第10节第10讲线对象的绘制00:11:29第10讲线对象的绘制第11节第11讲贝塞尔曲线的绘制00:11:30第11讲贝塞尔曲线的绘制第12节第12讲复杂线对象的绘制——进攻方向00:10:35第12讲复杂线对象的绘制——进攻方向第13节第13讲面对象的绘制——正多边形00:10:49第13讲面对象的绘制——正多边形第14节第14讲面对象的绘制——圆00:06:13第14讲面对象的绘制——圆第15节第15讲面对象的绘制——集结区域00:06:55第15讲面对象的绘制——集结区域第16节第16讲ol.interaction.Draw的使用00:09:57第16讲ol.interaction.Draw的使用第17节第17讲矩形和圆形选择00:08:14第17讲矩形和圆形选择第18节第18讲Feature对象的拖动00:09:51第18讲Feature对象的拖动第19节第19讲电子地图的导出00:09:20第19讲电子地图的导出第20节第20讲在Visual Studio中运用OpenLayers300:11:29第20讲在Visual Studio中运用OpenLayers3第21节第21讲用Eclipse建立WebGIS项目00:10:09第21讲用Eclipse建立WebGIS项目课程网址:/course-3640.html?A=wenku。
GIS二次开发实验指导书(实验5)

实验五PageLayout属性设置与元素绘制1、新建项目,设置窗体界面如下:2、在主窗体的Load事件中添加如下代码:private void FormMain_Load(object sender, EventArgs e){Microsoft.Win32.RegistryKey pRegKey =Microsoft.Win32.Registry.LocalMachine.OpenSubKey("SOFTWARE\\ESRI\\CoreRuntime", true);axSymbologyControl1.LoadStyleFile(pRegKey.GetValue("InstallDir") +"\\Styles\\ESRI.ServerStyle");axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassBackgrounds).Update ();axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassBorders).Update();axSymbologyControl1.GetStyleClass(esriSymbologyStyleClass.esriStyleClassShadows).Update(); }3、在“设置边框”按钮的Click事件中添加如下代码:private void ButtonBorder_Click(object sender, EventArgs e){axSymbologyControl1.StyleClass = esriSymbologyStyleClass.esriStyleClassBorders; }4、在“设置阴影”按钮的Click事件中添加如下代码:private void ButtonShadows_Click(object sender, EventArgs e){axSymbologyControl1.StyleClass = esriSymbologyStyleClass.esriStyleClassShadows; }5、在“设置背景”按钮的Click事件中添加如下代码:private void ButtonBackground_Click(object sender, EventArgs e){axSymbologyControl1.StyleClass =esriSymbologyStyleClass.esriStyleClassBackgrounds;}6、在axSymbologyControl1控件的OnItemSelected事件中添加如下代码:private void axSymbologyControl1_OnItemSelected(object sender, ISymbologyControlEvents_OnItemSelectedEvent e){IStyleGalleryItem pStyleGalleryItem = e.styleGalleryItem as IStyleGalleryItem;IFrameProperties pFrameProperties =axPageLayoutControl1.GraphicsContainer.FindFrame(axPageLayoutControl1.ActiveView.FocusMap) as IFrameProperties;if (pStyleGalleryItem.Item is IBackground){pFrameProperties.Background = pStyleGalleryItem.Item as IBackground;}else if (pStyleGalleryItem.Item is IBorder){pFrameProperties.Border = pStyleGalleryItem.Item as IBorder;}else if (pStyleGalleryItem.Item is IShadow){pFrameProperties.Shadow = pStyleGalleryItem.Item as IShadow;}axPageLayoutControl1.Refresh(esriViewDrawPhase.esriViewBackground, null, null); }7、在“设置网格”按钮的Click事件中添加如下代码:private void ButtonGrid_Click(object sender, EventArgs e){IActiveView pActiveView = axPageLayoutControl1.PageLayout as IActiveView;IMap pMap = pActiveView.FocusMap;IMeasuredGrid pMeasuredGrid = new MeasuredGridClass();IMapGrid pMapGrid = pMeasuredGrid as IMapGrid;pMeasuredGrid.FixedOrigin = true;pMeasuredGrid.Units = pMap.MapUnits;pMeasuredGrid.XIntervalSize = 10;pMeasuredGrid.YIntervalSize = 10;pMeasuredGrid.XOrigin = -180;pMeasuredGrid.YOrigin = -90;IProjectedGrid pProjectedGrid = pMeasuredGrid as IProjectedGrid;pProjectedGrid.SpatialReference = pMap.SpatialReference; = "Measured Grid";IGraphicsContainer pGraphicsContainer = pActiveView as IGraphicsContainer;IMapFrame pMapFrame = pGraphicsContainer.FindFrame(pMap) as IMapFrame;IMapGrids pMapGrids = pMapFrame as IMapGrids;pMapGrids.AddMapGrid(pMapGrid);pActiveView.PartialRefresh(esriViewDrawPhase.esriViewBackground, null, null); }8、程序运行最终界面如下:思考题:1、IStyleGalleryItem接口有哪些属性,各属性有何作用?2、叙述实现“设置网格”功能的编程思路。
qgis 二次开发案例

qgis 二次开发案例QGIS是一个开源的地理信息系统软件,它的二次开发案例非常丰富。
以下是一些常见的QGIS二次开发案例:1. 插件开发,QGIS允许开发者通过Python或C++等编程语言编写插件,以扩展软件的功能。
插件可以用于地图制图、数据处理、空间分析等方面。
例如,有开发者开发了用于地图标注、数据导入导出、地图投影转换等功能的插件。
2. 定制化应用开发,开发者可以使用QGIS的API和开发工具,基于QGIS定制化开发专业的地理信息系统应用。
这些应用可以满足特定行业或用户的需求,例如土地利用规划、环境监测、城市规划等。
3. 空间分析工具开发,QGIS提供了丰富的空间分析工具,但有时候用户需要特定的空间分析功能。
开发者可以通过QGIS的二次开发,开发符合特定需求的空间分析工具,例如基于某种算法的路径分析工具、地形分析工具等。
4. 数据库集成,QGIS支持与各种数据库的集成,包括PostGIS、Spatialite等。
开发者可以通过二次开发,实现QGIS与特定数据库的无缝集成,使得用户可以方便地在QGIS中进行空间数据的编辑和分析。
5. Web地图开发,QGIS提供了QGIS Server等工具,可以将地图发布到Web上。
开发者可以通过二次开发,定制化Web地图应用,实现在线地图浏览、查询、分析等功能。
总的来说,QGIS的二次开发案例非常丰富,开发者可以根据自己的需求和兴趣,利用QGIS提供的丰富API和开发工具,进行各种定制化开发和功能扩展。
这些二次开发案例丰富了QGIS的功能,也为用户提供了更多个性化的地理信息解决方案。
GIS二次开发实验指导书

GIS二次开发实验指导书GIS二次开发课程实验介绍地理信息系统开发主要有三种模式:独立开发:完全从底层开始,不依赖于任何GIS工具软件,从空间数据的采集、编辑到数据的处理分析及结果输出,所有的算法都由开发者独立设计,然后选择某种程序设计语言,按照软件工程的步骤完成系统的开发。
这种开发模式适于开发商品化的GIS软件平台,但其难度大、开发周期长、投资大,不适宜于一般的开发用户。
组件地理信息系统在可视化开发环境(如VB、VC++、DelPhi等)下,将GIS控件(如ESRI的MapObject、MapInfo的MapX等)嵌入用户应用程序中,实现一般GIS功能,在同一环境下利用开发语言实现专业应用功能。
该模式可缩短程序开发周期,程序易于移植、便于维护,是目前GIS开发的主流。
单纯的二次开发基于国内外先进的GIS平台,利用其提供的二次开发语言进行开发,如Arc/Info提供的AML语言、ArcView提供的Avenue、MapInfo 提供的MapBasic等,开发出具有特定应用功能的的地理信息系统。
该开发模式简单易行,有很多功能可以直接从原有的平台软件中引用过来,但其移植性差,受开发平台的影响,不能脱离原系统单独运行。
GIS二次开发实验项目根据GIS二次开发教学大纲制订,旨在通过一系列实验巩固所学内容,掌握一定软件环境下GIS二次的方法,为课程设计、毕业设计打下坚实的实践基础。
由于课程学时的限制,本课程实验只应用单纯二次开发和组件式二次开发两种开发模式。
单纯二次开发以ArcView GIS为软件环境,组件式二次开发以MapObject+VB(或VC)为开发环境。
本课程实验学时为10个学时,ArcView GIS二次开发通过三个系列实验(6个学时),完成一个功能简单的基于GIS的河南理工大学南校区校园信息查询系统。
MapObject二次开发通过两个实验(4个学时),完成一个功能简单的基于GIS的焦作市公交信息。
GIS二次开发综合实验报告

二次开发综合实验报告目录实验一:设计界面,添加鹰眼控件 ____________________________________________ 1 1.1实验目的__________________________________________________________________ 1 1.2实验内容__________________________________________________________________ 1 1.3实验步骤与结果____________________________________________________________ 1实验二:利用菜单,打开MXD文档,Shapefile文件_____________________________ 4 2.1实验目的__________________________________________________________________ 4 2.2实验内容__________________________________________________________________ 4 2.3实验步骤与结果____________________________________________________________ 4实验三:实现鹰眼功能______________________________________________________ 7 3.1实验目的__________________________________________________________________ 7 3.2实验内容__________________________________________________________________ 7 3.3实验步骤结果______________________________________________________________ 7实验四:实现右键查询图层信息以及删除图层操作 _____________________________ 11 4.1实验目的_________________________________________________________________ 11 4.2实验内容_________________________________________________________________ 11 4.3实验步骤与结果___________________________________________________________ 11实验五:使用多边形选择区域内部要素,并高亮显示____________________________ 21 5.1实验目的_________________________________________________________________ 21 5.2实验内容_________________________________________________________________ 21 5.3实验步骤与结果___________________________________________________________ 21实验六:实现柱状图渲染__________________________________________________ 23 6.1实验目的_________________________________________________________________ 23 6.2实验内容_________________________________________________________________ 23 6.3实验步骤与结果___________________________________________________________ 23实验七:实现最短路径分析(网络分析) ____________________________________ 27 7.1实验目的_________________________________________________________________ 27 7.2实验内容_________________________________________________________________ 27 7.3实验步骤与结果___________________________________________________________ 27实验总结__________________________________________________ 错误!未定义书签。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
・ 北京测绘 ・
基于开源 Q G I S源 码 编 译 的二 次 开 发 方 法 的探 究
陈卫林 郑 礼 全
( 安 徽 理 工 大 学 测绘 学 院 , 安徽 淮南 2 3 2 0 0 1 )
[ 摘 要 ] 以往 的 商 业 地 理 信 息 系统 软 件 由 于平 台之 间存 在 不 同 的 开 发 模 式 、 数 据 组 织 方 式和 数 据 格 式
QGI S的 缺 省 绘 制 的 地 图 可 能有 不 满 意 的地 方 ,
便 用户 进 行 二 次 开 发 。QGI S开 始 于 2 0 0 2年 5
月, 是 基 于跨平 台 的图形 工具 QT 的软件 包 , 采用 十 + 语 言 开 发 的一 个 G I S软件 。 目前 的 开 发
格式 , 通 过 GDAI / O GR 扩 展 可 以 支 持 多 达 几 十
种数据 格 式 , 集 成 了 Gr a s s 的部 分功 能 , 而且 还支 持P o s t GI S数 据库 、 从 W MS或 WF S服 务器 中获 取数 据 , 支持创建地 图, 另 外 还 支 持 对 GI S数 据 的基本 操 作 , 如 属 性 的编 辑 修 改 等 , 并 且 可 以通
特点 , 拥 有 广 大 的 用 户 群 。 由 于 QGI S 是 基 于
2 功 能 介 绍
QGI S是 一 款 强 大 的 开 源 软 件 , 针 对 于它 本
身, 功 能也有 很 多 , 具 体有 以下 几点 :
( 1 ) QGI S对文 件 的读 取 图层 是 QGI S的 一个 基 本 概 念 , 是指 在 同类 型 的地 理对 象集 合 , 是 QG I S软 件 对 GI S数据 进 行 操作 的基 本单 位 。图 层数 据 来 源 广 泛 , 既 可 以 是 GI S矢 量数, 甚 至
的属性 了 , 要 改变 图层 的属 性 只 需要 在 Q GI S的
左 边 的 图层 管 理 面版 里 面 找 到你 想 修 改 的 图层 ,
然后 用 鼠标 右 键 单 击 该 图层 , 再选择“ 属性”
即可 。
c e n s e 协 议对 外发 布 。它 支持 多种 G I S数 据 文件
[ 关键词] Q GI S 开 源 软 件 二 次 开发
[ 中 图分 类 号 ] P 2 0 8 [ 文献标识码] B [ 文章编号] 1 0 0 7 —3 0 0 0 ( 2 0 1 5 ) 0 6 4
1 概 述
3 S技术 是 目前 I T 领域 的热 门话 题 , GI S也
地 图尽 量 放 大 到 当前 窗 口、 显 示 当 前 的 图层 、 回 到上 次的视 图 和刷新 地 图 。
[ 收 稿 日期 ] 2 0 1 5 —0 6 —3 0 [ 作 者 简 介] 陈卫 林 ( 1 9 8 9 ) , 女, 汉族 , 安 徽安 庆 人 , 在读 硕 士 研 究生 , 地 图制 图学 与 地理 信 息 工 程专 业 , 研 究 方 向是 3 S技 术 集成 与 应 用
QT 跨平 台类 库 开 发 , 是一 个 用 户 界 面 友 好 的桌 面地理 信 息系统 , 因此 支 持 目前 最 为 广泛 的操 作
系统 如 L i n u x 、 Un i x、 Ma c OS X 和 wi n d o ws 等. 这
一
影 像数 据 图层 。QGI S软 件支 持 四种 类 型 的 G I S 图层 , 分别是 矢 量数据 图层 、 栅格 数 据 图层 、 P o s t —
非常活 跃 , 当前 ( 2 0 1 4年 ) 的 最 新 版 本 是 QG I S 2 . 4 版 。 QGI S源 码 采 用 G NU Ge n e r a l P u b l i c I i —
如 地 图的 图 例 符 号 的样 式 、 颜色 不满意, 或 者 需 要 显示 一些 文字 注 记 ( 标签) , 这就 需 要 改 变 图层
过插 件 的形式 支持 功能 的扩 展 。
( 3 ) 图层 文件 的基本 操作
缩放地 图作 为 地 图 的 基本 操 作 , 也 是 几 乎 每
个 GI S软件必 备 的操 作 , QG I S的工 具 栏 提 供 了 如下 的功 能 : 移 动 地 图、 放 大地 图 、 缩小地 图、 将
GI S数 据 图 层 和 W MS数 据 图 层 。
点是 其 他 很 多 桌 面 G I S软 件 所 不 可 企 及 的。 而最 为重 要 的是 , 其 重 构 了 QGI S的 AP I库 , 方
( 2 ) 图层 文 件 的属 性
在 QG I S 中 打 开 一 个 图层 之 后 , 我 们 对
随着 Go o g l e e a r t h的流行 而被越 来越 多 的人所 熟 知 。在 GI S流行 的背 后 , 它关 联 着人 们 日常生 活 的方方 面 面 , 也有 越 来越 多 的开 源 GI S在 默 默 贡 献 自己 的力量 。在众 多 的开 源 桌 面 G I S软 件 中, QGI S L l 以其用 户 界面友 好 、 广泛 支 持操 作 系统 等
的不同, 以及 过 于 封 闭与 独 立 的缺 点 , 再 加 上 其 垄 断 与 高 额 的 费 用 在 一 定 程 度 上 限 制 了 GI s的 大众 化 发 展 。
在 众 多的 开 源软 件 中 , 本 文 提 出 了基 于 开 源软 件 QG l S源 码 编 译 并 二 次 开 发 的 几 种 方 法 , 开 发 音 可 以根 据 这 三 种 不 同 的 方 法 应 对 不 同的 需 求 来 进 行 二 次 开发 , 提 供 相 应 的接 口 , 对 功 能进 行 扩 展 , 为 自 己的 软 件 服 务 , 使 QGI S在 不 同 的平 台上 发 挥 自己 的功 用 。