首页 > 图书中心 >图书详情
地理信息系统(GIS)底层开发
作者:李响
丛书名:清华科技大讲堂丛书
定价:79元
印次:1-1
ISBN:9787302667209
出版日期:2024.08.01
印刷日期:2024.07.30
"本书是一本系统介绍一个地理信息系统底层开发的完整教程,讲授如何通过程序语言实现地理信息系统的基本功能,包括空间数据与属性数据的管理、分析及可视化等。全书内容均为底层开发,不依赖于任何商业地理信息系统软件,各种算法或数据操作方法均有详细介绍,且深入浅出。通过阅读本书,希望提高读者的原始创新能力。 第1章介绍了如何实现一个最小化的地理信息系统,第2章搭建了一个底层开发的基本框架,第3至5章讲述了地理信息可视化的基本要点,第6章介绍了矢量图层,第7章讲述鼠标在地理信息浏览中的作用,第8至11章介绍Shapefile文件的读取以及如何自定义地理信息系统数据文件格式,第12至14章介绍空间及属性信息的选择方法,第15章介绍栅格图层,第16章介绍多图层管理,第17章实现了一个基本的地理信息系统集成控件,第18及19章介绍了地理信息的可视化技术,第20及21章讲述了网络分析方法的实现,第22及23章介绍了空间索引的构建及应用,第24章介绍了空间参考系统,第25及26章讲述了空间及属性数据的编辑方法,第27章介绍了地理信息系统开发的几种优化方法。 为便于读者高效学习,快速掌握地理信息系统底层开发知识,本书作者精心制作了电子书、完整的源代码以及通过电子邮件或微信公众平台的答疑服务等内容。 本书适合作为广大高校地理信息系统或地理信息科学专业的课程教材,也可以作为地理信息系统技术开发者或爱好者的自学参考用书。 "
more >前言 什么是地理信息系统底层开发 首先,我们需要定义什么是地理信息系统(GIS)。根据作者的理解,地理信息系统就是一个能够处理、分析和应用各类空间数据的软件系统。目前,工业界已经有不少成熟的商业或非商业的地理信息系统软件产品,比如ArcGIS。针对这些软件的应用通常可分为两个层次,即“应用”和“开发”,前者即利用软件的现有功能,通过非程序化的方式,达到应用的目的; 而后者则是在这些软件平台提供的二次开发工具的基础之上,开发一个新的软件产品,这通常被称为“基于某某软件的地理信息系统二次开发”,比如ArcGIS的二次开发工具ArcGIS Engine。对于一个非常成熟的地理信息系统软件产品来说,作者建议二次开发者阅读或学习其官方用户手册或开发教程,通常更加完备且准确。 本书要讲授的内容不是“二次开发”,而是“底层开发”。简单来说,我们的“底层开发”不是基于ArcGIS Engine开发一个软件,而是希望开发一个类似ArcGIS或ArcGIS Engine的软件。当然,我们说的“底层开发”也是有“底”的,或者说是相对的,它不是从机器语言或汇编语言开始,而是基于高级程序设计语言的,在本书中选择的是Windows平台下的C#编程语言,同时也建议读者能够基于本书的思想,尝试利用其他语言实现底层开发,在本书之前的读者群中,就曾经有过读者利用Java或Python语言在不同的操作系统下完成了本书的大部分学习内容,而且看起来非常棒! 为什么要学习地理信息系统底层开发 作者认为有如下三个理由。 第一,在开源共享的大环境下,越来越多的地理信息系统相关研发人员觉得底层开发是没有必要的,因为我们通常可以很快地从网上找到别人做好的东西,快速整合到自己的系统中。作者非常赞同这样的做法,站在别人的肩膀上,让步伐更快些。同时,作者也在深深地思考,提供资源的人总是有限和少数的,如果每个人都只做成果的使用者或集成者,那么谁去创造成果?从这个意义上讲,作者不期待本书有多大的销量,但作者相信本书的读者将有可能成为社会的“关键少数”。 第二,持怀疑态度的批评者可能会认为,本书介绍的内容过于基础,其中绝大多数内容都是现有商业软件已经完全实现了的,读者即便学会了,也似乎没有用武之地。关于这一点,作者的观点是,如果希望超越,首先需要学会跟跑。不曾踏过前人经历的坑坑洼洼,就必将会跌入未来某一个大坑里。当然,如果只希望跟跑,那应该问题不大,总会有强者把你从坑里拉出来。但是,针对承担着原始创新重任的关键少数来说,要学会自己站起来才行。这就好比,“苹果”手机已经很不错了,我们为什么还需要“华为”。所以,这也是写作本书的重要目的之一,提高读者的原始创新能力。 第三,从读者个人来讲,如果希望成为一个在未来工作中有能力、有担当的关键少数,需要有强大的分析问题、解决问题的能力。本书并不是一本专门讲授如何提高这些能力的心灵鸡汤,但确实希望在攻克一个个底层开发堡垒的过程中,锻炼读者抽丝剥茧的能力,提高读者的获得感,增强读者的自信心。显然,并不是每一位读者今后都会去从事底层开发工作,去创造一个属于自己的ArcGIS、SuperMap等。而且,阅读完本书,也不能保证读者就已经可以开发一套GIS软件了,如果真如此,那只能说是江湖骗术。更多的实际情况是,读者可能加入某个GIS相关的行业,因为了解底层的秘密,而成为关键少数的中流砥柱。毕竟,仅仅了解GIS成熟软件二次开发的门槛太低了。因此,从这个意义上讲,写作本书的另一个重要目的就是提高读者的行业竞争能力。 阅读本书会得到什么 通过前一小节的说明,我们希望读者经由阅读此书,提高两个能力: ■原始创新能力。 ■行业竞争能力。 在知识点方面,我们会介绍如何利用程序设计语言实现GIS的三大功能,包括: ■空间数据管理。 ■空间数据分析。 ■空间数据可视化。 除了书本身,我们还提供: ■对每一位认真的读者来说都很需要的程序源码。 ■一些示例空间数据及相关参考文档。 ■作为教材讲授时所需要的教学课件。 上述资料可通过以下方式获得: ■搜索并关注微信公众号“大数据攻城狮”,输入“XGIS”,获得下载地址。 阅读本书前的准备 本书在Windows操作系统下,以C#语言为开发语言进行讲解。在阅读本书之前,读者需要对GIS的基本概念及C#语言有一定了解。此外,面向对象编程思想也在本书有较好的应用,因为这是编写一个较为复杂的软件平台所必需的,读者可事先寻找相关资料,对这一思想加以学习和领会。相信通过阅读本书,会进一步加深读者对C#语言及面向对象编程思想的理解。 学习本书内容,读者唯一需要特别安装的软件就是Visual Studio集成开发环境(IDE),该软件是Microsoft公司的一个产品,如果是出于学习的目的,读者可以从该公司网站上免费下载并安装这个产品,在试用一段时间后,通过电子邮件注册的方式,读者就可以永久使用这一开发工具。本书就是利用这一开发工具编写代码的。Visual Studio是一个存在已久的软件产品,已经发布了多个版本,而本书内容并不针对其中的特定版本,读者可以按照以下步骤下载并安装最新的Visual Studio软件。 1. 在网络浏览器中输入或者通过网络搜索引擎,搜索关键字“Visual Studio IDE”,通常在搜索结果中的第一项就是上述网址。 2. 在打开的网页中,找到当前适用于读者Windows操作系统的最新版本,根据网页提示完成下载和安装。 在编写本书时,我们选择的版本是Visual Studio Community 2019。当安装结束后,在所有程序中,读者会发现一个新的程序,名为“Visual Studio 2019”,单击它,就可以开始学习本书的第1章了; 否则,请重新安装上述软件工具。在本书中,我们将“Visual Studio Community 2019”简称为“VS”。 关于书中的程序源码 本书附带的程序源码可以直接在VS中打开阅读。本书附录包含所有类及新定义数据类型的属性成员和函数的定义及说明。此外,文中所有源码都会被清楚地标明其所属的文件或类,例如,如下信息表示所列出的代码属于代码文件“BasicClasses.cs”,它定义了一个类,叫作XVertex。 BasicClasses.cs public class XVertex { public double X; public double Y; public XVertex(double _X, double _Y) { X = _X; Y = _Y; } public double Distance(XVertex _AnotherVertex) { return Math.Sqrt((X - _AnotherVertex.X) * (X - _AnotherVertex.X) + (Y - _AnotherVertex.Y) * (Y - _AnotherVertex.Y)); } public void CopyFrom(XVertex _V) { X = _V.X; Y = _V.Y; } } 而如下信息表明为代码文件“BasicClasses.cs”中的类“XTools”定义了一个函数“CalculateLength”。 BasicClasses.cs/XTools public static double CalculateLength(ListXVertex _Vertexes) { double length = 0; for (int i = 0; i _Vertexes.Count - 1; i++) length += _Vertexes[i].Distance(_Vertexes[i + 1]); return length; } 同时,基于本书讲解的内容开发的多个实用工具可以通过微信公众号“大数据攻城狮”获得,欢迎读者关注。 至此,我们已经完成了准备工作,现在开始正式的学习内容。
more >