编辑推荐
《ArcGIS Engine组件式开发及应用(第二版)》特色:
★本书根据地理信息系统软件开发特点及作者多年教学和项目研发经验,在内容组织上层次分明,结构清晰,图文并茂,重点突出。
★本书详细介绍了ArcGIS软件开发中所涉及的ArcGiSEngine组件库、接口和实现接口的类。强调将地理信息系统理论和实际软件开发应用相结合,并给出了大量的实例代码。
★本书在实例的组织上强调完整性和连贯性,既突出代码简练、易读的特点,又注重利用接口、类等面向对象的编程思想。
★本书内容深入浅出,表述严谨,可作为高等院校地理信息科学和测绘工程等专业本科生教材,也可作为研究生以及从事地理信息系统软件开发工程技术人员的参考用书。
内容简介
“ArcGISEngine组件式开发及应用”是西安科技大学为地理信息系统本科专业开设的一门专业课。《ArcGIS Engine组件式开发及应用(第二版)》在积累作者近年来讲授这门课经验的基础上,结合具体GIS软件项目开发实践,采用C#语言编写应用实例,并以ArcGISEngine10.1为开发平台编写而成,系统讲述了ArcGISEngine组件式开发的方法和具体应用。
《ArcGIS Engine组件式开发及应用(第二版)》共12章,内容涉及ArcGISEngine基础、使用ArcGISEngine控件编程、插件式工具集的实现、几何形体对象Geometry、地图组成、空间数据符号化、空间数据管理、空间分析、空间数据编辑、地图输出、三维可视化及三维分析和基于ArcGISServer的WebGIS开发。对每部分所涉及的接口,实现接口的类,以及对应的属性和方法均进行了详细介绍。为便于读者理解和练习,在各部分还结合实际GIS项目开发实践,列举了大量采用C#语言编程实现的工程实例,突出编程实践和具体应用,以使读者能有效了解和掌握ArcGISEngine开发的实战技术。
《ArcGIS Engine组件式开发及应用(第二版)》可作为地理信息系统及相关专业高年级本科生和研究生的教材,也可供各行业从事ArcGISEngine软件开发工程技术人员参考。
内页插图
目录
第二版前言
第一版前言
第1章 ArcGlS Engine基础
1.1 ArcGIS Engine概述
1.2 ArcGIs Engine组件库
1.3 阅读对象模型图
1.3.1 ArcGIs Engine中的类与对象
1.3.2 类与类的关系
1.4 组件对象模型
1.4.1 软件开发历史
1.4.2 组件对象模型
1.5 使用控件构建独立应用程序
1.5.1 程序功能描述
1.5.2 程序控件设计
1.5.3 代码编写
第2章 使用ArcGIS Engine控件编程
2.1 MapC0ntrol控件
2.1.1 主要接口
2.1.2 用MapControl控件加载地理数据
2.1.3 鼠标与控件的交互
2.1.4 实现鹰眼功能
2.2 PageLayoutControl控件
2.2.1 用PageLayoutControl操作Mxd文件
2.2.2 PageLayout与MapControl联动
2.3 TOCControl控件
2.3.1 TOCControl控件概述
2.3.2 TOCConttrol控件应用开发实例
2.4 ToolbarControl及相关对象
2.4.1 概述
2.4.2 ToolbarControl控件
2.4.3 ToOlbarItem
2.4.4 ToobarMenu组件类
2.5 ControlComnlallds
2.5.1 通过ToolbarControl控件使用ControlCommands
2.5.2 不通过ToolbarControl控件使用ControlCommands
2.6 应用开发实例
2.6.1 概述
2.6.2 自定义命令开发实例
2.6.3 自定义开发工具
2.6.4 自定义菜单开发实例
2.6.5 生成上下文菜单
第3章 插件式工具集的实现
3.1 插件式设计简介
3.2 插件式开发框架的工作机制
3.2.1 插件式的体系结构
3.2.2 插件的实现原理
3.3 插件逻辑模型
3.3.1 插件基类及接口的定义
3.3.2 插件容器基类及接口的定义
3.3.3 插件容器的设计
3.3.4 工具项插件设计
3.3.5 菜单项插件设计
3.4 插件式平台建立
3.4.1 插件功能类的获取
3.4.2 主程序窗体定义
3.4.3 插件功能的界面配置
3.4.4 刷新插件功能状态
3.4.5 插件功能类的制作
第4章 几何形体对象Geometry
4.1 Geometry模型
4.2 Point和MultiPoint对象
4.2.1 Point对象
4.2.2 MultiPoint对象
4.3 Envelope包络线对象
4.4 Curve曲线对象
4.4.1 Segment对象
4.4.2 路径对象
4.4.3 环对象
4.4.4 PolyCurve对象
4.5 Geometry集合接口
4.5.1 IGeometrvConection接口
4.5.2 ISegmentCoUection接口
4.5.3 IPointCollection接口
4.6 空间参考
4.6.1 空间参考含意
4.6.2 两种坐标系统
4.6.3 设置空间参考
第5章 地图组成
5.1 Map对象
5.1.1 IMaD接口
5.1.2 IGraphicsContainer接口
5.1.3 IActiveView接口
5.1.4 IActiveViewEvents接口
5.1.5 IMapBookmarks接口
5.1.6 ITableCollection接口
5.2 图层对象
5.2.1 ILayer接口
5.2.2 要素图层
5.2.3 往地图中加入CAD文件
5.2.4 TIN图层
5.2.5 GraphicsLayer对象
5.3 ScreenDisplay对象
5.4 地图排版
5.4.1 PageLayout对象
5.4.2 Page对象
5.4.3 SnapGrid对象
5.4.4 SnapGuides对象
5.4.5 RulerSettings对象
5.5 元素对象
5.5.1 图形元素
5.5.2 框架元素
5.5.3 元素的选择跟踪对象
5.6 地图格网对象
5.6.1 MapGfid对象
5.6.2 MapGridBorder对象
5.6.3 MapGridLabel对象
5.7 MapSurround对象
5.7.1 图例对象
5.7.2 指北针对象
5.7.3 比例尺对象
5.7.4 比例尺文本对象
5.8 使用样式对象
5.8.1 StyleGallery对象
5.8.2 StyleGalleryltem对象
第6章 空间数据符号化
6.1 概述
6.2 使用颜色对象
6.2.1 颜色模型
6.2.2 Color。对象
6.2.3 颜色可视化选择
6.2.4 ColorRamp对象
6.3 使用Symbol符号对象
6.3.1 MarkerSymb01对象
6.3.2 LineSymbol对象
6.3.3 FillSvrnbol对象
6.3.4 TextSymbol对象
6.3.5 3DChartSymbol对象
6.4 专题着色渲染
6.4.1 SimpleRenderer简单着色
6.4.2 ClassBreakRenderer分级着色
6.4.3 LlniqueValueRenderer唯一值着色
6.4.4 ProportionalSymbolRenderer依比例符号着色
6.4.5 DotDensityRenderer.密度点渲染着色
6.4.6 ChartRenderer图表渲染着色
6.5 地图标注
6.5.1 TextElement标注
6.5.2 自动标注
6.6 开发实例
第7章 空间数据管理
7.1 概述
7.2 地理数据库基础知识
7.3 Workspace及相关对象
7.3.1 打开工作空间
7.3.2 工作空间
7.3.3 PropertvSet
7.3.4 名称对象
7.4 Dataset对象
7.4.1 GeoDataset类
7.4.2 FeatureDataset对象
7.5 表、对象类和要素类
7.5.1 Table对象
7.5.2 ObjectClass对象
7.5.3 FeatureClass对象
7.5.4 字段集与字段
7.5.5 与字段相关的对象
7.6 行、对象和要素
7.6.1 RowBuffer和Row对象
7.6.2 Obiect和Feature对象
7.6.3 更新要素
7.7 关系与关系类
第8章 空间分析
8.1 概述
8.2 空间查询
8.2.1 Cursor与Featurecursor对象
8.2.2 OueryFilter对象
8.2.3 SpatialFilter对象
8.2.4 要素选择集
8.3 空间拓扑运算
8.4 空间关系运算
8.5 IProximityOperator接口
8.6 叠加分析
8.6.1 矢量图层的叠加分析
8.6.2 IBasicGeoProcessor接口·
8.6.3 栅格图层的叠加分析
8.6.4 RasterMatlraps组件类
8.7 网络分析
8.7.1 网络分析概述
8.7.2 网络分析的实际应用
8.7.3 网络数据集
8.7.4 网络分析的相关类说明
8.7.5 相关接口说明
8.7.6 最短路径分析的代码实现
8.8 开发实例
8.8.1 线、面要素分割工具实例
8.8.2 矢量图层叠加运算实例
第9章 空间数据编辑
9.1 IWorkspaceEdit2接口
9.2 DisplayFeedback对象
9.2.1 产生新Geometry的Feedback对象
9.2.2 移动几何形体对象上的节点
9.2.3 移动整个几何形体对象
9.2.4 其他DisplayFeedback介绍
9.3 EngineEditor对象
9.3.1 IEngineEditor接口
9.3.2 IEngineEditTask接口
9.3.3 IEngineEditLayers接口
9.3.4 IEngineEditProperties接口
9.3.5 IEngineEditSketch接口
9.4 ArcEngine编辑任务流
9.4.1 开始编辑对象
9.4.2 设置编辑图层
9.4.3 设置编辑任务
9.4.4 编辑操作
9.4.5 保存编辑对象
9.4.6 停止编辑
9.5 编辑命令和工具
9.5.1 常用编辑命令介绍
9.5.2 常用编辑命令实例
第10章 地图输出
第11章 三维可视化及三维分析
第12章 基于ArcGIS Server的Web GIS开发
主要参考文献
前言/序言
深入探索地理信息系统的核心:现代GIS开发技术与实践 本书旨在为致力于构建高效、可靠、定制化地理信息系统(GIS)的开发者和专业人士提供一份全面的技术指南。本书聚焦于当前主流的GIS平台架构、开发范式以及前沿技术应用,侧重于理论基础的夯实与工程实践的深化。我们将系统地剖析现代GIS应用的设计哲学、核心算法实现,以及面向特定行业需求的解决方案构建。 第一部分:GIS基础架构与数据模型重构 本部分将从底层原理出发,彻底梳理现代GIS系统的技术栈和数据组织方式。 第一章:现代GIS技术栈的演进与选型策略 本章首先概述了从传统桌面GIS到云计算、移动端集成的新一代GIS技术生态系统的演变路径。我们将深入探讨开源GIS框架(如PostGIS, GeoServer, QGIS的底层库)与商业GIS内核(如Esri的ArcObjects/ArcPy背后的核心组件)在架构设计上的异同,帮助读者理解不同技术选型对项目性能、可维护性和成本的影响。重点分析了微服务架构在地理空间数据服务(GeoServices)中的应用潜力,以及如何设计一个高可用的空间数据后端。此外,还会详细讨论容器化技术(Docker, Kubernetes)在加速GIS应用部署和弹性伸缩中的作用。 第二章:空间数据模型、拓扑与高性能存储 本章超越了基础的Shapefile或GeoJSON结构,深入探讨了复杂地理空间数据的组织方式。我们将详细解析维度模型(如时间维度、三维/多维数据)对传统二维拓扑规则的挑战与扩展。拓扑关系的精确计算与维护是地理空间分析的基石,本章将重点剖析诸如Delaunay三角剖分、Voronoi图生成以及如何利用高级数据结构(如R-Tree, Quadtree)实现快速空间索引。对于存储层面,我们将对比传统关系型数据库的空间扩展(如SQL/MM Spatial)与原生NoSQL/NewSQL数据库在处理海量地理空间数据时的性能权衡,特别是针对时序地理数据的事务一致性与查询优化策略。 第二部分:核心空间分析算法的工程实现 本部分将详细介绍GIS中最关键的空间分析算法的数学原理、性能优化方法以及在不同编程语言环境下的具体实现思路。 第三章:几何运算与精度控制 几何运算,如缓冲区分析、叠加分析(Union, Intersect, Difference)是GIS中最基础也是最容易出错的部分。本章将剖析经典算法(如Sutherland-Hodgman多边形裁剪算法)的局限性,并转向更健壮的布尔运算内核(如Clipper库背后的技术原理)。重点讨论浮点数精度问题在地理空间计算中的影响,以及如何通过引入容差(Epsilon)和使用高精度算术库来确保结果的可靠性。我们将展示如何高效地处理自相交几何、退化几何等“脏数据”问题。 第四章:空间插值与表面分析的高级方法 表面分析是遥感解译和地形分析的核心。本章将跳过简单的IDW方法,专注于解释如克里金插值(Kriging)的变异函数模型建立、普通克里金与通用克里金的选择依据。对于大规模DEM(数字高程模型)的处理,我们将探讨快速傅里叶变换(FFT)在计算视线分析和坡度/坡向分析中的加速作用。此外,探讨基于机器学习的非线性空间插值方法(如高斯过程回归在空间预测中的应用)。 第五章:网络空间分析与路径优化 本章聚焦于网络数据集的构建、维护与高效查询。详细阐述了如何将现实世界的道路网络抽象为带属性的图结构。核心内容包括最短路径算法(Dijkstra, A搜索及其在GIS中的内存优化版本)、旅行商问题(TSP)的启发式求解策略。更进一步,本章将涉及复杂的网络分析,如服务区分析(Reachability Analysis)、交通流模拟中的OD(Origin-Destination)矩阵计算,并讨论如何利用并行计算框架加速大型城市交通网络的分析。 第三部分:面向现代应用的定制化开发与集成 本部分将指导读者如何将强大的空间分析能力封装成易于部署、高性能的服务,并集成到现代Web和移动应用中。 第六章:高性能空间数据服务(GeoServices)的设计与构建 本章是关于如何“发布”空间能力的关键。我们将详细对比基于RESTful API的服务模式和WMS/WFS/WMTS等OGC标准服务的设计哲学。重点讲解如何使用高性能的Web服务器(如Node.js/Express, Python/FastAPI)作为后端,结合异步处理机制,构建能够实时响应复杂空间查询的API。我们将深入探讨动态切片服务(Dynamic Tiling)的实现机制,以及如何通过服务端渲染(Server-Side Rendering)优化复杂矢量数据的展示性能。 第七章:三维可视化与实时渲染管线 随着3D GIS的普及,高效的三维数据处理和渲染成为开发重点。本章将介绍3D地理数据格式(如Cesium 3D Tiles, KML/KMZ)的解析与优化。核心内容包括从CAD/BIM数据到GIS 3D模型的转换流程(LOD设计),以及在客户端(使用WebGL/WebGPU)实现大规模点云和多边形网格的优化渲染技术,如视锥裁剪、实例化渲染(Instancing)的应用。 第八章:移动端与边缘计算中的空间能力部署 本章关注如何在资源受限的移动设备上高效运行GIS功能。我们将讨论如何利用轻量级的嵌入式空间数据库(如SQLite/SQLCipher+SpatiaLite)进行离线数据管理。针对移动端开发的性能瓶颈,我们将介绍数据动态裁剪、矢量切片预处理策略,以及利用设备GPU进行本地空间计算的最新进展。 第九章:质量保证、性能监控与自动化运维 任何关键系统的成功都离不开严格的质量控制。本章将讨论如何为空间分析代码编写单元测试和集成测试,特别是如何设计测试用例来覆盖边缘几何和复杂的拓扑场景。最后,介绍如何利用APM(应用性能监控)工具对空间服务的延迟、资源消耗进行实时监控,并建立自动化回归测试流程,确保每次代码迭代后空间分析结果的准确性和一致性。 通过对上述九个核心领域的深入探讨与工程实践指导,本书旨在帮助读者建立起扎实的地理空间工程能力,能够独立设计、开发和部署新一代复杂、高性能的地理信息应用系统。