主要内容概述框架
(视频教程已经发布:http://edu.csdn.net/course/detail/3422)性能
(http://edu.csdn.net/course/detail/3420)ui
1.解析shapefile(.shp)文件。‘.net
2.将经纬度数据按照墨卡托投进行投影(调用proj.4库)完成。设计
3.将数据用OpenGL的方式进行绘制。视频
上述3方面只是完成初步的绘制,对于要完成一个复杂的地理信息系统还有很大的差距,blog
下面介绍我设计的简单的地理信息框架(用于交流,进步)。先上个图,根据图来讲更加易懂。教程
其中地图框架中包含多个物理地理图层,是真实存在的图层,全部在该图层下的数据都会被绘制到图层上(即一张图片)。图片
物理图层中包含了多个逻辑图层(Layer),是为了方便应用层使用而设计的逻辑图层,用于将地图要素进行分类管理内存
使用,最后Layer中包含的是真正的地图要素数据,是真正绘制使用的数据。
在实际的应用中,能够把影像数据做为一个物理图层,将矢量要素数据做为一个物理图层,最后将两个图层合成输出。
固然在实际应用中,我增长了一个图层,即实时绘制层,即将距离测量,面积测量,角度测量等作在该层,这样在地图刷新的
时候从新绘制的数据很少,提升程序的性能。
先上一个图,我目前作的简单的gis框架(只是知足我目前的需求,主要的特色就是速度快)。以下图所示。
初步的完成上面的框架设计后,我获得了上面的结果,在这想与你们分享的是OpenGL在处理多边形填充区域的时候比较麻烦,我将矢量线和面作了两个
逻辑图层,这样作能够选择显示线和面两中模式。在完成这个效果图的时候为了追求效率,遇到最大的问题是绘制文字,众所周知OpenGL没有绘制文字
的功能,须要本身作,其用到了我前面的随笔,有兴趣的能够自行参考。
为了作标会功能,在作界面花费了我不少精力,为了让软件具有跨平台的目的(能够再Andriod手机平台上用),界面我采用OpenGL封装了一个轻量级的
界面库(这个很不值得),网上也有不少开源的界面库,好比Mygui,FastUI,CEGUI等,我都有用过,要不在效率上知足不了个人要求,要么占用较大的内存,
最后本身只有本身写了,上图。
编辑各类经常使用的图形界面以下:
最后,我增长了一个曲线模板,便可以把比较好的样式保存成模板,想用的使用直接拖出来就直接能够应用。
以下所示。
完成了。后续若是你们以为还好,我会继续写,并把代码分享出来。