《ArcGIS开发权威指南》已经出版等待您的选购

来源:互联网 发布:火炮兰灵族捏脸数据 编辑:程序博客网 时间:2024/03/29 03:51



你的梦想是什么?这是当今综艺节目最流行的一句话。每次都会想,如果我是那个被提问的对象,我该怎么回答呢?我想了好久,无言以对,不禁怀疑我是否是一个有梦想的人?就在我又开启了自我否定的运行模式时,马云对我说,梦想还是要有的,万一实现了呢?


分享地理价值,一个比较大的GIS梦,看起来这有点痴人说梦,但是我从分享中得到一种释然和超脱的感觉,我想并不是每个人都能拥有这样的境界和体会到这样的感觉的。我是一个乐于分享的人,希望能够将自己的一点经验分享给更多的初学者,也希望成为中国GIS大路的小石子,这是我一直在做的梦,而且也希望能一直编织下去,更希望将分享理念影响更多的人参与进来,共同实现GIS梦想。


常言道,罗马不是一天造成的,那么ArcGIS平台产品体系也经历了四十多年的积累和沉淀。一提起罗马,古罗马竞技场无论从建筑设计、文化底蕴堪称城市名片,那么ArcGIS for Desktop就像斗兽场一样沉稳厚重,堪称Esri最自豪的产品典范。梵蒂冈博物馆是世界上最小的国家博物馆,也是最伟大的博物馆。ArcSDE就如梵蒂冈博物馆一样,它现在可能已经淡出视野,深入幕后,看起来变得非常渺小,但是任其海量数据来袭,它仍然能够玩弄于鼓掌之中来诠释它的伟大。万神殿,顾名思义万神之殿,被米开朗基罗赞叹为“天使的设计”。ArcGIS for Server无疑最符合它的气质,产品架构被重新设计,无疑代表最先进的GIS技术理念,支持的服务如万神殿供奉的神灵一般类型多样又神通广大。罗马的威尼斯广场,是城市街道的汇集点,在这里你可以看到威尼斯宫、艾马努埃尔骑士铜像、科斯美汀圣母教堂等等。Portal就是ArcGIS产品体系的中枢广场,通过它可以调用各种资源,就如你身临威尼斯广场看到的一切。常言又道,条条大路通罗马,如果你喜欢她,你就需要深入了解她,感受她的一切。通过史料来研究罗马的悠久历史,通过交流来感受罗马的风土人情,通过旅行来欣赏罗马的建筑设计;同样,你想更加了解ArcGIS产品,开发无疑是通往ArcGIS殿堂的捷径。可能你还停留在传统意义的ArcGIS Engine开发,为添加更多的功能而紧锁眉头;可能你已经被互联网思维所折服,一款Web API让浏览器就可以看到一切才真正叫爽;可能你是一个GIS极客,使用Runtime在移动设备上进行蜻蜓点水般的触动就可以实现经天纬地才是你自己的态度;也可能你是一个GIS的拓展者和引领者,协同共享才是你为GIS事业奋斗的最高理想。不管你是谁,只要你掌握开发的秘诀,在这里你可以增强、你可以扩展、你可以颠覆,制约你的就是你的想象力了。


本书主要以ArcGIS产品体系为基础,介绍相关产品的多种开发模式, 分为综述篇、桌面开发篇,Web开发篇,移动开发篇,地理数据库开发篇,每一个开发方向的编写都是Esri中国售后团队资深的专职产品工程师的辛劳结晶;相关工程师都有至少8~10年的从业经历,大量的用户问题解决案例、行业解决方案、用户培训交流经验是工程师能够高质量完成编写的保障。其中综述篇包括对ArcGIS产品体系、开发模式、技术演变以及职业规划的介绍,让初学者对ArcGIS有一个简单和直接的认识。桌面篇既包括传统的ArcGIS Engine开发,又包括灵活的ArcPy脚本开发。Web篇包括对新一代 Web GIS开发的理论和趋势分析,又包括REST开发的思想和技术路线分析;也包括Esri极力推荐的JS API的前端开发,当然还不能满足功能需求,也可以借助于SOE开发模式来强化和扩展。移动篇包括Esri与当前主流的移动平台Android和iOS的开发介绍,这也是越来越被用户接受和推崇的应用模式。数据库篇包括非常灵活的空间SQL和非常高效的SDE SDK开发解析。其中陈於立负责第六章的编写和后期统筹工作;史斌负责第四章的编写;石羽负责第二章的编写;张宝才负责第七章的编写;李少华负责第一章、第三章、第五章、第八章、第九章的编写和总体统筹工作。各位工程师都是在工作之余,不遗余力的进行ArcGIS技术分享,希望这种分享的精神能够影响更多的人。


