搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
出版时间 :
无库存
遥感与地理信息系统算法底层设计与实现
0.00     定价 ¥ 198.00
浙江工贸职业技术学院
此书还可采购1本,持证读者免费借回家
  • ISBN:
    9787030767301
  • 作      者:
    沈占锋,等
  • 出 版 社 :
    科学出版社
  • 出版日期:
    2023-10-01
收藏
精彩书摘
**章 底层算法整体设计与实现方法
  相对于前两部专著《遥感与地理信息系统 C++底层开发与实践(上册)——数据模型与渲染》(2019)与《遥感与地理信息系统 C++底层开发与实践(下册)——功能扩展与集成》(2021)(以下简称这两部专著为“已出版专著(上册)”和“已出版专著(下册)”)来说,本书中介绍的内容主要是针对 MHMapGIS中实现的“算法及算法功能插件的实现方式”。也就是说,本书中主要以遥感、 GIS的相关算法为主,这些算法能够以某种形式集成至 MHMapGIS软件系统中并执行特定的功能。
  集成到 MHMapGIS系统中的算法从集成模式与使用方法角度来看可以分为两种:一种是即时交互性算法,这类算法一般集成至软件系统的菜单中(在 MHMapGIS中以 Ribbon菜单或类似的形式),其特点是可快速对用户的交互式操作进行即时性的响应,算法的运行速度很快,一般不需要用户过长时间等待即可从系统界面中交互式看到算法执行的效果;另一种则是非交互式算法,相对于前一种来说,这种算法一般运行速度“不快”,且用户只需要在算法任务提交之前将参数设置好并提交算法任务,之后就不需要像**种算法那样等待算法运行结束后的结果,系统会通过另一个新的线程或进程处理 /计算提交的算法任务,并在任务完成后对用户进行通知,这类算法一般不集成到菜单中,而是以 MHMapGIS中的算法工具箱内工具的方式进行集成。
  1.1 本书中界定的底层算法
  本书所指的底层算法,即算法的底层实现,主要是通过 C++等语言实现的、能够完成一定数据处理、分析等功能的*立模块体。这里对实现语言实际上不进行特殊要求,除 C++之外,还可以为其他类型的语言,如 Python、C#、JAVA等,但本书中给出的实例主要是采用 C++语言实现(除昀后 3章的深度学习章节之外)。对于算法的实现方法来说,一般来说是程序实现者在一定的数理基础上,通过一定编程语言实现的算法模块,当然同样也可以基于已有算法源码或开源代码的基础上,进行一定的功能改进,并在实际应用过程中达到好用、易用的效果,本书中很多算法模块功能的实现就属于这一种。
  图 1-1示意了软件 MHMapGIS整体软件系统界面。本书中针对算法模块介绍的集成方法同已出版的前两部专著中介绍的集成方法类似,其中本书中的第 2章至第 4章主要介绍用户交互式算法的实现,分别集成至 MHMapGIS软件菜单或软件集成的模块中(如数据导出就集成在 MHMapTree模块的右键菜单中);第 5章至第 21章主要介绍非交互性的遥感/GIS类算法,其主要集成模式为算法工具箱集成,即图 1-1所示的算法工具窗口。近年来随着深度学习在遥感、 GIS领域的发展,其可以解决很多原机器学习中解决不好的问题,越来越得到人们的重视,本书中第 19章至第 21章主要介绍作者在实际遥感影像信息提取与分析过程中所应用到的几个深度学习模型的实例与应用方式,同大多数据其他深度学习应用类似,相关的算法实现部分也是基于 Python语言编写而成,而已出版专著(下册)在前期撰写时,并未考虑支持 Python语言类算法,因此在本书的 1.3节中对 MHMapGIS中的交互式算法集成方式进行了总结,并在 1.4节中对集成模式进行了扩展介绍,增加了 Python语言类算法的集成调用方式,同时对相应的数据结构与集成模式也进行了扩展与更新。
  图 1-1 软件 MHMapGIS整体软件系统界面
  1.2 MHMapGIS中的算法实现与集成
  对于交互式空间数据处理算法,本书中重点介绍 3个算法模块,分别为矢量数据编辑算法模块、栅格数据编辑算法模块与矢栅数据编辑算法模块(参见 1.3节)。前期在专著撰写过程中,由于软件 MHMapGIS中仅存在矢量数据编辑功能,因此命名该模块为 MHMapEdit;后期随着功能的增加,与此模块相并列又增加了专门针对栅格数据的编辑模块,因此将矢量数据模块改名为 MHMapFeaEdit(模块改名并不影响该模块的任何功能,具体参见第 2章),同时命名与其相对应的栅格数据编辑模块为 MHMapImgEdit(具体参见第 3章),并增加了针对矢栅数据交互式编辑的模块 MHMapSpaEdit(具体参见第 4章)。
  对于非交互式数据处理算法(亦称插件式算法),本书中结合实际工作中遇到的问题及面临的需求,分不同章节分别进行算法的原理、实现过程与集成方法的介绍( 1.4),并从第 5章至第 21章每章分别介绍一种常用的遥感 /GIS处理分析算法模块。本书中各章之间不存在严格意义上的先后顺序,读者可根据需要选择阅读;同时,在 1.4节中对已出版专著(下册)第 24章的 MHMapTools的数据结构、实现方式等进行了扩展介绍。
  1.3 交互式算法实现与集成模式
  交互式算法是指需要用户通过软件进行交互式操作处理并等待处理结果的过程。 MHMapGIS软件中将这些交互式算法大多集成至 Ribbon菜单,这样便于用户按其所属的特定类别进行查找与调用,如图 1-2所示的为 MHMapGIS的第 2个 Ribbon菜单,即矢量交互式编辑中所对应的菜单,里面集成了针对矢量数据交互式编辑的多种算法。这些算法主要的表现方式为用户进行交互式选择不同的要素并进行(实时)处理的效果,如选中多个矢量要素的合并,矢量要素的删除、整形、切分、生成等,相应算法模块的具体实现方法见第 2章。
  由于矢量要素的交互式处理速度很快,几乎不需要用户有多少的等待时间即可完成,因此可以很快通过 MHMapGIS的视图模块(参见已出版专著的 MHMapView模块章节)查看到算法的处理效果,当用户不满意相应的处理效果时,可以通过菜单中的“撤销 /重做”等功能进行撤销或重做,因此,交互式处理算法一般是通过特定的数据结构的设计(参见已出版专著 MHMapEdit模块章节),再通过撤销与重做等按键的配合进行实现。
  图 1-2 矢量交互式编辑菜单中所对应的交互式算法集成效果
  在 MHMapGIS的底层实现中,这类功能的实现过程与调用方式为: Ribbon菜单的底层代码由 MHMapGIS的 CMainFrame实现,这里面再调用模块 MHMapView中的相关函数,然后再由 MHMapView模块再调用相应算法功能的具体实现模块,如矢量数据编辑模块的底层实现为 MHMapFeaEdit的相应函数。这里面几乎所有的底层实现都通过模块 MHMapView进行功能的“中转”,这样便于二次开发用户通过模块 MHMapView实现所有底层功能 /函数的调用。
  类似地,本书的第 3章将介绍针对栅格数据的交互式处理,表现在 MHMapGIS中为第 3个 Ribbon菜单,如图 1-3所示。第 4章将介绍针对矢量、栅格数据进行协同式处理的部分算法,表现为 MHMapGIS中的第 4个 Ribbon菜单,相应的界面如图 1-4所示。
  图 1-3 影像交互式处理菜单中所对应的交互式算法集成效果
  图 1-4 矢栅综合处理菜单中所对应的交互式算法集成效果
  1.4 插件式算法实现与集成模式
  插件式算法又称为非交互式算法,这些算法相对来说使用频率不是那么高,运行速度也没有那么快,通过工具箱的方式集成、待用户需要时再进行调用的方式更符合用户使用的习惯。一般来说,任何一个功能相对*立的算法均可以*立为一个算法模块,再根据 MHMapGIS中设定的集成规范或规则集成至算法工具箱,即可实现对这些算法功能进行调用与集成。在已出版的专著中,已经介绍了系统中算法的集成模式,既可以通过 C++暴露出的一个可被外部调用的功能接口方式进行集成,也可以对可执行文件方式的算法模块进行集成。
  前文说过,为实现对 Python类算法的调用,本章中对 MHMapTools进行了一定的功能扩展(已出版的专著中的相应功能不受影响),使其能够对 Python类算法进行直接调用,为此,*先对 MHMapTools模块的结构体 MHTOOLS进行改造:
  这里*先看一下原 MHMapTools中定义的结构体 MHTOOLS的数据结构。
  其中针对算法描述较为关键的 sDllName及 sExeName,分别指示了算法动态链接库或可执行文件的名称,以及sFolderName(相应算法动态链接库或可执行文件的存储位置)及 sInterface(仅对动态链接库有意义,表现对外的接口)。
  在对上述数据结构进行扩展时,一种方法是再增加一个针对 Python算法运行的参数描述类信息的记录;另一种方法则是对上述信息进行合并,这种方式相对来说更为合理,且有较好的扩展性,形成如下的数据结构。
  其中,将动态链接库 DLL、可执行文件 EXE、批处理文件 BAT、Python算法的名称进行合并,形成了新的描述算法名称的变量 sDllExeBatPyName,指示了相应的算法名称,即对于动态链接库 ABCD.DLL来说,sDllExeBatPyName = “ABCD”;对于可执行文件 BCDE.EXE来说,sDllExeBatPyName = “BCDE”;对于批处理文件 CDEF.BAT来说,sDllExeBatPyName = “CDEF”;对于 Python算法 DEFG.PY来说,sDllExeBatPyName = “DEFG”。上述数据结构中的 sFolderName与原来的定义相比未变,即指示了该文件位于 MHMapGIS可执行文件下的文件夹名称。在原 MHMapTools定义的结构体中, sInterface主要描述了当集成算法类别为动态链接库时相应算法导出的接口,而在 EXE时则此变量没有用途。在此次更新中,对 sInterface所指示的字符串的功能进行了重新定义:当集成算法类别为 DLL时,sInterface指示的意义不变,即该动态链接库的导出接口;当集成算法类别为 EXE时,sInterface = “EXE”,指示当前的 sDllExeBatPyName = “BCDE”所对应的文件类型为可执行文件类型,这样 MHMapGIS的 MHMapTools在解析时就会到相应的文件夹中查找文件“BCDE.EXE”并进行调用;类似地,当集成算法类别为批处理文件 BAT时,sInterface = “BAT”;当集成算法类别为 Python时,sInterface的表述方式稍有些不同,为 “PY”(注意,这里 PY后面有一个空格)与当前活动角色的字符的连接,如 sInterface = “PY SZF”,表述为 Python格式,相应的活动角色为基准角色 base。相应地,MHMapGIS在底层实现时会增加一条 Python语句,即“conda activate SZF”,用以激活算法中设置的用户角色。
  相应地,对原 MHMapTools.XML也进行了相应的扩展,类似如下:
  上述 MHMapTools.XML的部分展示了几种不同类型的算法模块的集成模式中对应的算法描述部分的代码。其中,第 1个算法名称为“岩心塑料隔板识别”,其底层的实现方式为动态链接库,因此在描述时给定了该算法的属性,即 foldername ="RadiSZF"、dllfile = "MHGDALBasicAlgorithms"及 interface = "MHImgPlasticsIdentify",指示算法的实现是由 MHMapGIS的可执行文件所在文件夹下 RadiSZF文件夹下的MHGDALBasicAlgorithms.DLL实现的,需要调用该动态链接库的 MHImg PlasticsIdentify接口;第 2个算法名称为“道路自动提取 GPU版本”,其底层的实现方式为可执行文件,因此在描述时给定了它的属性为: foldername = "ZjutX
展开
目录
目录
序一
序二
前言
第1章底层算法整体设计与实现方法 1
1.1本书中界定的底层算法 1
1.2 MHMapGIS中的算法实现与集成 2
1.3交互式算法实现与集成模式 3
1.4插件式算法实现与集成模式 4
1.5小结 9
第2章矢量数据编辑算法模块 MHMapFeaEdit的实现 10
2.1模块 MHMapFeaEdit功能需求设计 10
2.2要素交互式编辑功能的实现原理 11
2.3平行多边形要素生成 17
2.4删除多边形或其内岛 23
2.5编辑功能的选项设计与实现 26
2.6交互式矢量数据导出功能 37
2.7小结 41
第3章栅格数据编辑算法模块 MHMapImgEdit的实现 42
3.1模块 MHMapImgEdit功能需求设计 42
3.2栅格数据编辑的概念模型与数据结构 43
3.3栅格数据选区的设计与实现 46
3.4栅格数据充填功能实现 50
3.5水体交互式提取功能实现 55
3.6功能扩展设计 63
3.7交互式栅格数据导出功能 63
3.8小结 71
第4章矢栅数据交互编辑算法模块 MHMapSpaEdit的实现 72
4.1模块 MHMapSpaEdit的影像合成功能需求 72
4.2影像合成功能流程设计 73
4.3交互式影像合成功能的实现 76
4.4小结 84
第5章空间数据基本操作模块 MHGDALBasicAlgorithms的实现 85
5.1模块 MHGDALBasicAlgorithms功能需求设计 85
5.2栅格数据矢量化功能实现 86
5.3矢量数据栅格化功能实现 88
5.4面状矢量数据转线状功能实现 92
5.5线状矢量数据转面状功能实现 94
5.6矢量数据缓冲区分析功能实现 94
5.7栅格数据生成 /删除金字塔功能实现 97
5.8多波段影像合成功能实现 99
5.9影像子集提取功能实现 101
5.10影像格式转换功能实现 102
5.11基于种子点的影像子集批量提取功能实现 103
5.12等值线与等值面生成功能实现 104
5.13小结 115
第6章矢量多边形或其内岛批量删除模块 MHFeaPolygonOrIslandRemove的实现 116
6.1模块 MHFeaPolygonOrIslandRemove需求设计与原理 116
6.2模块 MHFeaPolygonOrIslandRemove的功能描述 118
6.3模块 MHFeaPolygonOrIslandRemove的功能实现 119
6.4小结 126
第7章矢量数据 Dissolve算法模块 MHFeaDissolve的实现 127
7.1模块 MHFeaDissolve需求设计 127
7.2模块 MHFeaDissolve的功能描述与实现原理 129
7.3模块 MHFeaDissolve的功能代码实现 129
7.4小结 133
第8章空间数据缺失分析模块 MHFeaSpatialAnalysis的实现 134
8.1模块 MHFeaSpatialAnalysis的功能描述与实现原理 134
8.2影像有效范围计算算法功能实现 136
8.3数据缺失分析的算法功能实现 138
8.4小结 141
第9章面状多边形*大内圆圆心查找模块 MHFeaGenPolygonVoronoi的实现 142
9.1 Voronoi图实现多边形昀大内圆圆心查找原理 143
9.2泛北极地区水体提取方法流程 144
9.3矢量多边形的昀大内圆查找算法过程 146
9.4模块 MHFeaGenPolygonVoronoi的功能代码实现 147
9.5算法应用实例与效果分析 154
9.6小结 157
第10章遥感影像云掩膜模块 MHCloudMask的实现 158
10.1 基于质量评估文件的云掩膜方法 158
10.2 基于阈值分割的云掩膜方法 162
10.3 基于时间序列数据的云掩膜方法 174
10.4 小结 178
第11章栅格数据拼接模块 MHImgMosaic的实现 179
11.1模块 MHImgMosaic的功能描述与实现原理 179
11.2模块 MHImgMosaic的影像拼接算法流程 180
11.3模块 MHImgMosaic的影像拼接算法的实现过程 182
11.4小结 186
第12章指数计算模块 MHImgIndexCompute的实现 188
12.1 模块 MHImgIndexCompute功能需求与实现原理 188
12.2 归一化植被指数 NDVI的计算 189
12.3 归一化水体指数 NDWI的计算 192
12.4 修改型土壤调节植被指数 MSAVI 193
12.5 地表反照率指数 ALBEDO 195
12.6 植被覆盖度指数 VFC 197
12.7 土壤盐渍化指数 SRSI 199
12.8 小结 200
第13章多期影像变化检测模块 MHImgChangeDetection的实现 202
13.1 变化检测的基本原理及方法 202
13.2 模块 MHImgChangeDetection功能需求设计 204
13.3 MHImgChangeDetection功能实现 205
13.4 小结 222
第14章遥感影像均值漂移分割模块 MHImgSegByMeanShift的实现 224
14.1 均值漂移分割算法的原理及方法 224
14.2 基于均值漂移原理的影像分割 226
14.3 均值漂移算法的多尺度分割实现 227
14.4 模块 MHImgSegByMeanShift的功能实现 229
14.5 小结 234
第15章遥感影像分水岭与 SLIC分割模块 MHImgSegByShedAndSLIC的实现 235
15.1 分水岭与 SLIC分割的原理及方法 235
15.2 模块 MHImgSegByShedAndSLIC功能需求设计 238
15.3 分水岭分割功能实现 240
15.4 SLIC分割功能实现 244
15.5 小结 246
第16章影像分类模块 MHImgClsByC5AndSVM的实现 248
16.1 C5.0决策器分类原理及方法 248
16.2 支撑向量机分类原理及方法 250
16.3 模块 MHImgClsByC5AndSVM功能需求与原理 252
16.4 模块 MHImgClsByC5AndSVM分类算法功能的实现 254
16.5 小结 261
第17章水体自动提取模块 MHImgWaterExt的实现 262
17.1 水体提取的原理与方法 262
17.2 模块 MHImgWaterExt功能需求设计 266
17.3 MHImgWaterExt功能实现 267
17.4 小结 276
第18章不透水面提取模块 MHImgISAClassification的实现 278
18.1 中分辨率遥感不透水面提取的原理与方法 278
18.2 城市区域提取功能 282
18.3 区域光谱分析功能(初始样本生成) 288
18.4 不透水面迭代分类功能 291
18.5 小结 296
第19章深度学习样本生成模块 MHDPSampleGen的实现 298
19.1 待标注影像裁剪 299
19.2 矢量样本勾画 302
19.3 栅格样本生成 303
19.4 样本增强 304
19.5 训练列表生成 306
19.6 小结 307
第20章深度学习语义分割模块 MHDPSemanticSeg的实现 308
20.1 模块架构及依赖 309
20.2 模型库 310
20.3 训练框架 313
20.4 损失函数 316
20.5 数据处理与装载 318
20.6 模型训练 321
20.7 模型预测 324
20.8 小结 329
第21章深度学习信息提取工程实践与应用 330
21.1 山东栖霞庙后镇地块级作物种植结构制图 330
21.2 新疆奎屯不规则时序遥感作物分类 351
21.3 云南楚雄无人机影像烟田清塘点株 367
21.4 小结 373后记 374
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

温馨提示:请使用浙江工贸职业技术学院的读者帐号和密码进行登录

点击获取验证码
登录