论文部分内容阅读
摘 要:本文分析了组件式GIS应用系统中的空间数据库和属性数据库的关联技术,井应用关键字段的关联技术实现了空间查询统计功能。
关键词:GIS(geographical information system);MapX;空间查询;空间统计
1、引言
地理信息系统(geographical information system简称GIS)是计算机地理制图和计算机图像处理技术发展的必然产物,它集地理、图形、数据、分析技术为一体,用于高效地创建、操作、分析和显示各种类型的地理或空间参照数据。利用GIS提供的数据的地理属性,就可以将这些数据分层、分类叠加在电子地图上,并且地图对象与数据库属性建立连接关系,这样通过GIS就可以将空间的概念引入到传统的信息系统中,使空间信息的表达变得生动、直观和易于理解。
2、MapX简介与主要功能
MapX是一个基于ActiveX技术的可编程空间,或称ActiveX组件。它具备OCX组件的一般共同属性,如自动注册、属性页、独立于语言等,通过属性、事件、方法与MapX实现交互。MapX为开发人员提供了一个快速、易用、功能强大的地图化组件。在主流的可视化程序开发环境中,如Visual Basic、Visual C++、Delphi等,在设计阶段只须将MapX控件放入到窗体中,并进行编程,设置属性,调用方法和事件,就可以轻松实现地理空间数据的可视化,完成空间查询、地理编码、专题分析等丰富的地图信息系统功能。
MapX的主要功能有显示Maplnfo格式的地图数据,支持地图的放大、缩小、平移、选择等操作,图层的自由控制,支持动态图层和自定义图层,强大的专题地图制作,简单的地理查询等。
3、空间数据与属性数据的绑定技术
当前大部分GIS软件多采用双重库结构,即属性数据由关系型数据库管理,而空间数据则由文件系统单独管理。在程序设计中,主要有两种方法实现空间数据和属性数据的结合:关键字段的关联和数据绑定。
关键字段的关联:由于MapX不能直接读取Maplnfo表中的全部字段,只能通过设置MapObJect,Layers,Item(“图层”),KeyField来指定“图层”表的关键字段,通过图层中关键字段与属性数据库中相应表的关键字段相关联,从而建立属性数据库与Mapinfo图层文件的关联。
数据邦定:数据邦定就是将数据从数据源放人MapX的处理过程,数据源可能是ADO记录或ODBC数据源等形式。通过使用DataSet,Add方法编程来绑定数据,此过程会创建DataSet对象。这个添加到DataSets集合中的DataSet对象包含了数据绑定到地图图层中的图元的计算值。例如,如果数据已绑定到美国的州地图上,那么每个州都将会有新的数据值来控制各州的绘制。对于大多数数据绑定类型,DataSource(DataSets,Add的第二个参数)其实是一种OLE接口,MapX通过这个接口直接从数据源中访问数据,数据并没有真正传递给DataSets,Add。
这样通过数据绑定或关键字段的关联,就可以把有关的信息在电子地图的图层上进行查询、统计等操作。
4、可视化开发环境比较
目前,可以嵌入组件式GIS控件集成GIS应用的可视化开发环境很多,根据GIS应用项目的特点和用户对不同编程语言的熟悉程度,可以比较自由地选择合适的开发环境(表1)。其中,Microsoft公司的Visual Basic和Borland公司的Delphi功能强大、易于使用,适合大多数GIS应用,而Visual FoxPro等开发环境适合建立数据库管理功能强大的GIS应用。
5、空间查询功能实现
空间查询功能主要有两类:第一类是按属性信息的要求来查询定位空间位置,称为“属性查图形”;第二类是根据对象的空间位置查询有关属性信息,称为“图形查属性”。
从图形查询属性信息时,用户只需双击某一图元,就会出现一对话框,显示该图元的信息,包括属性信息和空间信息。该功能的关键是确定用户双击的是哪个图层中的哪个图元,在MapX中截取用户双击事件,如果用户有选择图元,则通过Mapl,SelectionChanged事件来编程实现。用SQL查询语句:SQL.Add(select from表名称where字段名称=:a)ParanaByName('a').AsSfing:=MapObiect.Layers.Item(“图层”),KeyField;来判断属性数据库中的各表字段与选中图元的关键字段的一致性,如能在属性数据库中找到所选图元的关键字段,则分别到属性数据库和图层文件中提取该图元的属性信息和空间信息,然后显示出来。
从属性信息到图形的查询,方法和从图形查询信息一样,只不过当查询结果出来后,所查到的图元就会在界面上闪烁或居中显示。
6、空间统计功能的实现
空间统计有圆形统计工具和矩形统计工具。在使用圆形统计工具(miRadiusSelectTOO1)时,单击确定圆心,按住左键拖动鼠标,画出一个圆,选择统计出用户所画的圓中的图元对象的相关信息;对于矩形统计工具(miRectSe-lectToo1),单击确定方框的一个顶点,按住左键拖动鼠标,画出一个以当前位置为另一顶点的方框,选择统计出在方框内的岡元对象的相关信息。
具体方法实现同样用Mapl.SelectionChanged事件来编程实现。方法和从图形查询属性信息一样,只是由于MapX空间不支持数据库的二维表输出格式,因此要实现圆元信息数据库的显示,需在Delphi窗体中放置一个StringGrid控件,该控件用来显示网格数据。
7、小 结
本文着重讨论了基于MapX的GIS应用中空间信息查询统计功能的实现,给出了具体的实现方法。
关键词:GIS(geographical information system);MapX;空间查询;空间统计
1、引言
地理信息系统(geographical information system简称GIS)是计算机地理制图和计算机图像处理技术发展的必然产物,它集地理、图形、数据、分析技术为一体,用于高效地创建、操作、分析和显示各种类型的地理或空间参照数据。利用GIS提供的数据的地理属性,就可以将这些数据分层、分类叠加在电子地图上,并且地图对象与数据库属性建立连接关系,这样通过GIS就可以将空间的概念引入到传统的信息系统中,使空间信息的表达变得生动、直观和易于理解。
2、MapX简介与主要功能
MapX是一个基于ActiveX技术的可编程空间,或称ActiveX组件。它具备OCX组件的一般共同属性,如自动注册、属性页、独立于语言等,通过属性、事件、方法与MapX实现交互。MapX为开发人员提供了一个快速、易用、功能强大的地图化组件。在主流的可视化程序开发环境中,如Visual Basic、Visual C++、Delphi等,在设计阶段只须将MapX控件放入到窗体中,并进行编程,设置属性,调用方法和事件,就可以轻松实现地理空间数据的可视化,完成空间查询、地理编码、专题分析等丰富的地图信息系统功能。
MapX的主要功能有显示Maplnfo格式的地图数据,支持地图的放大、缩小、平移、选择等操作,图层的自由控制,支持动态图层和自定义图层,强大的专题地图制作,简单的地理查询等。
3、空间数据与属性数据的绑定技术
当前大部分GIS软件多采用双重库结构,即属性数据由关系型数据库管理,而空间数据则由文件系统单独管理。在程序设计中,主要有两种方法实现空间数据和属性数据的结合:关键字段的关联和数据绑定。
关键字段的关联:由于MapX不能直接读取Maplnfo表中的全部字段,只能通过设置MapObJect,Layers,Item(“图层”),KeyField来指定“图层”表的关键字段,通过图层中关键字段与属性数据库中相应表的关键字段相关联,从而建立属性数据库与Mapinfo图层文件的关联。
数据邦定:数据邦定就是将数据从数据源放人MapX的处理过程,数据源可能是ADO记录或ODBC数据源等形式。通过使用DataSet,Add方法编程来绑定数据,此过程会创建DataSet对象。这个添加到DataSets集合中的DataSet对象包含了数据绑定到地图图层中的图元的计算值。例如,如果数据已绑定到美国的州地图上,那么每个州都将会有新的数据值来控制各州的绘制。对于大多数数据绑定类型,DataSource(DataSets,Add的第二个参数)其实是一种OLE接口,MapX通过这个接口直接从数据源中访问数据,数据并没有真正传递给DataSets,Add。
这样通过数据绑定或关键字段的关联,就可以把有关的信息在电子地图的图层上进行查询、统计等操作。
4、可视化开发环境比较
目前,可以嵌入组件式GIS控件集成GIS应用的可视化开发环境很多,根据GIS应用项目的特点和用户对不同编程语言的熟悉程度,可以比较自由地选择合适的开发环境(表1)。其中,Microsoft公司的Visual Basic和Borland公司的Delphi功能强大、易于使用,适合大多数GIS应用,而Visual FoxPro等开发环境适合建立数据库管理功能强大的GIS应用。
5、空间查询功能实现
空间查询功能主要有两类:第一类是按属性信息的要求来查询定位空间位置,称为“属性查图形”;第二类是根据对象的空间位置查询有关属性信息,称为“图形查属性”。
从图形查询属性信息时,用户只需双击某一图元,就会出现一对话框,显示该图元的信息,包括属性信息和空间信息。该功能的关键是确定用户双击的是哪个图层中的哪个图元,在MapX中截取用户双击事件,如果用户有选择图元,则通过Mapl,SelectionChanged事件来编程实现。用SQL查询语句:SQL.Add(select from表名称where字段名称=:a)ParanaByName('a').AsSfing:=MapObiect.Layers.Item(“图层”),KeyField;来判断属性数据库中的各表字段与选中图元的关键字段的一致性,如能在属性数据库中找到所选图元的关键字段,则分别到属性数据库和图层文件中提取该图元的属性信息和空间信息,然后显示出来。
从属性信息到图形的查询,方法和从图形查询信息一样,只不过当查询结果出来后,所查到的图元就会在界面上闪烁或居中显示。
6、空间统计功能的实现
空间统计有圆形统计工具和矩形统计工具。在使用圆形统计工具(miRadiusSelectTOO1)时,单击确定圆心,按住左键拖动鼠标,画出一个圆,选择统计出用户所画的圓中的图元对象的相关信息;对于矩形统计工具(miRectSe-lectToo1),单击确定方框的一个顶点,按住左键拖动鼠标,画出一个以当前位置为另一顶点的方框,选择统计出在方框内的岡元对象的相关信息。
具体方法实现同样用Mapl.SelectionChanged事件来编程实现。方法和从图形查询属性信息一样,只是由于MapX空间不支持数据库的二维表输出格式,因此要实现圆元信息数据库的显示,需在Delphi窗体中放置一个StringGrid控件,该控件用来显示网格数据。
7、小 结
本文着重讨论了基于MapX的GIS应用中空间信息查询统计功能的实现,给出了具体的实现方法。