本书主要面向的读者包括在校大学生,即将毕业或者刚刚就业的职场新人应该是最适合的读者,当然如果你刚从桌面端开发转型到移动端开发,本书将会充当“转型神器”的角色,因为它适合初学者,我们尽可能不落下初学者所需要的每一个细节,包括预前知识、环境搭建、原理解释、Hello World、开发思想、API功能解析、重点难点精细化讲解、系统授权和部署,当然最后会将所有示例的完整源代码附送给你;另外考虑到如今一个GIS项目包含了多源的技术支撑,我们尽可能在一本书中提及所有主流的ArcGIS开发技术,那么拥有这一本书就可以很任性的奔跑在GIS开发界,当然还包括2015年即将推出的Portal产品的应用开发,这可是最新鲜、最权威的Portal技术参考。本书要求读者有一定的ArcGIS产品使用基础,包括ArcGIS for Desktop、ArcGIS for Server等,开发语言为C#、JavaScript、Java、Objective-C等,数据库以主流的Oracle数据库为基础,当然你可能并不需要掌握所有的产品和开发语言,针对你目前项目的需求或者你自己的兴趣方向而有选择性的学习即可。


本书最大的特点就是“新”,ArcGIS系列产品为最新的10.3版本,JavaScriptAPI为3.10版本,ArcGIS runtime SDK为10.2.5版本。这还不是最主要的,关于ArcGIS Runtime SDK for iOS章节,我们在原有Objective-C开发语言的基础上,增加了Swift语言;关于ArcGISRuntime SDK for Android章节,在原有Eclipse编译器的基础上,增加了Android Studio的相关介绍,目的就是既照顾老用户的编程习惯,又结合相关技术的发展趋势,保证该书的可读性和实效性。本书使用的数据是作者根据各自开发模式的功能需求进行综合,包括四个点状图层(消防站层、医院层、学校图层、交叉口层)、一个线状图层(道路层)、一个面状图层(街坊层),各个图层的坐标数据都经过人工偏移,如果读者获得该数据,需要手工发布地图服务,要素服务、网络分析服务(需要扩展许可)等,才能使用源代码进行Web端或者移动端的相关学习!


在本书的编写过程中,Esri中国信息技术有限公司为我们提供了全方位的帮助和支持,最终使得我们能够顺利完成本书。特别感谢Esri中国技术总监沙志友先生,在百忙之中为本书作序,而且提出了非常中肯的指导和修改建议;感谢北京工业大学闫健卓教授;Esri应用开发部项目主管,哈佛大学付品德教授;Esri北京研发中心总经理张剑宇;Esri美国移动GIS部门架构师孙亮;Esri中国客户及合作伙伴支持中心总监朱政;亚马逊供应链系统架构师高建国;腾讯街景系统集成架构师李永韬;新浪微博LBS部门总监柴琦;Esri中国教育推广经理张聆对本书编写过程中的指导意见。感谢电子工业出版社博文视点陈晓猛编辑的辛苦工作,陈编辑的敬业精神和出色的业务能力让我们感到钦佩。也要感谢Esri中国资深技术工程师穆天龙、刘锋、徐鸿至等在各自擅长的技术方向给予的指导和帮助,当然更要感谢各位编者的家人,是他们给予各位编者大量独立的时间来完成本书,最后要感谢各位编者,这一个小团队从星星之火,到光芒万丈,这其中经历了很多,也许当初我们都看不到希望,不知道未来是一个什么结果,就这样一直坚持,不变的就是梦想,小小的GIS人都有伟大的GIS梦!如今到现在,这真的不是痴人说梦!


基础知识篇


第1章 ArcGIS技术概述 3


1.1 ArcGIS产品的发展历程 3
1.2 ArcGIS产品体系介绍 4
1.2.1 ArcGIS桌面平台产品 4
1.2.2 ArcGIS网络应用产品 6
1.2.3 ArcGIS服务器平台产品 7
1.2.4 ArcGIS云平台产品 8
1.2.5 ArcGIS移动平台产品 9
1.2.6 ArcGIS免费产品 10
1.2.7 ArcGIS与商业软件集成产品 10
1.2.8 ArcGIS开发平台产品 12
1.2.9 ArcGIS其他产品 15
1.3 GIS发展之路与ArcGIS技术演变 15
1.3.1 GIS信息化建设 16
1.3.2 数据生产变更阶段 16
1.3.3 数据信息发布阶段 16
1.3.4 数据共享阶段 16
1.3.5 新一代Web GIS 17
1.4 IT发展之路与ArcGIS技术演变 21
1.4.1 数据库技术发展与ArcGIS技术演变 21
1.4.2 Web技术发展与ArcGIS技术演变 21
1.4.3 移动互联网技术发展与ArcGIS技术演变 22
1.4.4 云计算技术发展与ArcGIS技术演变 22
1.4.5 大数据技术发展与ArcGIS技术演变 22
1.5 GISer的职业规划 23
1.5.1 GIS数据生产方向 24
1.5.2 GIS技术支持方向 25
1.5.3 GIS开发技术方向 25
1.5.4 GIS研究技术方向 27
1.5.5 GIS市场营销方向 27


