本書圍繞應用型地理信息系統(tǒng)(GIS)設計與開發(fā),從理論篇、技術篇和實踐篇3個部分進行內(nèi)容組織。理論篇講述了GIS設計與開發(fā)的理論技術基礎,主要包含主流的應用型GIS系統(tǒng)開發(fā)技術、應用型GIS設計方法、應用型GIS開發(fā)軟件工程理論技術、空間數(shù)據(jù)庫設計、數(shù)據(jù)標準與共享等;技術篇主要介紹了兩種組件式開發(fā),即MapX和ArcGIS Engine兩種組件分別在VB和C#前端開發(fā)工具下的應用,在簡單介紹了HTML+Web IIS架構下的網(wǎng)絡開發(fā)環(huán)境后,講述了天地圖和百度地圖國產(chǎn)在線地圖API的開發(fā)應用;實踐篇提供了MapX+VB、ArcGIS Engine+C#和基于百度在線地圖API的Web地圖應用開發(fā)實例,以幫助學生進行上機實踐。本書為教師和學生提供了多種授課內(nèi)容組合的選擇方式,可以較好地滿足不同區(qū)域和不同教學環(huán)境下地理信息系統(tǒng)專業(yè)及相關專業(yè)本科生和研究生教學實踐的需要。
2004年1月,Nature雜志發(fā)表了題為Mapping Opportunities的論文,贊同美國勞工部的觀點:21世紀中期,以地理信息技術為工具的地球科學技術將大放光彩,并將成為最有前景的3個專業(yè)方向之一。本書第一作者自2006年7月從北京大學遙感與地理信息系統(tǒng)研究所博士畢業(yè)后,到新疆大學任教,承擔了地理信息科學等專業(yè)的專業(yè)課程教學任務。新疆大學是全國較早設立地圖學與地理信息系統(tǒng)專業(yè)的高校,為國家培養(yǎng)了較多地理信息系統(tǒng)專業(yè)技術人員和相關專業(yè)領域的管理人員。作者團隊近年來主要承擔新疆大學和新疆農(nóng)業(yè)大學地理信息系統(tǒng)專業(yè)的相關本科和研究生課程。作者團隊在教學工作中發(fā)現(xiàn):不同高校相關學科基礎不同,人才培養(yǎng)方向有差異,師資力量參差不齊,對應用型地理信息系統(tǒng)設計與開發(fā)類課程教材內(nèi)容的需求差異較大,所以因地制宜、因材施教和與時俱進成為對特定地區(qū)地理信息系統(tǒng)設計與開發(fā)方面教材編制的重要原則。為此,作者團隊借助新疆高?蒲杏媱澲攸c項目和新疆青年科技創(chuàng)新人才培養(yǎng)工程項目,結合應用型地理信息系統(tǒng)設計與開發(fā)類課程的現(xiàn)有資料、主流技術和作者團隊已有的開發(fā)應用案例,有針對性地編著了本教材。在此,對給予經(jīng)費支持的科研主管單位、作者團隊所在單位的領導、所有應用型地理信息系統(tǒng)設計與開發(fā)類課程現(xiàn)有資料的編著者、相關的專業(yè)軟件服務商、參加編著的所有老師和同學們表示由衷的感謝!
作者團隊自2012年起開始了本書的內(nèi)容規(guī)劃,在推進的過程中,深感自己能力和精力的不足,幾度停滯不前,但教學工作和人才培養(yǎng)工作的需求不斷激勵著作者團隊。在新疆教育廳、新疆科技廳、新疆大學和新疆農(nóng)業(yè)大學有關領導和相關項目經(jīng)費的支持下,在丁建麗教授、呂光輝教授等領導的鼓勵下,在電子工業(yè)出版社崔彤編輯的積極配合下,本書才得以完成出版,作者團隊由衷地感謝他們。作者團隊還要感謝新疆大學科研處和計財處在出版費用支出上給予的支持;感謝鄭江華教授指導的研究生為本書所做的資料收集、文字錄入、制圖表、上機實踐、代碼驗證和業(yè)務聯(lián)系,他們是:牛文淵(塔里木農(nóng)業(yè)大學)(天地圖部分)、張圓(北京師范大學博士)(MapX組件開發(fā))、毛亞會(資料收集與文字錄入)、吳秀蘭(新疆氣候中心遙感中心)(資料收集與文字錄入)、陳晨(伊犁師范學院)(案例開發(fā)討論與建議)、張雪婷(內(nèi)容校對)、范媛(內(nèi)容校對與修正)等。劉永強教授對書稿組織架構提出了建設性意見。邱琳承擔了第5章內(nèi)容的撰寫,軒俊偉(新疆農(nóng)業(yè)大學)負責了第6章、第8章和第10章內(nèi)容的撰寫,鄭江華負責全書的框架設計、統(tǒng)稿和剩余其他章節(jié)的指導與撰寫。感謝所有對本書有貢獻的參考文獻編著者;感謝地理信息系統(tǒng)專業(yè)軟件服務提供商易智瑞、北京超圖軟件技術有限公司和在線地圖服務提供者天地圖與百度公司等提供的技術支持。文中涉及的商標和產(chǎn)品名稱均歸相關廠商所有。
特別感謝電子工業(yè)出版社的崔彤編輯,沒有她耐心細致的鼓勵、督促和負責任的編輯,本書也無法出版。
最后感謝我的家人對我工作的支持。
書中難免有不當之處,敬請各位讀者不吝指正!
編著者
2019年11月5日
鄭江華,男,教授、博導,1973年6月出生,現(xiàn)任新疆大學旅游學院副院長。主講地理信息系統(tǒng)(本科)、空間分析(研究生)、空間數(shù)據(jù)分析(研究生)、空間信息科學(研究生)和地理信息系統(tǒng)設計與開發(fā)(本科和研究生)等課程,主要研究方向:地理信息系統(tǒng)與遙感應用研究;地理環(huán)境建模與可視化;生物災害遙感監(jiān)測與氣候變化;城市地理與智慧旅游。
第一篇 理論篇
第1章 GIS設計與開發(fā)基礎 2
1.1 GIS的概念、產(chǎn)生和發(fā)展趨勢 2
1.1.1 GIS的定義及組成 2
1.1.2 GIS的產(chǎn)生 4
1.1.3 GIS的發(fā)展趨勢 6
1.2 GIS的空間數(shù)據(jù)模型 10
1.2.1 矢量數(shù)據(jù)及其拓撲關系模型 11
1.2.2 柵格數(shù)據(jù)模型 12
1.2.3 屬性數(shù)據(jù)及其表示 13
1.2.4 空間地理位置 14
1.2.5 空間數(shù)據(jù)與屬性數(shù)據(jù)的連接 18
1.2.6 數(shù)據(jù)模型與GIS功能之間的聯(lián)系 19
1.3 GIS的分類 19
1.3.1 應用型GIS 20
1.3.2 工具型GIS 21
1.3.3 應用型GIS開發(fā)的三種實現(xiàn)方式 22
1.4 GIS開發(fā)的組件技術 23
1.4.1 軟件開發(fā)的組件技術 23
1.4.2 COM與 DCOM 24
1.4.3 組件式GIS的特點 25
1.4.4 組件式GIS開發(fā)平臺的結構 27
1.4.5 組件技術與GIS的發(fā)展 28
1.4.6 ActiveX與ActiveX控件 29
1.5 其他GIS開發(fā)技術簡介 30
1.5.1 網(wǎng)格GIS 30
1.5.2 共相GIS 31
1.5.3 云GIS 31
第2章 GIS設計與開發(fā)的基本方法 33
2.1 GIS設計概述 33
2.1.1 GIS設計的特點 33
2.1.2 GIS設計的原則 34
2.1.3 GIS設計的內(nèi)容 35
2.1.4 GIS設計的步驟 35
2.2 GIS設計的方法 36
2.2.1 結構化生命周期法 36
2.2.2 原型化方法 38
2.2.3 面向對象方法 41
2.3 需求分析 44
2.3.1 需求分析的內(nèi)容 44
2.3.2 可行性研究 45
2.3.3 可行性分析報告 47
2.3.4 需求分析和可行性研究的一般原則 47
2.3.5 本節(jié)實例 47
2.4 系統(tǒng)總體設計 52
2.4.1 系統(tǒng)總體設計的內(nèi)容 52
2.4.2 系統(tǒng)總體設計的步驟 54
2.4.3 系統(tǒng)總體設計的基本要求 55
2.4.4 系統(tǒng)總體設計的基本原則 56
2.4.5 本節(jié)實例 56
2.5 系統(tǒng)詳細設計 61
2.5.1 GIS功能設計要點 61
2.5.2 GIS功能設計的原則 62
2.5.3 地理數(shù)據(jù)庫設計 63
2.5.4 應用模型與方法設計 64
2.5.5 本節(jié)實例 66
2.6 GIS軟件設計 67
2.6.1 應用型GIS軟件設計的基本特點 68
2.6.2 信息描述 68
2.6.3 軟件設計方法 71
2.7 用戶界面設計 73
2.7.1 用戶界面的作用 73
2.7.2 用戶界面的設計原則 74
2.7.3 用戶界面的主要類型及主要界面組件 75
2.7.4 GIS中常用的其他界面技術 77
2.8 GIS軟件開發(fā)的工程化 78
2.8.1 GIS開發(fā)工程化的方法 79
2.8.2 GIS工程設計的基本原則 80
2.8.3 GIS工程設計的規(guī)范 81
2.8.4 GIS工程項目的管理 82
2.8.5 GIS工程建設中的文檔 82
第3章 數(shù)據(jù)庫設計基礎與空間數(shù)據(jù)庫設計 83
3.1 數(shù)據(jù)庫概述 83
3.1.1 數(shù)據(jù)庫的基本概念 83
3.1.2 數(shù)據(jù)管理技術的發(fā)展 85
3.1.3 數(shù)據(jù)庫的數(shù)據(jù)模型 86
3.1.4 數(shù)據(jù)庫設計 94
3.2 需求分析 97
3.2.1 應用領域的調查 98
3.2.2 定義數(shù)據(jù)庫支持的信息與應用 98
3.2.3 定義數(shù)據(jù)庫操作任務 99
3.2.4 定義數(shù)據(jù)項 100
?
3.3 概念設計 100
3.3.1 概念設計的基本方法 100
3.3.2 視圖設計的基本策略 101
3.3.3 視圖綜合設計法 102
3.4 邏輯設計 104
3.5 物理設計 104
3.5.1 影響物理設計的因素 105
3.5.2 選擇存取方法 105
3.5.3 設計存儲結構 107
3.6 數(shù)據(jù)庫的實施、運行和維護 108
3.6.1 數(shù)據(jù)庫的實施 108
3.6.2 數(shù)據(jù)庫的運行和維護 109
3.7 空間數(shù)據(jù)庫概述 110
3.7.1 空間數(shù)據(jù)庫特點 110
3.7.2 空間數(shù)據(jù)庫的管理方法 111
3.7.3 空間數(shù)據(jù)庫引擎 113
3.8 空間數(shù)據(jù)庫的設計 117
3.8.1 空間數(shù)據(jù)庫的設計原則 117
3.8.2 空間數(shù)據(jù)庫的設計過程 118
3.8.3 空間數(shù)據(jù)庫的需求分析和數(shù)據(jù)模型設計 119
3.8.4 空間數(shù)據(jù)庫的概念設計 120
3.8.5 空間數(shù)據(jù)庫的詳細設計 124
3.9 基于ArcGIS的廈門空間地理基礎信息數(shù)據(jù)庫建設實例 126
第4章 GIS開發(fā)架構 132
4.1 基于C/S模式的網(wǎng)絡GIS 132
4.1.1 C/S模式簡介 132
4.1.2 C/S網(wǎng)絡組件平臺及商用解決方案 133
4.2 基于B/S模式的網(wǎng)絡GIS 134
4.3 GIS標準化 135
4.3.1 促進空間數(shù)據(jù)的使用及交換 136
4.3.2 促進地理信息共享 138
4.4 GIS標準體系 139
4.4.1 制定標準體系的目的和意義 139
4.4.2 GIS標準體系的編制原則和方法 140
4.4.3 GIS標準的主要內(nèi)容 141
4.5 國外GIS標準化組織 141
4.5.1 ISO/TC 211 143
4.5.2 OGC 145
4.5.3 CEN/TC 287 147
4.5.4 FGDC 148
4.5.5 ANSI 152
4.6 國內(nèi)GIS標準化 153
4.6.1 國內(nèi)GIS標準化現(xiàn)狀 153
4.6.2 國內(nèi)GIS標準化體系 154
第二篇 技術篇
第5章 ArcGIS Engine基礎 160
5.1 ArcGIS Engine概述 160
5.2 ArcGIS Engine組件庫 161
5.3 閱讀對象模型圖 167
5.3.1 ArcGIS Engine中的類與對象 167
5.3.2 類與類的關系 168
5.4 ArcGIS Engine組成部分 169
5.5 ArcGIS Engine系統(tǒng)基本功能的設計開發(fā) 170
5.5.1 圖層的加載 170
5.5.2 鷹眼功能的實現(xiàn) 172
5.5.3 放大與縮小功能的實現(xiàn) 175
5.5.4 工具條的功能設計 176
5.5.5 彈出式菜單的設計 176
5.5.6 地圖文檔的保存 179
第6章 Web開發(fā)基礎 181
6.1 HTML基礎 181
6.1.1 萬維網(wǎng)的基本概念 181
6.1.2 HTML的基礎概念 182
6.1.3 HTML的基本標簽 186
6.2 Web服務器簡介 194
6.2.1 IIS 194
6.2.2 Apache 195
第7章 基于天地圖WebAPI的WebGIS開發(fā) 198
7.1 天地圖WebAPI簡介 198
7.1.1 天地圖 198
7.1.2 天地圖WebAPI 198
7.2 搭建天地圖WebAPI開發(fā)環(huán)境 199
7.3 天地圖WebAPI中的“Hello World” 199
7.3.1 將應用聲明為 HTML5 200
7.3.2 引入天地圖的地圖JavaScript API文件 201
7.3.3 地圖 DOM 元素 201
7.3.4 創(chuàng)建地圖實例 201
7.3.5 確定經(jīng)緯度坐標 202
7.3.6 地圖初始化 202
7.4 天地圖WebAPI中的常用概念 202
7.4.1 控件 202
7.4.2 疊加層 203
7.4.3 圖層 204
7.4.4 庫 204
7.5 天地圖WebAPI中的事件類 204
7.6 常用代碼實例 206
7.6.1 地圖基本操作 206
7.6.2 添加標記 206
7.6.3 控件選項 206
第8章 基于百度地圖API的WebGIS開發(fā)(JavaScript) 208
8.1 百度地圖API簡介 208
8.1.1 概述 208
8.1.2 早期發(fā)展歷程 208
8.1.3 產(chǎn)品介紹 209
8.2 百度地圖API的基礎知識 210
8.3 百度地圖控件 213
8.3.1 地圖控件概述 213
8.3.2 向地圖添加控件 213
8.3.3 控制控件位置 214
8.3.4 修改控件配置 214
8.3.5 自定義控件 215
8.3.6 定義構造函數(shù)并繼承Control 215
8.3.7 初始化自定義控件 216
8.3.8 添加自定義控件 216
8.4 百度地圖覆蓋物 217
8.4.1 地圖覆蓋物概述 217
8.4.2 標注 217
8.4.3 內(nèi)存釋放 219
8.4.4 信息窗口 220
8.4.5 折線 220
8.4.6 自定義覆蓋物 221
8.4.7 自定義其他方法 223
8.5 事件 224
8.5.1 地圖事件概述 224
8.5.2 事件監(jiān)聽 225
8.5.3 事件參數(shù)和this 225
8.5.4 移除事件監(jiān)聽 226
8.6 圖層 226
8.7 地圖工具 228
8.7.1 地圖工具概述 228
8.7.2 向地圖添加工具 229
8.8 服務 230
8.8.1 地圖服務概述 230
8.8.2 公交導航 234
8.8.3 駕車導航 236
8.8.4 地理編碼 237
第三篇 實踐篇
第9章 ArcGIS Engine組件式開發(fā) 240
9.1 桌面GIS應用程序框架的建立 240
9.1.1 實踐目的 240
9.1.2 實踐環(huán)境 240
9.1.3 實踐內(nèi)容 240
9.2 鷹眼的實現(xiàn) 246
9.2.1 實踐目的 246
9.2.2 實踐環(huán)境 246
9.2.3 實踐內(nèi)容 247
9.2.4 實例代碼 247
9.3 菜單的添加與實現(xiàn) 251
9.3.1 實踐目的 251
9.3.2 實踐環(huán)境 251
9.3.3 實踐內(nèi)容 251
9.3.4 主要代碼 253
9.4 狀態(tài)欄信息的添加與實現(xiàn) 256
9.4.1 實踐目的 256
9.4.2 實踐環(huán)境 256
9.4.3 實踐內(nèi)容 256
9.4.4 實例代碼 256
9.4.5 實例結果 257
9.5 專題地圖 257
9.5.1 實踐目的 257
9.5.2 實踐環(huán)境 257
9.5.3 實踐內(nèi)容 257
9.5.4 實例代碼 260
9.6 通過要素屬性查詢 272
9.6.1 實踐目的 272
9.6.2 實踐環(huán)境 273
9.6.3 實踐內(nèi)容 273
9.6.4 實例代碼 274
9.7 右擊菜單添加與文本查詢 275
9.7.1 實踐目的 275
9.7.2 實踐環(huán)境 275
9.7.3 實踐內(nèi)容 275
9.7.4 實例代碼 276
9.7.5 實例結果 279
9.8 安裝與部署 280
9.8.1 實踐目的 280
9.8.2 實踐環(huán)境 280
9.8.3 實踐內(nèi)容 280
9.8.4 實踐結果 289
第10章 百度地圖API的WebGIS開發(fā)實例 290
10.1 加載與顯示地圖 290
10.1.1 實踐目的 290
10.1.2 實踐環(huán)境 290
10.1.3 實踐內(nèi)容 291
10.1.4 實例代碼 291
10.2 添加點狀疊加層 292
10.2.1 實踐目的 292
10.2.2 實踐環(huán)境 292
10.2.3 實踐內(nèi)容 292
10.2.4 實例代碼 292
10.3 添加線狀疊加層 294
10.3.1 實踐目的 294
10.3.2 實踐環(huán)境 294
10.3.3 實踐內(nèi)容 294
10.3.4 實例代碼 294
10.4 添加信息窗、事件監(jiān)聽、閉包 295
10.4.1 實踐目的 295
10.4.2 實踐環(huán)境 296
10.4.3 實踐內(nèi)容 296
10.4.4 實例代碼 296
10.5 添加路況疊加層 298
10.5.1 實踐目的 298
10.5.2 實踐環(huán)境 298
10.5.3 實踐內(nèi)容 298
10.5.4 實例代碼 299
10.6 添加文字標注 300
10.6.1 實踐目的 300
10.6.2 實踐環(huán)境 300
10.6.3 實踐內(nèi)容 300
10.6.4 實例代碼 300