2008年12月14日星期日

我的GIS之路

从接触GIS软件开始,不知不觉就已经4个年头了。上次邓老师让我介绍一下自己的学习经验,一时没想好,最近大概整理了一下,想写出来,给非地理新系统或者计算机类专业的同学参考一下。

虽然说起来我接触GIS已经4年了,但是前两年几乎等于没有接触。主要是因为自己没有买电脑,就算想学,也没机会学。其实大三的时候,邓老师上GIS那课的时候,我还是好好学了一下。那时候,看了一本很好的书,书的名字我记不住了。好像是陈健飞翻译的一本老美的书。由于老师的严格要求和自己的努力,我对GIS概念上的那套东西有了基本的了解。大四的时候,我神使鬼差的找到一份GIS二次开发的工作,这才算是正真的开始学习和了解GIS。但是那个时候主要还是以学习编程语言为主,当时用了慧图公司的top map SDK,现在想想,那个软件真的还挺适合上手的。虽然很多功能不能做,但是学习的门槛很低而且学习曲线也不陡峭。

做了三个月基于TOPMAP的二次开发后,又开始基于ARCOBJECTS做一个GIS的框架,作为以后公司CS模式GIS的框架。很遗憾由于后来别的项目的原因,我没有完成这个开发任务,但是ESRI清晰的设计还是给我留下很深刻的印象。在开发的过程中,我时不时的需要做一些图,来给客户看,因此学会了一些基本的操作。但是除了那些基本的操作之外,我建立起来了,地图,图层,实体,属性这些基本的概念。当然我建立的不是死的概念,而是很具体的概念和操作的对应,从此我才算是正真的踏上GIS之路。

后来一年的工作里,我其实一直都没怎么接触GIS,除了当时协助邓老师,指导一位本科毕业生。由于我当时的工作比较忙,除了搭好框架外,实际上没有给他太大的帮助。虽然我没有接触GIS,但是我在Database方面有了长足进步。而且十分幸运的是,我学习的是ORACLE数据库,并且在数据库编程方面下了点功夫。当然,当时对于XML Db这块的学习,更是锦上添花。因为其实ORACLE数据库中的XML Db和SPATIAL Db的构成原理有类似之处。因此这也是我对想真正学习GIS的同学的一点建议,那就是花3个月到半年时间来学习一门数据库,当然我更建议学习ORACLE或者Postgresql,主要原因是他们的功能性很强,学习数据库编程的时候更加有回旋余地。而且这两个数据库上面都有已经成型的,非常强大的空间数据库扩展。需要注意的是,不要去学数据库原理这样的课程,主要是因为这样的课程比较空泛,理论太多而实际用的到的内容太少。

八月份后我就开始准备复习和出国的事情了。这时我看了两本书,对我的帮助很大。一本书是《为我们的世界建模》,英文名字叫做《modeling our world》,是ESRI公司的一个人写的。另外一本书是《空间数据库》,英文名字叫做《Spatial database a tour》,是明尼苏达大学的一个老师写的。前者主要是针对geodatabase的一些理论说明,后者则非常全面和深入的讨论了空间数据库的很多方面的内容,但是想读懂这本书需要很强的数学,数据库以及JAVA方面的功底,强烈推荐想学的同学看看。当时还旁听了一个老师的GIS课程,当然他讲的挺垃圾的,估计全班90人没几个人听懂了。

大概是从11月份以后吧,我使用GIS的时候就如有神助了。其实最重要的是,我已经对GIS的术语,概念和基本模型很了解了。因此,面对问题的时候,我能很快的使用GIS的数据模型来模拟,而碰见不太懂的操作的时候只需google一下就好了。这一段时间,我还看了一些map server的源代码,当然主要是想糊弄明大的那个老师,不过他鹰眼犀利,一下就看出我是个草包。因此,我建议想学的话,可以先把基本的概念弄明白,然后学习如何将这些概念模型应用到自己的领域中,动手实践,发现问题,反过来再看书学习......到帮助邓老师代05级学生环境规划实习的时候,我已经对GIS领域内的内容了如指掌(哈哈,吹牛了)。

放假回家后,闲来无事就继续研究研究GIS。这时候,我才正真接触了PGSQL和POSTGIS。关于这两个东西介绍,网上有很多,只是都不怎么好,如果想学习的话,建议大家看看POSTGIS的手册,和数据库里面的源代码。注意,需要看的数据库里的PLSQL源码,而不是C语言写的那些代码。对于想学空间数据库的朋友来说,POSTGIS是一个不可多得的财富。有时候宝藏就在咱们手笔,只是百分之九十九的人不知道怎么念芝麻开门。还有一个很好的工具是QGIS,它是一个很好的POSTGIS的前端软件。我自己觉得POSTGIS和QGIS,再加上MAP server,你就可以搞定GIS内80%的问题,而且全部都免费。在家里最大的进步就在于对于一些GIS软件的基本实现有所了解。如果在达到我上面说的了如指掌的境界后,还想继续学习GIS软件的基本实现的话,那我建议好好看看POSTGIS(空间数据存储),QGIS(空间数据显示),MAP SERVER(空间数据的WEB服务器),当然后这三个对于C语言要求挺高的,熟悉C语言是前提要求,而POSTGIS除了对C语言要求挺高之外,还需要精通PLSQL编程,因此在学习这些东西之前,要有足够的心理准备和知识储备。如果是熟悉JAVA语言的话,可以看看UDIG(空间数据显示),GEO SERVER(空间数据的WEB服务器)。另外,MYSQL的空间数据库扩展MYSPATIAL也很有特色,走了一条跟现在的ORACLE和PGSQL都不一样的路(跟ORACLE8I的空间数据库差不多)。

说了这么多,还是想总结一下,多看书+多思考+多实践=GIS Expert。

2 条评论:

匿名 说...

写的真好。我都要按照你指的路去学习了……
其实不管是那门课,要学好学通,关键是自己的兴趣和努力。

deng

fanng 说...

哈哈 找回一点写作的感觉了