桌面开发篇


第2章 ArcGIS Engine开发解析 31


2.1 概述 31
2.1.1 ArcGIS Engine简介 31
2.1.2 ArcGIS Engine组成部分 32
2.1.3 许可说明 34
2.1.4 接口和对象 36
2.2 创建**个模板工程 41
2.3 地图的显示结构 44
2.3.1 地图显示 45
2.3.2 地图文档 48
2.3.3 符号系统 52
2.3.4 选择集与刷新事件 54
2.4 数据存储与编辑 56
2.4.1 GDB的基础结构 57
2.4.2 要素查询与索引 63
2.4.3 要素编辑与编辑事件 67
2.4.4 批量编辑与地理处理 70
2.5 几何结构 74
2.5.1 几何的体系结构 74
2.5.2 几何关系 78
2.5.3 空间参考 81
2.6 小结 84


第3章 ArcPy开发解析 85


3.1 Python语言介绍 85
3.1.1 脚本语言 85
3.1.2 Python脚本 85
3.2 Python语法快速浏览 86
3.2.1 Python的IDE介绍 86
3.2.2 数据类型 87
3.2.3 操作符 88
3.2.4 变量与赋值 89
3.2.5 代码块及缩进对齐 89
3.2.6 控制结构 89
3.2.7 函数 91
3.2.8 错误处理 91
3.3 **个ArcPy脚本 92
3.3.1 Python在ArcGIS的衍生过程 92
3.3.2 Geoprocessing框架中的ArcPy 92
3.3.3 ArcPy的Hello World 94
3.4 ArcPy的开发精解 95
3.4.1 ArcPy的导入 95
3.4.2 ArcPy函数的命名规则 95
3.4.3 ArcPy函数的参数 96
3.4.4 ArcPy函数的返回值 98
3.5 ArcPy函数介绍 98
3.5.1 概述 98
3.5.2 环境变量 99
3.5.3 产品级别与扩展 100
3.5.4 描述函数 101
3.5.5 列表函数 101
3.6 ArcPy几何类介绍 102
3.6.1 几何类 102
3.6.2 几何构造 102
3.6.3 空间关系 104
3.7 ArcPy的数据访问模块介绍 104
3.7.1 高性能的游标支持 104
3.7.2 编辑会话 107
3.8 ArcPy的制图模块 108
3.8.1 地图文档相关函数 108
3.8.2 典型场景——批量更换数据源脚本 110
3.8.3 地图服务相关函数 111
3.8.4 典型场景——发布地图服务 114
3.9 ArcPy脚本工具 116
3.9.1 从独立脚本到脚本工具 116
3.9.2 ArcPy制作脚本工具流程 117
3.10 常用ArcPy脚本示例 122
3.10.1 ArcSDE多版本数据备份 122
3.10.2 ArcSDE版本管理工作流程 124
3.10.3 ArcGIS for Server自动化服务管理 127
3.11 ArcPy脚本调试 127
3.11.1 基本脚本调试 127
3.11.2 专业IDE调试 128
3.12 自动化执行ArcPy脚本 129
3.12.1 Windows操作系统设置 129
3.12.2 Linux操作系统设置 129
3.13 帮助资源 131



Web开发篇


第4章 ArcGIS API for 开发解析 135


4.1 概述 135
4.2 预前知识快速浏览 135
4.2.1 ArcGIS for Server 135
4.2.2 REST API 137
4.2.3 HTML/HTML5 141
4.2.4 CSS/CSS3 142
4.2.5 143
4.2.6 AJAX 143
4.2.7 Dojo 144
4.3 ArcGIS API for 功能概述 144
4.4 ArcGIS API for 开发原理解析 145
4.4.1 运行流程 145
4.4.2 重点对象 146
4.4.3 事件 151
4.4.4 控件 153
4.5 ArcGIS API for 开发环境搭建 159
4.5.1 IDE环境设置 159
4.5.2 ArcGIS API for 开发环境部署 161
4.6 典型案例解析以及代码分析 162
4.6.1 Hello World 162
4.6.2 一个基础地图应用 164
4.6.3 GraphicLayer 167
4.6.4 地图渲染 169
4.6.5 数据查询 177
4.6.6 几何服务 183
4.6.7 网络分析 186
4.6.8 GP服务 189
4.6.9 扩展 191
4.7 开发调试介绍 196
4.7.1 使用Fiddler 196
4.7.2 基于浏览器调试 197
4.7.3 离线/在线SDK的Sandbox 199
4.8 结合第三方框架 200
4.9 常见的开发帮助资源 201


