论文部分内容阅读
空间数据库采用关系型数据库来组织管理地理数据和属性数据,提供对这些数据的有效存储、查询和分析,以支持各种空间地理数据的应用。当前,已实现的空间数据库大多采用了两种模式:一种是关系型数据库+空间数据引擎的寄生模式,另一种是关系型数据库+空间数据扩展的融合模式。寄生模式采用了中间件技术,而融合模式采用的是数据库技术。本文研究的基于MySQL的空间数据库属于后者,它也是一种关系型数据库+空间数据扩展的融合模式。MySQL是一个开源的小型关系型数据库管理系统,从4.0版本开始加入了Spatial模块,实现了OpenGIS规定的几何数据类型,以及简单的空间数据运算。但是,MySQL Spatial并没有得到持续地更新和加强,MySQL所支持的空间扩展功能仍然较弱。当前,有关空间数据分析和运算的算法繁多,因此,在已有的MySQL Spatial基础上,将一些高效的空间数据分析和运算加入到MySQL中,从而加强和和改进MySQL Spatial的功能,将是一件很有意义的事。论文首先介绍了有关空间数据库,MySQL, MySQL Spatial的基础知识,并阐述了当前已有的各种空间分析和运算。然后,以Vatti的多边形叠加算法为例,在借鉴了Alan Murta的GPC库的前提下,详细阐述了该算法的思想和实现,并对其进行了一定的改进,编写了一个MFC程序对改进后的GPC库进行了相应的测试和验证,证明改进后的GPC库能够正确运行多边形的叠加运算。接着,研究了如何对MySQL源码进行编译,探索和实现了三种在MySQL中增加SQL函数的方法,并对三种方法各自的优缺点进行了比较,选择MySQL本地函数的方法为MySQL Spatial扩展新的空间运算。最后,从源代码的角度,深入研究了MySQL作为空间数据库的设计和实现,主要分析了MySQL Spatial中空间数据是如何进行存储、查询和运算的。并在此基础之上,研究将多边形叠加运算加入到MySQL Spatial中,并使用MySQL客户端对其进行测试。结果显示MySQL服务器已成功支持该空间运算,证明了采用MySQL本地函数的方法来为MySQL Spatial扩展新的空间运算功能是切实可行的。