第1章WebGIS概述11.1GIS的發展2
1.2WebGIS及其發展3
1.2.1傳統WebGIS的不足3
1.2.2從Web站點發展為Web服務4
1.2.3從SOAP發展為REST5
1.2.4從三層架構發展為多層架構6
1.2.5從WebGIS1.0到2.07
1.3Web服務8
1.3.1Web服務的重要性8
1.3.2REST及REST風格的Web服務11
1.3.3查看在線的Web服務13
1.3.4OGC的Web服務規范15
1.4自由及開源軟件、開放規范與開放數據16
1.4.1自由及開源GIS軟件17
1.4.2開放規范的使用17
1.4.3開放數據的作用18
1.5實踐1:QGIS的安裝與基本使用19
1.6習題22
第2章Web服務與WebGIS的設計23
2.1WebGIS的系統架構24
2.2Web地圖的組成26
2.2.1基礎底圖27
2.2.2專題圖層28
2.2.3交互小組件29
2.3實踐2:GeoServer的安裝與初步使用29
2.4習題33
第3章空間數據的存儲與處理34
3.1空間數據常用的開放格式35
3.1.1基于文件的數據35
3.1.2基于空間數據庫的數據38
3.2WebGIS中的數據層39
3.2.1服務器的選擇39
3.2.2文件與數據庫方式的選擇40
3.2.3開放數據格式與專有格式的選擇40
3.3處理空間數據的開源工具40
3.3.1QGIS41
3.3.2GDAL與OGR工具42
3.4實踐3:使用QGIS裁剪與投影變換矢量數據43
3.4.1使用QGIS裁剪數據并轉換投影43
3.4.2使用OGR命令行工具裁剪與投影變換數據45
3.4.3在批處理中運行OGR功能47
3.4.4數據整合48
3.5實踐4:使用QGIS處理柵格數據48
3.6實踐5:PostGIS的安裝與初步使用52
3.6.1安裝PostGIS52
3.6.2創建空間數據庫53
3.6.3導入空間數據54
3.7習題57
第4章使用WMS在服務器端繪制與查詢地圖58
4.1動態繪制地圖服務59
4.1.1動態繪制地圖的優點59
4.1.2動態繪制地圖的缺點59
4.1.3動態繪制地圖的相關服務器軟件60
4.2WMS規范基礎60
4.2.1使用GetCapabilities操作請求服務元數據61
4.2.2使用GetMap操作請求地圖64
4.2.3使用GetFeatureInfo操作請求地圖要素信息65
4.3WMS的樣式與符號67
4.3.1使用GetStyles操作請求樣式67
4.3.2使用GetLegendGraphic操作請求圖例68
4.4實踐6:使用GeoServer發布WMS服務69
4.4.1使用默認樣式發布一個圖層69
4.4.2使用樣式化圖層描述符72
4.4.3在QGIS中訪問WMS77
4.5實踐7:高級符號與圖層組78
4.5.1使用QGIS創建樣式化圖層描述符78
4.5.2將多圖層發布為WMS服務80
4.6習題82
第5章切片地圖83
5.1為什么使用切片地圖84
5.2何時使用地圖切片86
5.2.1是否有滿足需求的切片地圖86
5.2.2投影87
5.2.3比例尺88
5.3創建與提供切片地圖服務的策略89
5.3.1創建切片地圖的策略90
5.3.2使用開源軟件創建切片90
5.4實踐8:使用GeoWebCache創建切片91
5.5實踐9:使用TileMill創建切片93
5.5.1使用TileMill設計地圖93
5.5.2輸出與提取地圖切片99
5.5.3發布與測試切片102
5.6習題104
第6章使用Web地圖API訪問地圖服務105
6.1Web地圖API106
6.1.1Web地圖API的選擇106
6.1.2主要FOSS類型的Web地圖API107
6.1.3主要的商業Web地圖API108
6.2使用Web地圖API的基本步驟110
6.2.1引用JavaScript與樣式文件110
6.2.2地圖div與對象111
6.2.3Layer對象111
6.2.4圖層樣式化機制112
6.2.5事件與交互元素113
6.3查看OpenLayers實例115
6.3.1切片地圖實例115
6.3.2WMS實例116
6.3.3查詢實例116
6.4實踐10:使用OpenLayers實現在切片地圖上疊加WMS119
6.4.1發布專題數據WMS服務120
6.4.2準備開發環境121
6.4.3頁面設計與代碼編寫122
6.5習題127
第7章在客戶端繪制矢量數據128
7.1在客戶端繪制矢量數據的優勢與挑戰129
7.1.1客戶端繪制矢量數據的優勢129
7.1.2客戶端繪制矢量數據的挑戰130
7.1.3客戶端如何繪制矢量數據130
7.1.4從服務器獲取數據的方法130
7.2使用KML矢量數據131
7.2.1KML簡介131
7.2.2在OpenLayers中使用KML132
7.3使用GeoJSON133
7.3.1GeoJSON簡介133
7.3.2在OpenLayers中使用GeoJSON134
7.4在OpenLayers中符號化矢量圖層135
7.5實踐11:在OpenLayers使用GeoJSON圖層137
7.6實踐12:訪問用戶KML數據142
7.6.1頁面設計142
7.6.2功能實現143
7.7習題148
第8章主流JavaScript框架的使用與專題制圖149
8.1主流JavaScript框架150
8.1.1jQuery150
8.1.2Mootools151
8.1.3ExtJS151
8.1.4Dojo152
8.2OpenLayers的控件154
8.3基于屬性值符號化圖層156
8.3.1在OpenLayers中讀取屬性值157
8.3.2獨立值專題圖158
8.3.3等級符號專題圖159
8.3.4范圍專題圖160
8.3.5根據屬性限制要素的顯示163
8.4實踐13:使用OpenLayers與Dojo進行專題制圖165
8.4.1頁面布局165
8.4.2代碼設計168
8.5習題174
第9章Web要素服務176
9.1WFS177
9.1.1WFS請求與響應的格式177
9.1.2WFS服務器與客戶端179
9.2事務性WFS與基于Web的數據編輯180
9.3實踐14:基于Web的空間數據編輯功能實現181
9.3.1發布服務181
9.3.2基于Web編輯功能開發182
9.4習題190
第10章WCS及多維數據191
10.1WCS及其操作192
10.1.1GetCapabilities操作192
10.1.2DescribeCoverage操作193
10.1.3GetCoverage操作194
10.2多維數據與圖像鑲嵌插件195
10.2.1多維數據195
10.2.2圖像鑲嵌插件198
10.3實踐15:多維數據WCS的發布198
10.3.1發布時間序列柵格數據198
10.3.2發布時間序列與高程序列柵格數據204
10.4實踐16:在OpenLayers中訪問WCS207
10.4.1頁面設計207
10.4.2代碼設計208
10.5習題211
第11章Web處理服務212
11.1GeoServer中的WPS213
11.1.1WPS擴展的安裝213
11.1.2GeoServer中WPS包含的類型214
11.2WPS的操作215
11.2.1GetCapabilities操作215
11.2.2DescribeProcess操作216
11.2.3Execute操作217
11.3實踐17:使用WPS創建等高線地圖219
11.3.1創建靜態等高線地圖219
11.3.2動態創建等高線223
11.4實踐18:在OpenLayers中使用WPS229
11.4.1頁面設計230
11.4.2代碼實現230
11.5習題233
第12章開放數據獲取與地圖混搭應用236
12.1開放數據的方式237
12.1.1開放數據許可237
12.1.2商業軟件與開放數據238
12.2VGI與眾包項目239
12.2.1VGI239
12.2.2眾包240
12.3OpenStreetMap及其開放數據的應用240
12.3.1OpenStreetMap數據模式241
12.3.2OpenStreetMap的使用243
12.4地圖混搭應用245
12.4.1混搭應用的概念245
12.4.2網絡資源245
12.5實踐19:從OpenStreetMap獲取源數據249
12.5.1使用QGIS下載數據250
12.5.2使用OpenStreetMap查詢API下載數據253
12.6實踐20:城市天氣預報系統開發256
12.6.1服務準備與頁面設計256
12.6.2代碼實現256
12.7習題261