• 地理信息系统(GIS)底层开发
21年品牌 40万+商家 超1.5亿件商品

地理信息系统(GIS)底层开发

正版全新

59.28 7.5折 79 全新

库存11件

上海浦东
认证卖家担保交易快速发货售后保障

作者李响

出版社清华大学出版社

ISBN9787302667209

出版时间2022-12

装帧其他

开本16开

纸张胶版纸

定价79元

货号4536830

上书时间2024-09-05

闲暇一卷书的书店

三年老店
已实名 已认证 进店 收藏店铺

   商品详情   

品相描述:全新
商品描述
【书    名】 地理信息系统(GIS)底层开发
【书    号】 9787302667209
【出 版 社】 清华大学出版社
【作    者】 李响
【出版日期】 2024-08-01
【开    本】 16开
【定    价】 79.00元

【编辑推荐】 
本书是GIS领域的经典之作,详细介绍了GIS的基本理论和应用。适合作为GIS从业者的参考书,也适合初学者建立系统的GIS知识体系。适合作为GIS从业者的参考书,也适合初学者建立系统的GIS知识体系。

【内容简介】 
本书是一本系统介绍一个地理信息系统底层开发的完整教程,讲授如何通过程序语言实现地理信息系统的基本功能,包括空间数据与属性数据的管理、分析及可视化等。全书内容均为底层开发,不依赖于任何商业地理信息系统软件,各种算法或数据操作方法均有详细介绍,且深入浅出。通过阅读本书,希望提高读者的原始创新能力。
  第1章介绍了如何实现一个*小化的地理信息系统,第2章搭建了一个底层开发的基本框架,第3至5章讲述了地理信息可视化的基本要点,第6章介绍了矢量图层,第7章讲述鼠标在地理信息浏览中的作用,第8至11章介绍Shapefile文件的读取以及如何自定义地理信息系统数据文件格式,第12至14章介绍空间及属性信息的选择方法,第15章介绍栅格图层,第16章介绍多图层管理,第17章实现了一个基本的地理信息系统集成控件,第18及19章介绍了地理信息的可视化技术,第20及21章讲述了网络分析方法的实现,第22及23章介绍了空间索引的构建及应用,第24章介绍了空间参考系统,第25及26章讲述了空间及属性数据的编辑方法,第27章介绍了地理信息系统开发的几种优化方法。
  为便于读者高效学习,快速掌握地理信息系统底层开发知识,本书作者精心制作了电子书、完整的源代码以及通过电子邮件或微信公众平台的答疑服务等内容。
  本书适合作为广大高校地理信息系统或地理信息科学专业的课程教材,也可以作为地理信息系统技术开发者或爱好者的自学参考用书。

【目录】 
第1章一切从“●”开始

1.1*简单的空间对象

1.2让空间对象变成程序代码

1.3第*个迷你GIS

1.4总结

第2章更完整的类库

2.1空间对象体系

2.2迷你GIS的重新实现

2.3空间对象的随机生成

2.4总结

第3章屏幕坐标与实际坐标

3.1坐标系统

3.2两种坐标之间的转换

3.3迷你GIS的再次更新

3.4总结

第4章浏览功能的初步实现

4.1缩放

4.2平移

4.3归一化的浏览操作

4.4更丰富的迷你GIS

4.5总结

第5章更有效的显示方法

5.1闪烁的原因

5.2用双缓冲解决闪烁问题

5.3解决显示内容消失的问题

5.4解决显示内容变形的问题

5.5提高显示效率

5.6总结

第6章矢量图层

6.1建立属性数据的字段结构

6.2空间对象类型

6.3矢量图层类定义

6.4矢量图层类的应用

6.5总结

第7章用鼠标实现浏览

7.1定义鼠标的功能

7.2鼠标按键事件

7.3鼠标滚轮事件

7.4总结

第8章读取Shapefile中的点实体

8.1Shapefile文件结构概览

8.2读取shp文件头

8.3读取shp记录

8.4更新的迷你GIS

8.5总结

第9章读取Shapefile中的线和面实体

9.1更完善的XLine及XPolygon

9.2线与面shp文件的读取

9.3功能更加完善的GIS

9.4总结

第10章读取Shapefile中的属性数据

10.1dbf文件结构及文件头

10.2字段描述区

10.3读取数据区

10.4完整的Shapefile读取函数

10.5GIS的再次完善

10.6总结

第11章空间数据文件的读写

11.1数据类型与文件结构

11.2文件头与图层名的写入

11.3字段信息的写入

11.4空间和属性数据值的写入

11.5自定义文件的读取

11.6读写过程测试

11.7总结

第12章点选空间对象

12.1点选框架的建立

12.2点到线实体的距离

12.3点到面实体的距离

12.4实现屏幕点选

12.5总结

第13章框选空间对象及选择集操作

13.1框选算法

13.2实现屏幕框选

13.3定义选择集

13.4选择集的高亮显示

13.5操作选择集

13.6总结

第14章基于属性特征的对象选择

14.1基于查询条件的对象选择

14.2属性查询功能的实现

14.3基于属性窗口的空间对象选择

14.4总结

第15章栅格图层

15.1栅格描述文件结构

15.2扩充的图层类定义

15.3构建栅格图层

15.4栅格图层的打开与显示

15.5总结

第16章多图层管理

16.1定义图层文档类XDocument

16.2实现图层管理函数

16.3实现图层选择函数

16.4实现图层文档的读写

16.5实现支持图层文档的窗体

16.6总结

第17章控件化功能组织

17.1添加一个XPanel控件

17.2浏览功能

17.3图层文档菜单项处理

17.4图层菜单项处理

17.5基于控件开发的GIS

17.6总结

第18章完善的自动标注功能

18.1字体与颜色

18.2锚点与位置

18.3方向与角度

18.4写入与读取

18.5考虑各种属性特征的标注绘制

18.6人机交互式定制标注属性

18.7总结

第19章专题地图

19.1XSymbology及唯一值专题地图

19.2独立值专题地图

19.3分级设色专题地图

19.4集成化实现专题地图定制

19.5总结

第20章网络模型基础

20.1基本的网络要素

20.2建立拓扑关系

20.3网络模型读写

20.4*短路径分析

20.5展示分析结果

20.6总结

第21章网络模型应用

21.1FormNetwork的功能分析

21.2构建网络模型

21.3实现*短路径分析

21.4总结

第22章空间索引的构建

22.1空间索引基础

22.2定义结点

22.3种树准备

22.4结点的插入

22.5结点的分裂

22.6树的调整

22.7总结

第23章空间索引的应用

23.1RTree在图层中的引入

23.2基于树结构的搜索

23.3树结构的存储

23.4总结

第24章空间参考系统

24.1WGS 1984及UTM

24.2单个点的坐标转换

24.3空间实体坐标转换

24.4图层坐标转换

24.5验证转换效果

24.6总结

第25章图层新建与编辑栏的添加

25.1交互式新建图层

25.2添加编辑工具栏

25.3总结

第26章空间对象编辑

26.1空间实体绘制

26.2属性值编辑

26.3空间对象的删除、修改与保存

26.4总结

第27章*后的整合

27.1PeekChar的问题

27.2避免无效绘制

27.3属性窗口的快速打开

27.4总结

附录: XGIS类库说明

【前言】 
什么是地理信息系统底层开发

首先,我们需要定义什么是地理信息系统(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;

}

同时,基于本书讲解的内容开发的多个实用工具可以通过微信公众号“大数据攻城狮”获得,欢迎读者关注。

至此,我们已经完成了准备工作,现在开始正式的学习内容。

   相关推荐   

—  没有更多了  —

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP