编辑推荐
《Visual C++环境下MapX的开发技术》从控件式地理信息系统的概念和构成出发,着眼于MapX的关键技术问题,给出了利用MapX开发地理信息应用系统的技术途径和解决方案,特别是针对MapX开发中心常见的重点和难点进行了深入的探讨,《Visual C++环境下MapX的开发技术》结合作者的开发经验,给出了在Visual C++环境下MapX的开发案例,对读者顺利掌握MapX的使用与开发极具参考价值。
《Visual C++环境下MapX的开发技术》内容共分11章,系统地介绍 MapX基础知识; 地图化及其工具;Layers与Features; 数据绑定;用DBMS访问数据库;专题图;应用程序的发布以及Visual C++环境下MapX开发的若干示例。
《Visual C++环境下MapX的开发技术》结构紧促,讲解详细,通俗易懂。
《Visual C++环境下MapX的开发技术》作者多年来从事相关领域的研究和工程实践工作,《Visual C++环境下MapX的开发技术》是基于这些工作而出版的。
内容简介
《Visual C++环境下MapX的开发技术》通过理论与实例相结合的方式系统地介绍了在Visual C++编程环境下,基于MapX开发的理论和方法,具体包括:MapX的基础知识、地图化及工具使用与定制、图层和图元、数据绑定技术、数据库的访问、专题图的制作、应用程序的发布等设计技巧和主要方法,通过大量的示例重点讲解在Visual C++环境下的MapX编程技术,从而使读者达到学以致用的目的。
《Visual C++环境下MapX的开发技术》内容全面,循序渐进,深入浅出,以理论够用为度,加大了实践环节。《Visual C++环境下MapX的开发技术》不仅适合于从事地理信息系统开发的软件工程师,而且适合于大中专院校计算机及相关的专业的学生,还可以作为地理信息系统开发培训班和Visual C++应用程序设计者的教材或参考书。
内页插图
目录
第1章 概述
1.1 地理信息系统
1.1.1 地理信息系统概述
1.1.2 GIS分类与开发方式
1.1.3地理信息系统软件
1.2 MapInfo简介
1.2.1 MapInfo概述
1.2.2 MapInfo的软件开发思想
1.2.3 MapInfo的功能特色
1.2.4 MapInfo的数据组织
1.2.5 MapInfo Professional
1.2.6 MapInfo系列产品介绍
1.2.7主要应用领域
1.3 MapX
1.3.1 MapX主要功能
1.3.2 MapX v5.0的特性
1.4 Visual C++编程语言
1.4.1 Visual C++简介
1.4.2 ActiveX
1.4.3 VARIANT类型
1.5 本章小结
第2章 MapX基础
2.1 MapX入门
2.1.1 MapX空间数据结构
2.1.2 MapX对象模型
2.1.3图层
2.2 安装MapX
2.2.1系统要求
2.2.2安装过程
2.3 Geoset和GeoDictionary管理器
2.3.1 Geoset管理器
2.3.2 Geodictionary管理器
2.4 Map对象
2.5 Visual C++中创建地图
2.5.1 MapX的设置
2.5.2主视图中创建简单地图
2.5.3 在对话框中创建地图
2.5.4 导出地图
2.5.5 灵活地开发GST文件
2.6 本章小结
第3章 MapX工具
3.1 MapX标准工具
3.2 标准工具的使用
3.3 自定义工具
3.3.1创建工具
3.3.2工具处理过程
3.3.3 使用工具
3.4 工具创建示例
3.4.1手动测距计算
3.4.2 拖曳图元
3.5 本章小结
第4章 Layers与Features
4.1 Layer对象与Layers集合
4.1.1 Layer对象
4.1.2 Layers集合
4.2 图层与图元
4.2.1 图层的顺序
4.2.2 图层的图元类型
4.2.3 图层的缩放
4.3 Feature对象与Features集合
4.3.1 Feature对象
4.3.2 Features集合
4.4 Selection集合
4.5 在地图中查找图元
4.5.1 Find对象
4.5.2 FindFeature对象
4.6 Visual C++下操作示例
4.6.1 计算高速公路总长度
4.6.2 图元的闪烁
4.6.3查找城市
4.6.4 综合搜索
4.7 本章小结
第5章 Style对象
5.1 Style对象概述
5.1.1属性类方法
5.1.2 操作类方法
5.2 线图元式样
5.3 面图元式样
5.4 文本式样
5.5 符号式样
5.6 Visual C++下开发示例
5.6.1 改变TypeTrue字体符号大小
5.6.2 改变文本属性
5.7 本章小结
第6章 用DBMS访问数据库
6.1 MapInfo SpatialWare
6.1.1 SpatialWare介绍
6.1.2安装及配置
6.1.3数据输入与查询
6.2 Oracle Spatial
6.2.1 Oracle Spatial简介
6.2.2空间数据的准备和管理
6.3 MapX访问空间数据库
6.3.1访问空间数据的方法
6.3.2通过LayerInfo访问空间数据
6.3.3通过tab 文件访问远程表
6.4 LayerInfo对象
6.4.1 LayerInfo对象方法
6.4.2 LayerInfo 参数
6.5 连接字符串格式
6.5.1 ODBC连接字符串格式
6.5.2 Oracle Spatial 连接字符串格式
6.6 地图目录
6.6.1 管理地图目录
6.6.2 加载空间数据
6.6.3 手工创建地图目录
6.7 地图化DBMS表
6.7.1 点样式
6.7.2 线样式
6.7.3 填充样式
6.8 Visual C++开发示例
6.9 本章小结
第7章 MapX的数据绑定
7.1 数据绑定
7.1.1空间数据存储方式
7.1.2数据绑定简述
7.1.3怎样向地图添加数据
7.2 DataSet对象和DataSets集合
7.2.1 DataSet对象
7.2.2 DataSets集合
7.3 使用Fields集合
7.3.1 Field对象
7.3.2 Fields集合
7.4 BindLayer对象
7.5 数据绑定事件
7.6 Visual C++中数据绑定示例
7.6.1图层绑定
7.6.2文件绑定
7.6.3 DAO绑定
7.6.4 ODBC绑定
7.6.5 Unbound绑定
7.6.6 安全数组绑定
7.6.7 将数据显示为点图层
7.7 小结
第8章 MapX主题地图
8.1 规划主题地图
8.1.1 什么是主题地图
8.1.2规划主题地图
8.2 主题地图类型
8.2.1 独立值地图
8.2.2 范围地图
8.2.3 等级符号地图
8.2.4 点密度地图
8.2.5 柱状图
8.2.6 饼状图
8.2.7 双变量专题地图
8.3 Theme对象和Themes集合
8.3.1 Theme对象
8.3.2 Themes集合
8.4 ThemeProperties对象
8.4.1适用于范围专题图的方法
8.4.2适用于柱状专题图的方法
8.4.3适用于等级专题图的方法
8.4.4适用于饼状专题图的方法
8.4.5适用于点密度专题图的方法
8.4.6适用于独立值专题图的方法
8.5 类别对象与集合
8.5.1 RangeCategory对象
8.5.2 RangeCategories集合
8.5.3 MultivarCategory对象
8.5.4 MultivarCategories集合
8.5.5 IndividualValueCategory 对象
8.5.6 IndividualValueCategories 集合
8.6 主题图例
8.6.1 Legend对象
8.6.2 LegendText 对象与LegendTexts 集合
8.6.3 LegendTexts 集合
8.7 Visual C++中主题地图绘制示例
8.7.1各种范围专题地图的绘制
8.7.2运行中主题地图的修改
8.8 本章小结
第9章 逐层细化图层
9.1 逐层细化图层概述
9.1.1 逐层细化图层
9.1.2 逐层细化需注意的问题
9.2 逐层细化应用程序开发步骤
9.2.1 主要开发步骤
9.2.2准备逐层细化图层
9.2.3创建逐层细化和卷起工具
9.3 实施逐层细化的相关方法
9.4 逐层细化的限制和要求
9.5 逐层细化开发示例
9.6 本章小结
第10章 MapX应用程序的发布
10.1 制作安装程序工具概述
10.2 发布应用程序所需的项目和步骤
10.2.1 客户安装项目
10.2.2 客户安装步骤
10.3 打包文件的确定
10.4 注册与许可证
10.4.1 MapX的注册
10.4.2 注册表的修改
10.4.3 通过注册对ODBC设置
10.4.4 MapX许可证
10.5 应用程序的发布
10.5.1常规设计
10.5.2屏幕设计
10.5.3 卸载
10.5.4文件导入
10.5.5生成安装文件
10.6 小结
第11章 Visual C++开发案例
11.1 MapX中鼠标事件
11.1.1 开发思路
11.1.2 开发步骤
11.1.3 部分源代码
11.2 道路交点的计算
11.2.1 开发思路
11.2.2 开发步骤
11.2.3 部分源代码
11.3 道路上两点间距离计算
11.3.1 开发思路
11.3.2 开发步骤
11.3.3 部分源代码
11.4 基于MapX的鹰眼图实现
11.4.1 开发思路
11.4.2 开发步骤
11.4.3 部分源代码
11.5 路网中最短路径计算
11.5.1 开发思路
11.5.2 主要步骤
11.5.3 部分源代码
11.6 比例尺的绘制
11.6.1 开发思路
11.6.2 开发步骤
11.6.3 部分源码
11.7 使用数据库
11.7.1 几种连接方式
11.7.2 开发步骤
11.7.3 部分源码
11.8 GPS目标轨迹显示
11.8.1 开发思路
11.8.2 开发步骤
11.8.3 关键代码
11.9 小结
参考文献
精彩书摘
1 概述
1.1 地理信息系统
1.1.1 地理信息系统概述
地理信息系统(Geographic Information System,GIS)是一项以计算机为基础的新兴技术,它是在计算机硬、软件系统支持下,对整个或部分地球表层(包括大气层)空间中的有关地理分布数据进行采集、储存、管理、运算、分析、显示和描述的技术系统。地理信息系统处理、管理的对象是多种地理空间实体数据及其关系,包括空间定位数据、图形数据、遥感图像数据、属性数据等,用于分析和处理在一定地理区域内分布的各种现象和过程,解决复杂的规划、决策和管理问题。
GIS的物理外壳是计算机化的技术系统,它又由若干个相互关联的子系统构成,如数据采集子系统、数据管理子系统、数据处理和分析子系统、图像处理子系统、数据产品输出子系统等,这些子系统的优劣、结构直接影响着GIS的硬件平台、功能、效率、数据处理的方式和产品输出的类型。
GIS的操作对象是空间数据,即点、线、面、体这类有三维要素的地理实体。空间数据的最根本特点是每一个数据都按统一的地理坐标进行编码,实现对其定位、定性和定量的描述,这是GIS区别于其他类型信息系统的根本标志,也是其技术难点之所在。
GIS的技术优势在于它的数据综合、模拟与分析评价能力,可以得到常规方法或普通信息系统难以得到的重要信息,实现地理空间过程演化的模拟和预测。
前言/序言
MapX是一个基于ActiveX(OCx)技术的可编程控件,提供了真正的对象联接与嵌入式的地理信息系统应用开发方案,它使用与MapInfo Professional一致的地图数据格式,并实现了大多数MapInf0 Professional的功能。Mapx为开发人员提供了一个快速、易用、功能强大的地图化组件。MapX的推出,极大地扩展了MapInfo产品的应用面,使更多的用户可以通过Mapx得到MapInf0的先进技术,利用Mapx可快速地在各种应用中嵌入地图化功能,增强空间分析能力。
Visual C++以其优异的运行速度、直接访问内存、强大的MFC支持以及方便的windOWS API的调用等特点,受到了广大软件开发人员的欢迎,掌握了Vislaal C++技术的开发人员为数众多。目前系统讲述ViSLIal C++环境下的Mapx开发技术的书籍很少,为了能够让读者更快地掌握该技术,我们编写了这本书,希望能够通过这本书让读者以高效的方法学会在VisLIal c++环境下的MapX开发技术。
本书从控件式地理信息系统的概念和构成出发,着眼于Mapx的关键技术问题,给出了利用MapX开发地理信息应用系统的技术途径和解决方案,特别是针对Mapx开发中心常见的重点和难点进行了深入的探讨,本书结合作者的开发经验,给出了在visual C++环境下Mapx的开发案例,对读者顺利掌握MapX的使用与开发具有参考价值。
本书内容共分11章,系统地介绍了Mapx基础知识、地图化及其工具、Layers与Features、数据绑定、用DBMS访问数据库、专题图、应用程序的发布以及Visual C++环境下MapX开发的若干示例。 全书结构紧凑,讲解详细,通俗易懂,不仅适合于从事地理信息系统开发的软件工程师,而且适合于大中专院校计算机及相关专业的学生,还可以作为地理信息系统开发培训班和Ⅵsual C++应用程序设计者的教材或参考书。
本书作者多年来从事相关领域的研究和工程实践工作,本书是在此基础上编写而成的。参加本书编写的还有徐泉峰、田海、孙旺泉、曾勇。作者在研究工作及本书的撰写过程中,得到了解放军汽车管理学院史新生教授的指导和帮助,在此表示衷心的感谢!
本书的编写参阅了一些相关资料,由于种种原因,参考文献的罗列可能会有所遗漏,敬请有关专家谅解,在此对这些专家表示感谢。
由于作者水平所限,书中不妥之处,恳请读者批评指正。
深入探索现代软件架构与高性能计算:跨平台与服务化实践 本书旨在为资深软件工程师和系统架构师提供一套前沿且实用的知识体系,专注于构建高可用、高并发、易于维护的现代分布式系统和高性能计算应用。全书摒弃了特定旧版技术栈的限制,聚焦于指导读者掌握当前业界主流的技术选型、设计哲学以及落地实施的关键策略。 第一部分:现代软件架构演进与核心范式 本部分深入剖析了从传统单体应用到微服务、Serverless 等架构范式的演变路径,并重点探讨了每种架构在不同业务场景下的适用性、优缺点及治理挑战。 1. 分布式系统的基石:CAP定理的实际权衡 详细分析了当前主流数据库(NewSQL、NoSQL)和消息队列(Kafka, Pulsar)如何在高并发场景下对一致性、可用性、分区容错性进行取舍。章节会通过具体的案例,指导读者如何根据业务的“强一致性需求”与“低延迟需求”来设计数据存储策略,包括事件溯源(Event Sourcing)和命令查询职责分离(CQRS)模式在复杂业务流程中的应用,及其与传统ACID事务的对比。 2. 微服务治理的深度实践 超越基础的服务拆分,本书聚焦于微服务运行期的复杂性管理。内容涵盖: 服务网格(Service Mesh)的选型与部署(如 Istio, Linkerd),着重于流量管理(蓝绿部署、金丝雀发布)、安全策略(mTLS)和服务可观测性的集成。 分布式事务的解决方案:深入探讨 2PC/3PC 的局限性,重点讲解基于补偿机制的Saga 模式,以及如何利用消息队列实现最终一致性下的业务流程编排。 配置中心与服务发现:对比 ZooKeeper、etcd、Consul 等组件,并讲解 Spring Cloud Config/Nacos 等应用层框架如何高效地实现配置的动态刷新和灰度发布。 3. 云原生时代的容器化与编排 本书详细介绍了 Docker 容器生态体系,并将其作为高性能应用部署的基础单元。核心内容在于 Kubernetes (K8s) 的高级应用: Operator 模式:如何将复杂的有状态应用(如数据库集群、消息中间件)的运维逻辑抽象为 Kubernetes 原生资源,实现应用的自愈和自动化生命周期管理。 资源管理与 QoS (Quality of Service):深入探讨 K8s 中的 Namespace、LimitRange、ResourceQuota 的配置技巧,以及如何通过 Cgroup 和 Namespace 隔离技术保证关键业务 Pod 的性能优先级。 无服务器(Serverless)架构的进阶:不仅限于 FaaS(Function as a Service),更涵盖 PaaS 层的 Serverless 化探索,如 Knative 在构建无服务器微服务时的优势和挑战。 第二部分:高性能计算与低延迟系统设计 本部分聚焦于如何榨取硬件性能,构建对延迟和吞吐量有极致要求的系统,特别关注网络I/O和内存管理。 4. 异步编程模型与并发优化 摒弃传统的线程阻塞模型,本书全面介绍基于事件循环的非阻塞 I/O 框架(如 Netty, Vert.x 或 Rust 的 Tokio 运行时)。重点剖析: Reactor 模式与 Proactor 模式的底层实现原理。 内存池(Memory Pool)技术在网络通信中的应用,如何减少垃圾回收(GC)对延迟的影响,尤其是在 Java 和 C++ 环境下的实现差异。 无锁数据结构:讲解并发编程中原子操作(CAS)的应用,以及如何设计高性能的并发队列和哈希表,避免锁竞争带来的性能瓶颈。 5. 高效数据序列化与跨进程通信 数据在分布式环境中高效、可靠地传输至关重要。本章对比了 JSON、XML、Protocol Buffers (Protobuf)、Apache Avro 和 FlatBuffers 在序列化速度、数据体积和Schema演进能力上的优劣。特别强调零拷贝(Zero-Copy)技术在高性能网络传输中的实现,如 Linux 的 sendfile API 和 DPDK 在网络栈卸载中的作用。 6. 性能分析、调优与可观测性体系构建 构建高性能系统需要科学的度量方法。本书提供了一套完整的可观测性(Observability)工具链实践: 分布式追踪(Tracing):深入实践 OpenTelemetry 规范,讲解如何通过 Context Propagation 追踪请求在多个服务间的完整路径,并利用 Zipkin/Jaeger 进行延迟分析。 指标(Metrics)与告警:利用 Prometheus/Thanos 建立时序数据库,设计有效的 Golden Signals(延迟、流量、错误、饱和度),并配置 SLO/SLI 驱动的告警策略。 火焰图与内核级性能剖析:教授如何使用 `perf`(Linux)或等效工具对 CPU 密集型代码进行采样分析,定位热点函数,并给出针对性的代码优化建议(如循环展开、函数内联的权衡)。 第三部分:安全、合规与未来趋势 7. 零信任安全模型在分布式系统中的落地 探讨如何从边界安全转向以身份为中心的零信任架构。重点讲解基于 JWT/OAuth2.0 的身份认证授权流程,以及如何利用 mTLS 确保服务间通信的加密和身份验证。同时,介绍 Secrets 管理的最佳实践,如使用 HashiCorp Vault 进行动态凭证注入。 8. 数据持久化与大数据流处理基础 本部分不再涉及基础的数据库操作,而是侧重于大数据生态中的关键技术: 流处理引擎:对比 Flink 和 Spark Streaming 的架构差异,重点讲解 Flink 的状态管理、Checkpoint 机制及其如何保证复杂的窗口聚合计算的准确性与低延迟。 数据湖/数据中台:探讨 Delta Lake, Apache Hudi, Apache Iceberg 等表格式,它们如何为数据仓库提供 ACID 事务能力,支持数据湖上的实时更新和 Schema 演进。 全书贯穿面向对象设计原则(SOLID)、设计模式,并结合大量的代码示例(使用 Java/Go 语言)来阐述理论的工程化落地。它为读者提供的是一个关于如何利用现代工具和思维方式,构建面向未来挑战的企业级复杂系统的蓝图。