第1章 测绘基础知识 1
1.1 常用测量基准系统 1
1.1.1 常用坐标系统 1
1.1.2 常用高程系统 2
1.1.3 椭球面上常用坐标系介绍 3
1.2 地图投影基础知识 5
1.2.1 地图投影的概念 5
1.2.2 地图投影的变形 5
1.2.3 地图投影的分类 7
1.2.4 地图投影的选择 9
1.2.5 常用的一些地图投影 9
1.3 地形图分幅与编号 10
1.3.1 比例尺定义 10
1.3.2 地形图的比例尺 11
1.3.3 地形图的分幅 11
1.3.4 地形图的编号 12
1.3.5 1:100万地形图的编号 12
1.3.6 国家基本比例尺地形图分幅与编号 13
1.4 常用椭球计算公式 14
1.4.1 常用量定义 15
1.4.2 子午圈曲率半径 16
1.4.3 卯酉圈曲率半径 16
1.4.4 法截弧曲率半径 17
1.4.5 平均曲率半径 18
1.4.6 高斯投影正算公式 18
1.4.7 高斯投影反算公式 18
1.4.8 子午线弧长及底点纬度计算 18
1.4.9 图幅理论面积计算公式 19
1.4.10 椭球面任意梯形面积计算公式 20
1.5 常用坐标转换模型 20
1.5.1 城市抵偿面坐标转换 20
1.5.2 平面四参数转换模型 21
1.5.3 布尔莎坐标转换模型 22
1.5.4 空间直角坐标与大地坐标转换 23
1.5.5 高斯投影与墨卡托投影转换 24
第2章 常用测绘及相关术语解释 25
2.1 基础类 25
2.1.1 误差理论与测量平差 25
2.1.2 天文测量 27
2.1.3 大地测量 29
2.1.4 控制测量 33
2.2 测绘类 35
2.2.1 地形测量 35
2.2.2 地图制图 37
2.2.3 摄影测量与遥感 40
2.2.4 房产测绘 46
2.2.5 地籍测量 47
2.2.6 海洋测绘 48
2.2.7 界线测绘与管线探测 50
2.3 地质类 51
2.3.1 地质矿产勘查 51
2.3.2 矿业权核查 52
2.4 工程类 56
2.4.1 工程测量 56
2.4.2 建筑测量 60
2.4.3 核电站建设 64
2.5 管理类 65
2.5.1 项目招投标 65
2.5.2 全面质量管理与贯标 67
2.5.3 测绘产品检验 69
2.6 综合类 70
2.6.1 全球卫星定位系统 70
2.6.2 地理信息系统 75
2.6.3 农村集体土地确权登记发证 76
2.6.4 计算机与互联网 78
2.6.5 新技术与前沿学科 87
第3章 C/C++基础语法 90
3.1 C语言基础 90
3.1.1 C语言发展历史 90
3.1.2 C程序基本结构 90
3.1.3 基本数据类型 91
3.1.4 常量和变量 92
3.1.5 枚举与宏 94
3.1.6 C指令 94
3.1.7 C/C++运算符集 95
3.1.8 C数组 97
3.1.9 C表达式和语句 98
3.1.10 函数 99
3.1.11 库函数 100
3.1.12 指针与链表 103
3.1.13 结构与联合 103
3.1.14 位运算 104
3.1.15 文件操作 104
3.2 C++基础语法 106
3.2.1 类与对象 107
3.2.2 成员函数 108
3.2.3 构造函数 110
3.2.4 析构函数 112
3.2.5 友元 112
3.2.6 类的派生与继承 113
3.2.7 类的多态性 115
3.2.8 重载 119
3.2.9 引用 119
3.2.10 数据类型 120
3.2.11 this指针 122
3.2.12 new和delete 123
3.2.13 C++流 124
3.2.14 C++关键字 125
3.2.15 捕捉异常 125
3.2.16 常用C++类库介绍 127
第4章 初级ObjectARX软件开发技术 129
4.1 AutoCAD基础知识 129
4.1.1 AutoCAD发展历史 129
4.1.2 AutoCAD主要功能 130
4.1.3 AutoCAD系统要求 133
4.1.4 AutoCAD工作空间 133
4.1.5 AutoCAD二次开发 135
4.2 ObjectARX简要介绍 137
4.2.1 ObjectARX概况 137
4.2.2 ObjectARX类库的构成 138
4.2.3 acrxEntryPoint.cpp函数 138
4.2.4 开发版本对应关系 138
4.3 开发工具安装步骤 138
4.3.1 AutoCAD 2008安装 138
4.3.2 Visual Studio 2005安装 147
4.3.3 ObjectARX 2008安装 151
4.4 简单ObjectARX编程示例 152
4.4.1 VS 2005环境设置 152
4.4.2 创建ObjectARX程序示例 153
4.4.3 编译ObjectARX程序方法 158
4.4.4 加载ObjectARX程序方法 160
第5章 常用ObjectARX函数集合 162
5.1 文件操作类 162
5.1.1 创建图形数据库 162
5.1.2 保存当前数据库 163
5.2 图层操作类 163
5.2.1 创建新图层 163
5.2.2 设置当前层 164
5.2.3 修改图层颜色 164
5.2.4 删除指定图层 165
5.2.5 开/关所有图层 166
5.2.6 导入图层信息 167
5.2.7 导出图层信息 169
5.3 实体操作类 171
5.3.1 修改实体图层 171
5.3.2 修改实体颜色 171
5.3.3 修改实体线型 172
5.3.4 修改实体线宽 172
5.3.5 修改实体高程 172
5.3.6 旋转指定的实体 174
5.3.7 移动指定的实体 175
5.3.8 缩放指定的实体 175
5.3.9 添加实体扩展记录 175
5.3.10 查看实体扩展记录 176
5.4 图块操作类 179
5.4.1 创建图块 179
5.4.2 炸开图块 181
5.5 文字操作类 184
5.5.1 创建宋体方法 184
5.5.2 调用字库方法 185
5.5.3 修改字体方法 187
5.6 数据转换类 188
5.6.1 DMS→DEG 188
5.6.2 DEG→DMS 188
第6章 高级ObjectARX软件编程技巧 189
6.1 自定义类、菜单、进度条 189
6.1.1 如何添加自定义类 189
6.1.2 如何制作AutoCAD菜单 193
6.1.3 加载与卸载菜单方法 195
6.1.4 如何设置进度条 199
6.2 数据处理类 200
6.2.1 如何动态开辟数组 200
6.2.2 如何输入实数 200
6.2.3 如何选择指定图层上的所有实体 201
6.3 提取信息类 202
6.3.1 如何捕获鼠标当前位置坐标 202
6.3.2 如何获得图层ID号 202
6.3.3 如何捕捉多段线ID号 203
6.3.4 如何提取二维多段线节点坐标 204
6.3.5 如何求窗口内所有实体范围值 205
6.4 文件操作类 211
6.4.1 分解图形文件 211
6.4.2 分解文本文件 213
6.4.3 获取文本文件的总行数 214
6.4.4 打开文件对话框方法 214
6.4.5 如何生成文本文件 215
6.5 坐标转换类 216
6.5.1 大地坐标正算(BL→XY) 216
6.5.2 大地坐标反算(XY→BL) 218
6.6 图块操作类 220
6.6.1 修改块参照中注记名称 220
6.6.2 获得块参照高程值 221
6.6.3 获取块参照最大最小高程值 221
6.6.4 创建高程点块参照 223
6.7 对话框类 226
6.7.1 如何添加自己的对话框 226
6.7.2 如何在对话框中使用编辑框 228
6.7.3 如何在对话框中使用组合框 234
6.7.4 如何在对话框中使用复选框 238
6.7.5 如何在对话框中使用单选按钮 243
6.7.6 如何添加对话框中确定按钮响应函数 250
6.8 其他综合类 252
6.8.1 如何调用ADO数据库 252
6.8.2 如何在加载或卸载时显示提示信息 252
6.8.3 如何获得当前图形数据库文件名称 253
第7章 通用基础模块功能开发 254
7.1 自定义头文件介绍 254
7.2 自定义的静态变量及宏说明 257
7.3 基础模块开发 257
7.3.1 创建直线 257
7.3.2 创建圆 258
7.3.3 创建轻量多段线 258
7.3.4 创建椭圆(中心点、端点、比例) 258
7.3.5 创建椭圆(外接矩形) 259
7.3.6 创建单行文字 259
7.3.7 创建多行文字 259
7.3.8 创建块表记录 260
7.3.9 创建面域 261
7.3.10 填充图案 262
7.3.11 删除指定多段线 263
7.3.12 加入多段线节点坐标 267
7.3.13 修改多段线节点坐标 268
7.3.14 删除多段线节点坐标 269
7.3.15 将指定实体添加到当前图形的模型空间 272
7.4 自定义模块开发 272
7.4.1 计算夹角 272
7.4.2 计算支点坐标 272
7.4.3 求垂足点坐标 273
7.4.4 计算方位角(两点坐标) 273
7.4.5 计算方位角(坐标增量) 274
7.4.6 计算三角形面积(三边长) 274
7.4.7 计算三角形面积(三点坐标) 274
7.4.8 计算圆半径和中心坐标(三点坐标) 274
7.4.9 计算椭球面上任意梯形图块面积 275
7.4.10 判断点是否在多边形内 276
7.4.11 判断两线段是否相交并求交点坐标 277
7.4.12 判断两个三角形是否在同侧 278
7.4.13 清除名称后面的空格、跳格、换行、回车等符号 278
第8章 高级测量模块开发技术 279
8.1 图层管理 279
8.1.1 模块功能 279
8.1.2 操作步骤 279
8.1.3 数学模型 279
8.1.4 源代码 280
8.2 坐标转换 285
8.2.1 模块功能 285
8.2.2 操作步骤 285
8.2.3 数学模型 293
8.2.4 源代码 294
8.3 高曲矛盾自动检查 307
8.3.1 模块功能 307
8.3.2 操作步骤 308
8.3.3 数学模型 312
8.3.4 源代码 313
8.4 悬挂点检查与自动处理 331
8.4.1 模块功能 331
8.4.2 操作步骤 331
8.4.3 数学模型 336
8.4.4 源代码 336
第9章 常见CAD问题与致命错误分析 356
9.1 常见CAD问题与处理方法 356
9.1.1 系统设置类 356
9.1.2 文件操作类 358
9.1.3 图层操作类 360
9.1.4 图形编辑类 360
9.1.5 文字操作类 366
9.1.6 数据交换类 369
9.1.7 打印输出类 370
9.1.8 其他技巧类 372
9.2 常见AutoCAD致命错误分析 375
9.2.1 安装AutoCAD时出现致命错误 375
9.2.2 打开文件时出现致命错误 376
9.2.3 AutoCAD图形文件无效出现致命错误 376
9.2.4 恶意代码等原因导致出现致命错误 377
9.2.5 重复使用遍历功能导致出现致命错误 379
9.2.6 点击打印时出现致命错误 379
9.2.7 图元设置不匹配出现致命错误 379
9.2.8 内部错误导致出现致命错误 379
9.2.9 下标越界导致出现致命错误 380
9.2.10 不明原因导致出现致命错误 381
第10章 AutoCAD平台二次开发经验与体会 382
10.1 标准C++与ObjectARX关系 382
10.1.1 数据格式转换方法 382
10.1.2 ANSI和UNICODE的函数对应关系 382
10.1.3 数据精度不足问题带来的影响 383
10.2 常用AutoCAD坐标系转换问题 384
10.2.1 AutoCAD的坐标系统 384
10.2.2 测量坐标系转换问题 384
10.3 DXF文件的基本结构 385
10.4 常用图元组码信息表 386
10.5 如何显示实体参数 390
10.6 ObjectARX编译过程中常见问题分析 392
第11章 其他实用技术汇编 394
11.1 常用ArcGIS数据格式介绍 394
11.2 国际主要椭球参数表 394
11.3 根据经纬度计算图幅号的方法 396
11.3.1 已知图幅内某点经纬度或图幅西南图廓点经纬度,计算其编号 396
11.3.2 已知图号,计算该图幅西南图廓点经纬度 397
11.4 常用度量衡及单位换算 398
11.5 C#开发中常用加密与解密方法 399
11.5.1 MD5加密算法 399
11.5.2 RSA加密算法 400
11.5.3 DES加密 402
11.6 用AutoCAD.NET开发AutoCAD软件方法 403
参考文献 413