蒋波涛 http://blog.3snews.net/space.php?uid=16796&do=blog&id=22870
1984年图灵奖获得者,Pascal语言的发明人Niklaus Wirth教授曾经给程序下过一个经典定义“程序=算法+数据结构”,一针见血。在我看来,算法和数据结构就好象哲学中的方法论和认识论一样,前者明确了解决一个问题的思路,而后者提供了解决问题的对象。
“算法”一词来源于公元9世纪波斯数学家比阿勒.霍瓦里松的著作《代数对话录》,它是指完成一件事情的具体步骤和方法。因此说白了它并不神秘,计算机中的算法,也不过就是将数学方法是用计算机语言来进行描述。
算法也是计算机系本科学生的基本课程之一,但对于许多GIS专业的学生而言,这门课被弱化了,一来是它的确不容易理解,第二似乎没有什么地方好下手来练练。所以许多人对于它的了解保质期只限于考试之前。不过我本人并不认为这有什么值得大惊小怪的地方,如果你的确需要,你一定会想办法搞懂它,不是吗?
对于GIS算法这个内容而言,想找到一本相关的书籍并不容易,不过也不复杂,因为一共就两本,还都是科学出版社的——《地理信息系统算法基础》和《地理信息系统原理与算法》,国外倒是有一本不错的书《Beyond Mapping:Concepts,Algorithms,and Issues in GIS》,但国内不见翻译,徒之奈何。
《地理信息系统算法基础》和《地理信息系统原理与算法》这两本书我还是只推荐前者,其原因是要读懂后面这本太难了。《地理信息系统算法基础》是典型的教材式图书,中规中矩,一丝不苟,全面、系统地收集和整理了当前地理信息系统算法领域的相关资料,以地理信息系统设计与实现为线索,内容涉及地理空间数据的描述、检索、存储和管理,以及地理空间信息分析基本方法的设计和实现。循序渐进地介绍了GIS算法的基础、坐标变换算法、数据转换和组织算法、空间度量算法、索引算法、内插算法等多个实用条目,基本上涵盖了我们日常使用的一些基本GIS算法。当然,阅读它之前最好还是把我们的微积分和线性代数再捡些回来,否则还是会一头雾水的。
作为一本教材,它当然也有教程的通病或说不足之处,即门门俱到,但没有几个算法的介绍精深一些,以致许多网络评语认为“没应用,不实际”,不过话说回来,有人对涉及算法这种高级主题都希望有“1+1=2”式不需要自己思考的教程,也只能让人哭笑不得,不过这也说明一个问题——发出这种抱怨的人还不适合阅读关于算法的书。
怎么样来阅读《地理信息系统算法基础》呢?我的建议是需要的时候挑出来阅读、思考、写程序和总结,而不是从第一章浏览到最后一章,后面的方法对读者毫无意义,白白浪费时间而已。
需不需要学习点算法,已经不是“仁者见仁、智者见智”的问题了,虽然许多GIS类库已经将相当多的算法和功能包装成函数,但我想,你是不会甘愿做一个代码堆砌工的,对吗?