EasyMap是一套开放源码的2D地图图形系统开发套件。借助EasyMap,开发者可以使用VC、VB、Delphi、C++Builder等开发工具方便的开发出地图图形应用程序。目前这套系统提供了基于文件系统的矢量数据存储、组织、显示、查询、编辑以及正射影像的浏览等功能。整个系统架构是开放式且可扩充的,因此可以根据需要增加对数据库或更多文件格式的支持。
整个套件分为easylib包和若干外围辅助模块;
easylib包是个C++开发包,用来实现所有核心功能。easylib包可按照功能分为两大部分:底层对象框架和地图图形功能部分;也可以按照文件组织分为两大部分:接口部分和实现部分。
底层对象框架部分参考了COM的若干技术,用来实现对象的生存期自管理、持久化等功能;地图图形功能部分实现了与地图相关的功能;
对于C++开发工具,可以直接编译easylib的源代码进行二次开发,也可以只基于接口部分进行二次开发(把easylib编译成dll,配合Include目录下的接口头文件);
对于Delphi二次开发,提供了专门的接口文件(已将.h文件翻译成了pascal格式),可以方便的调用easylib的所有功能;
对于VB二次开发,提供了一个ActiveX控件:EasyControl,可以使用easylib的大部分功能;
所有的源代码中,除了读写ArcGIS ShapeFile格式文件用的shapelib和显示BMP文件用的dibapi源代码来自于互联网外,其余基本上都是自己写的。
已实现的功能及特色:
1. 较强的空间对象描述能力,支持多种复杂几何类型,支持矢量地物要素和图外要素等多种数据管理、表达方式;
2. 内容丰富的符号系统,支持复杂点符号和平行线、制图线符号等,简洁方便的符号库操作与维护;
3. 矢量数据的多种表现方案,支持质底填充和分级显示等属性符号化;
4. 基于内存映射文件的自定义矢量图形文件格式,单个文件大小可达500MB以上,支持多步编辑回滚操作;
5. 高效的无边界四叉树空间索引保证了大数据量、大范围下的高速图形浏览、查询及编辑操作;
6. 带定位信息BMP文件的高速浏览功能,支持正射影像和矢量叠加显示;
7. 灵活的图层控制方式,可扩展的图层架构,便于增加新的图层类型;
8. 自行设计的面向对象基础类库,基于标准C++和win32api,不依赖于COM、MFC等,完全绿色,支持生存期自管理、持久化等特性;
9. 核心开发包支持VC6.0、VC2005、C++Builder6.0等多种C++编译器,可将代码直接嵌入到其它需要图形功能支持的项目中;
10. 除C++开发工具之外,还支持Delphi、VB等开发工具,支持基于源代码、基于接口及基于ActiveX控件的多种开发方式,示例丰富。 |