第5章 服务对象扩展(SOE)开发解析 203


5.1 SOE应用场景 203
5.2 GP服务VS.SOE 203
5.3 SOE开发与部署 204
5.3.1 SOE开发环境 204
5.3.2 SOE部署 205
5.4 SOE开发调试方法 206
5.5 以应急行业为例扩展SOE功能介绍 207
5.6 SOE工作原理 207
5.6.1 重启添加SOE扩展的地图服务 208
5.6.2 关于Schema的理解 209
5.6.3 SOE的属性(Property)设置 210
5.6.4 获取数据源 213
5.6.5 打开SOE资源链接 215
5.6.6 关于SOE的处理流程 215
5.6.7 执行SOE实现功能 216
5.7 ArcGIS API for 调用SOE服务 219
5.8 帮助资源 221


移动开发篇


第6章 ArcGIS Runtime SDK for Android开发解析 227


6.1 Android基本知识 227
6.2 ArcGIS Runtime SDK for Android概述 230
6.3 开发环境搭建 231
6.4 开启开发之旅——Hello World 238
6.5 重中之重——Map 253
6.5.1 Map的构成 253
6.5.2 与Map交互 257
6.5.3 为Map增色 260
6.6 一技之长——Analysis 267
6.6.1 离线空间分析之GeometryEngine 268
6.6.2 在线空间分析之QueryTask 269
6.6.3 在线空间分析之IdentifyTask 271
6.6.4 在线空间分析之RouteTask 272
6.7 随时随地——Offline 274
6.7.1 底图数据离线 275
6.7.2 业务数据离线 279
6.7.3 离线业务数据编辑与同步 284
6.8 Cloud&Portal 286
6.9 应用程序授权、与分发 290
6.9.1 授权应用程序 290
6.9.2 应用程序 297
6.9.3 应用程序分发 299
6.10 帮助资源 299


第7章 ArcGIS Runtime SDK for iOS开发解析 301


7.1 iOS基本知识 301
7.2 ArcGIS Runtime for iOS概述 303
7.3 开发环境搭建 304
7.4 Hello Map 304
7.5 一技之长——Analysis 314
7.5.1 查询 316
7.5.2 网络分析 321
7.5.3 地理处理 333
7.5.4 几何操作 339
7.6 随时随地——Offline 342
7.7 编辑数据 347
7.8 ArcGIS Online和Portal 360
7.9 授权你的应用 371
7.10 帮助资源 378


地理数据库开发篇


第8章 ArcGIS的空间SQL开发解析 381


8.1 空间SQL的适用场景 381
8.2 ArcGIS空间存储变迁 381
8.2.1 包含ArcSDE系统表 381
8.2.2 不包含ArcSDE系统表 382
8.3 空间类型 382
8.4 配置空间ST_GEOMETRY的SQL操作 383
8.4.1 配置Oracle监听使用ST_GEOMETRY原理 383
8.4.2 配置Oracle监听使用ST_GEOMETRY——Windows 385
8.5 SQL操作非版本数据 386
8.5.1 SQL创建空间表 387
8.5.2 注册ST_GEOMETRY空间列 387
8.5.3 ST_Geometry的构造函数 388
8.5.4 SQL编辑空间表 389
8.5.5 空间SQL添加ObjectID和GUID 390
8.5.6 SQL创建空间索引 391
8.5.7 注册Geodatabase 392
8.6 ST_GEOMETRY的SQL的性能分析 393
8.6.1 ST_GEOMETRY查询原理 393
8.6.2 版本、补丁与ST_GEOMETRY 394
8.6.3 空间关系函数介绍 394
8.6.4 ST_GEOMETRY效率测试环境 396
8.6.5 空间关系函数选择 396
8.6.6 空间关系函数参数输入位置 400
8.6.7 SQL语句 404
8.7 SQL操作版本化数据 404
8.7.1 SQL操作版本化数据原理 404
8.7.2 版本化视图的创建 405
8.7.3 SQL创建子版本 405
8.7.4 SQL设置当前编辑版本 406
8.7.5 SQL编辑版本化数据 407
8.7.6 版本协调和提交及子版本删除 407
8.8 帮助资源 408


第9章 ArcSDE SDK开发解析 409


9.1 ArcSDE SDK介绍 409
9.2 ArcSDE SDK的生命周期 409
9.3 ArcSDE SDK性能 409
9.4 ArcSDE SDK for Java环境搭建 410
9.5 ArcSDE SDK for Java开发精解 411
9.5.1 ArcSDE SDK for Java开发概述 411
9.5.2 ArcSDE SDK for Java之查询解析 411
9.6 ArcSDE SDK for Java典型示例——数据编辑 414
9.6.1 新增操作 414
9.6.2 更新操作 414
9.6.3 删除操作 415
9.7 帮助参考 415



1 0
原创粉丝点击