`
zhangziyangup
  • 浏览: 1065927 次
文章分类
社区版块
存档分类
最新评论

地理信息技术——平民化时代的来临(二)

 
阅读更多

地理信息技术,从开始接触到以此为工作,经历了8年的时间了。自己也经历了一个较长的GIS实践过程,同时也是学习和思考的过程。起初只几个行业的使用,到现在五十多个行业的全面应用,地理信息技术已经被大家普遍接受和认可了,从上文的留言可以看出从事这个技术或了解的人也很多,很难想象在十年前当有人问我听说过地理信息没,我一脸茫然。

地理信息软件在现在看来纷繁复杂,从开源软件到商业化软件,比比皆是。如何理解地理信息呢?是跟随新软件的推出而学习,还是在学校看制图学,或是搞本体的理论研究?很不幸这些我都经历过,但这些都不是我想要的。我认为做为技术,应该从实用主义出发,能解决问题提高工作效率的就是好技术。2010年有幸能和ESRI的精神领袖Scott Morehouse交流,大师应该是GIS领域的技术大牛了(ArcGIS框架设计是此人历时多年的神做),在大师看来目前的GIS技术理论基石已经很坚实和完善,ESRI的下一步发展将是开拓应用领域,挖掘行业需求,在大师看来随着IT的发展GIS会以某种新的形式出现,但是本质东西还是那些。因为工作原因,做得越多,发现GIS的学习思路应该转变一下。看过GIS开源,但是开源软件不仅笨重,而且极为混乱,对于初学者很难掌握,事实上我也比较关注开源。GIS的书籍已经很多了,但是我想说,这些书大部分都是商业软件的开发经验,或者是介绍GIS的原理,这些书实践性不强。

对于地理信息技术,区别于其他IT技术的本质东西,是地理建模,简单理解就是描述地理对象。本文在此就是论述地理对象。很多人从事GIS开发,却也从来不考虑这些问题,但是并不妨碍他们去理解地理对象,他们知道全球范围的小比例尺下,城市可以表示为点,大比例下城市可以用多边形来描述,这些是比较容易理解,但是如果涉及物流的配送,有站点有道路,如何描述他们之间的关系呢?复杂必定也是由简单构成,这是ESRI的《modeling our world》一书体现的。在我看来ESRI的精华都凝聚在了这本书中了。

那我们如何实现最简单的地理模型抽象呢?区别于书上的一堆描述,你可以认为就是:点,线,面。这种抽象就能用计算机语言来描述了。当然完善可靠且能被计算机语言所描述的模型才是最有价值的。当然地理模型也必须是可扩展的,这样才能最终在多个领域生根发芽。纵观GIS的发展过程,无不是围绕点,线,面开展的。计算机制图学的发展转折点就是在地图分层管理上,所有的GIS都有层的概念,而这些层就是用来管理点,线,面的容器。当然在层的基础,有拓扑概念的出现,有空间关系判断和分析的出现。

很多人此刻要问,这和我要写GIS软件有什么关系?如何体现在我的软件设计中呢?不忙,把领域模型搞清楚了再开始写动手,思路才会清晰。前文,我已经论述了如何绘制,事实上每个过程都是为地理信息的绘制做准备的,事实上我后面会介绍如何投影,以及如何设计动态投影,掌握了这些在IPad,或者Mobile上实现过程都类似。

在介绍自己的设计思路时,我先介绍一下ESRI的底层架构。事实上ESRI的ArcMap架构在表象上给我看到的是地理数据的分层管理(此处最标准的说法为Geodatabase的Schema),用户只需要选择图层的可见与不可见,以及加载点,线,面图层,这些过程基本是所有GIS软件的标准化操作了,那它的背后又有哪些实现技术,哪些特点呢?很可惜如果不做ArcGIS的扩展背后的故事都是不可知的 ,总结下来,发现其实也非常简单,就是三个过程依次控制三个绘制过程。ArcMap显示地图的时候,会在内存中创建三个DC,第一个是管理所有图层渲染的DC;第二个是Annotation的绘制DC;第三个是选择渲染的DC。在屏幕显示出的绘制效果就是这三个DC依次叠加显示的效果。

在框架层面上ArcMap依次把第一个DC依次传递给每个层,由每个层自己单独控制在此DC上的绘制内容。对于抽象了地理对象本质的点,线,面,通过绘制就能体现出地理概括了。Annotation比较特殊,需要在地图最上面显示(Label等等),所以就放到了第一个DC的之后才开始。图层选中效果的体现当然也就放在最上面了。但是这个框架也有一个先天不足的地方,此处不多说。

有了上面的铺垫,软件设计可以参考者自己往下写了,设计一个Layer类,设计注记类,设计点,线,面模型(直接参考OGC提供的标准,当然直接ESRI的模型更好,关于模型的优劣不想多说,只说应该多考虑效率)。。。

ESRI线模型的参考

ESRI面模型的参考

不想多说实现细节了,此间考虑效率会用很多的C++模板,由上面过程的剖析,实现难度不大,但是要想写得完美那也颇费尽的,只是多个图层的叠加体现效果自己完全能够绘制出来的,细节可以通过详细设计来完善。此处只想多说一句,关于绘制效率,有必要关注空间索引,你懂得。

此处实现需要一些时间,等实现了再贴些图,大家讨论。如果这边的框架可以顺利做完,MO的大部分功能就都体现出来了。大部分的GIS平台也就到此而已,展示地理信息,那是GIS?

下次的主题是绘制模型和地理模型的统一。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics