日本免费精品视频,男人的天堂在线免费视频,成人久久久精品乱码一区二区三区,高清成人爽a毛片免费网站

在線客服
Web GIS原理與應(yīng)用開發(fā)圖書
人氣:31

Web GIS原理與應(yīng)用開發(fā)

本書擁有一整套利用開源軟件與開放數(shù)據(jù)開發(fā)Web GIS

內(nèi)容簡(jiǎn)介

互聯(lián)網(wǎng)與GIS 結(jié)合而形成的Web GIS是GIS軟件發(fā)展的必然趨勢(shì)。本書以循序漸進(jìn)的方式,通過(guò)講解OGC制定的相關(guān)開放Web服務(wù)規(guī)范,介紹了Web GIS的原理;詳解了一整套利用開源軟件與開放數(shù)據(jù)開發(fā)Web GIS的方案,包括空間數(shù)據(jù)庫(kù)存儲(chǔ)軟件PostGIS、數(shù)據(jù)處理客戶端軟件QGIS、服務(wù)器端軟件GeoServer,以及瀏覽器頁(yè)面端開發(fā)JavaScript API庫(kù)OpenLayers,并通過(guò)實(shí)踐的方式,一步一步地介紹這些開源軟件的應(yīng)用,以及如何利用OpenLayers在互聯(lián)網(wǎng)上共享地理信息、開發(fā)Web GIS2.0應(yīng)用;,本書還介紹了OpenStreetMap等開放數(shù)據(jù)的下載與使用方法。 本書主要讀者對(duì)象為地理信息系統(tǒng)專業(yè)的本科生與碩士研究生,也適用于政府、企業(yè)相關(guān)部門的GIS研究與開發(fā)人員,還適合作為各種GIS培訓(xùn)班的學(xué)習(xí)教材與參考書。

編輯推薦

本書以循序漸進(jìn)的方式,通過(guò)講解OGC制定的相關(guān)開放Web服務(wù)規(guī)范,介紹Web GIS的原理;詳解了一整套利用開源軟件與開放數(shù)據(jù)開發(fā)Web GIS的方案,包括空間數(shù)據(jù)庫(kù)存儲(chǔ)軟件PostGIS、數(shù)據(jù)處理客戶端軟件QGIS、服務(wù)器端軟件GeoServer,以及瀏覽器頁(yè)面端開發(fā)JavaScript API庫(kù)OpenLayers , 并通過(guò)實(shí)踐的方式,逐步介紹這些開源軟件的應(yīng)用,以及如何利用OpenLayers在互聯(lián)網(wǎng)上共享地理信息、開發(fā)Web GIS 2.0應(yīng)用;后,還介紹了OpenStreetMap等開放數(shù)據(jù)的下載與使用方法。本書主要讀者對(duì)象為地理信息系統(tǒng)專業(yè)的本科生與碩士研究生、政府、企業(yè)相關(guān)部門的GIS研究與開發(fā)人員,另外還適合作為各種GIS培訓(xùn)班的學(xué)習(xí)教材與參考書。

作者簡(jiǎn)介

劉光,北京大學(xué)GIS專業(yè)博士,德國(guó)波恩大學(xué)波恩-亞琛信息技術(shù)國(guó)際中心訪問(wèn)學(xué)者,現(xiàn)任職于北京市測(cè)繪設(shè)計(jì)研究院。近期出版了《ArcGIS Server JavaScript API開發(fā)GeoWeb 2.0應(yīng)用》、《Web GIS開發(fā):ArcGIS Server與.NET》、《Visual C .NET應(yīng)用教程》、《地理信息系統(tǒng)實(shí)習(xí)教程》、《地理信息系統(tǒng)二次開發(fā)教程——組件篇》與《地理信息系統(tǒng)二次開發(fā)教程——語(yǔ)言篇》等。主持的工程有北京市房屋全生命周期管理平臺(tái)、北京市交通專用地理信息系統(tǒng)、北京市勘察設(shè)計(jì)與測(cè)繪管理信息系統(tǒng)等。

目錄

第1章 Web GIS概述 1

1.1 GIS的發(fā)展 2

1.2 Web GIS及其發(fā)展 3

1.2.1 傳統(tǒng)Web GIS的不足 3

1.2.2 從Web站點(diǎn)發(fā)展為Web服務(wù) 4

1.2.3 從SOAP發(fā)展為REST 5

1.2.4 從三層架構(gòu)發(fā)展為多層架構(gòu) 6

1.2.5 從Web GIS 1.0到2.0 7

1.3 Web服務(wù) 8

1.3.1 Web服務(wù)的重要性 8

1.3.2 REST及REST風(fēng)格的Web服務(wù) 11

1.3.3 查看在線的Web服務(wù) 13

1.3.4 OGC的Web服務(wù)規(guī)范 15

1.4 自由及開源軟件、開放規(guī)范與開放數(shù)據(jù) 16

1.4.1 自由及開源GIS軟件 17

1.4.2 開放規(guī)范的使用 17

1.4.3 開放數(shù)據(jù)的作用 18

1.5 實(shí)踐1:QGIS的安裝與基本使用 19

1.6 習(xí)題 22

第2章 Web服務(wù)與Web GIS的設(shè)計(jì) 23

2.1 Web GIS的系統(tǒng)架構(gòu) 24

2.2 Web地圖的組成 26

2.2.1 基礎(chǔ)底圖 27

2.2.2 專題圖層 28

2.2.3 交互小組件 29

2.3 實(shí)踐2:GeoServer的安裝與初步使用 29

2.4 習(xí)題 33

第3章 空間數(shù)據(jù)的存儲(chǔ)與處理 34

3.1 空間數(shù)據(jù)常用的開放格式 35

3.1.1 基于文件的數(shù)據(jù) 35

3.1.2 基于空間數(shù)據(jù)庫(kù)的數(shù)據(jù) 38

3.2 Web GIS中的數(shù)據(jù)層 39

3.2.1 服務(wù)器的選擇 39

3.2.2 文件與數(shù)據(jù)庫(kù)方式的選擇 40

3.2.3 開放數(shù)據(jù)格式與專有格式的選擇 40

3.3 處理空間數(shù)據(jù)的開源工具 40

3.3.1 QGIS 41

3.3.2 GDAL與OGR工具 42

3.4 實(shí)踐3:使用QGIS裁剪與投影變換矢量數(shù)據(jù) 43

3.4.1 使用QGIS裁剪數(shù)據(jù)并轉(zhuǎn)換投影 43

3.4.2 使用OGR命令行工具裁剪與投影變換數(shù)據(jù) 45

3.4.3 在批處理中運(yùn)行OGR功能 47

3.4.4 數(shù)據(jù)整合 48

3.5 實(shí)踐4:使用QGIS處理柵格數(shù)據(jù) 48

3.6 實(shí)踐5:PostGIS的安裝與初步使用 52

3.6.1 安裝PostGIS 52

3.6.2 創(chuàng)建空間數(shù)據(jù)庫(kù) 53

3.6.3 導(dǎo)入空間數(shù)據(jù) 54

3.7 習(xí)題 57

第4章 使用WMS在服務(wù)器端繪制與查詢地圖 58

4.1 動(dòng)態(tài)繪制地圖服務(wù) 59

4.1.1 動(dòng)態(tài)繪制地圖的優(yōu)點(diǎn) 59

4.1.2 動(dòng)態(tài)繪制地圖的缺點(diǎn) 59

4.1.3 動(dòng)態(tài)繪制地圖的相關(guān)服務(wù)器軟件 60

4.2 WMS規(guī)范基礎(chǔ) 60

4.2.1 使用GetCapabilities操作請(qǐng)求服務(wù)元數(shù)據(jù) 61

4.2.2 使用GetMap操作請(qǐng)求地圖 64

4.2.3 使用GetFeatureInfo操作請(qǐng)求地圖要素信息 65

4.3 WMS的樣式與符號(hào) 67

4.3.1 使用GetStyles操作請(qǐng)求樣式 67

4.3.2 使用GetLegendGraphic操作請(qǐng)求圖例 68

4.4 實(shí)踐6:使用GeoServerWMS服務(wù) 69

4.4.1 使用默認(rèn)樣式一個(gè)圖層 69

4.4.2 使用樣式化圖層描述符 72

4.4.3 在QGIS中訪問(wèn)WMS 77

4.5 實(shí)踐7:高級(jí)符號(hào)與圖層組 78

4.5.1 使用QGIS創(chuàng)建樣式化圖層描述符 78

4.5.2 將多圖層為WMS服務(wù) 80

4.6 習(xí)題 82

第5章 切片地圖 83

5.1 為什么使用切片地圖 84

5.2 何時(shí)使用地圖切片 86

5.2.1 是否有滿足需求的切片地圖 86

5.2.2 投影 87

5.2.3 比例尺 88

5.3 創(chuàng)建與提供切片地圖服務(wù)的策略 89

5.3.1 創(chuàng)建切片地圖的策略 90

5.3.2 使用開源軟件創(chuàng)建切片 90

5.4 實(shí)踐8:使用GeoWebCache創(chuàng)建切片 91

5.5 實(shí)踐9:使用TileMill創(chuàng)建切片 93

5.5.1 使用TileMill設(shè)計(jì)地圖 93

5.5.2 輸出與提取地圖切片 99

5.5.3 與測(cè)試切片 102

5.6 習(xí)題 104

第6章 使用Web地圖API訪問(wèn)地圖服務(wù) 105

6.1 Web地圖API 106

6.1.1 Web地圖API的選擇 106

6.1.2 主要FOSS類型的Web地圖API 107

6.1.3 主要的商業(yè)Web地圖API 108

6.2 使用Web地圖API的基本步驟 110

6.2.1 引用JavaScript與樣式文件 110

6.2.2 地圖div與對(duì)象 111

6.2.3 Layer對(duì)象 111

6.2.4 圖層樣式化機(jī)制 112

6.2.5 事件與交互元素 113

6.3 查看OpenLayers實(shí)例 115

6.3.1 切片地圖實(shí)例 115

6.3.2 WMS實(shí)例 116

6.3.3 查詢實(shí)例 116

6.4 實(shí)踐10:使用OpenLayers實(shí)現(xiàn)在切片地圖上疊加WMS 119

6.4.1 專題數(shù)據(jù)WMS服務(wù) 120

6.4.2 準(zhǔn)備開發(fā)環(huán)境 121

6.4.3 頁(yè)面設(shè)計(jì)與代碼編寫 122

6.5 習(xí)題 127

第7章 在客戶端繪制矢量數(shù)據(jù) 128

7.1 在客戶端繪制矢量數(shù)據(jù)的優(yōu)勢(shì)與挑戰(zhàn) 129

7.1.1 客戶端繪制矢量數(shù)據(jù)的優(yōu)勢(shì) 129

7.1.2 客戶端繪制矢量數(shù)據(jù)的挑戰(zhàn) 130

7.1.3 客戶端如何繪制矢量數(shù)據(jù) 130

7.1.4 從服務(wù)器獲取數(shù)據(jù)的方法 130

7.2 使用KML矢量數(shù)據(jù) 131

7.2.1 KML簡(jiǎn)介 131

7.2.2 在OpenLayers中使用KML 132

7.3 使用GeoJSON 133

7.3.1 GeoJSON簡(jiǎn)介 133

7.3.2 在OpenLayers中使用GeoJSON 134

7.4 在OpenLayers中符號(hào)化矢量圖層 135

7.5 實(shí)踐11:在OpenLayers使用GeoJSON圖層 137

7.6 實(shí)踐12:訪問(wèn)用戶KML數(shù)據(jù) 142

7.6.1 頁(yè)面設(shè)計(jì) 142

7.6.2 功能實(shí)現(xiàn) 143

7.7 習(xí)題 148

第8章 主流JavaScript框架的使用與專題制圖 149

8.1 主流JavaScript框架 150

8.1.1 jQuery 150

8.1.2 Mootools 151

8.1.3 Ext JS 151

8.1.4 Dojo 152

8.2 OpenLayers的控件 154

8.3 基于屬性值符號(hào)化圖層 156

8.3.1 在OpenLayers中讀取屬性值 157

8.3.2 獨(dú)立值專題圖 158

8.3.3 等級(jí)符號(hào)專題圖 159

8.3.4 范圍專題圖 160

8.3.5 根據(jù)屬性限制要素的顯示 163

8.4 實(shí)踐13:使用OpenLayers與Dojo進(jìn)行專題制圖 165

8.4.1 頁(yè)面布局 165

8.4.2 代碼設(shè)計(jì) 168

8.5 習(xí)題 174

第9章 Web要素服務(wù) 176

9.1 WFS 177

9.1.1 WFS請(qǐng)求與響應(yīng)的格式 177

9.1.2 WFS服務(wù)器與客戶端 179

9.2 事務(wù)性WFS與基于Web的數(shù)據(jù)編輯 180

9.3 實(shí)踐14:基于Web的空間數(shù)據(jù)編輯功能實(shí)現(xiàn) 181

9.3.1 服務(wù) 181

9.3.2 基于Web編輯功能開發(fā) 182

9.4 習(xí)題 190

第10章 WCS及多維數(shù)據(jù) 191

10.1 WCS及其操作 192

10.1.1 GetCapabilities操作 192

10.1.2 DescribeCoverage操作 193

10.1.3 GetCoverage操作 194

10.2 多維數(shù)據(jù)與圖像鑲嵌插件 195

10.2.1 多維數(shù)據(jù) 195

10.2.2 圖像鑲嵌插件 198

10.3 實(shí)踐15:多維數(shù)據(jù)WCS的 198

10.3.1 時(shí)間序列柵格數(shù)據(jù) 198

10.3.2 時(shí)間序列與高程序列柵格數(shù)據(jù) 204

10.4 實(shí)踐16:在OpenLayers中訪問(wèn)WCS 207

10.4.1 頁(yè)面設(shè)計(jì) 207

10.4.2 代碼設(shè)計(jì) 208

10.5 習(xí)題 211

第11章 Web處理服務(wù) 212

11.1 GeoServer中的WPS 213

11.1.1 WPS擴(kuò)展的安裝 213

11.1.2 GeoServer中WPS包含的類型 214

11.2 WPS的操作 215

11.2.1 GetCapabilities操作 215

11.2.2 DescribeProcess操作 216

11.2.3 Execute操作 217

11.3 實(shí)踐17:使用WPS創(chuàng)建等高線地圖 219

11.3.1 創(chuàng)建靜態(tài)等高線地圖 219

11.3.2 動(dòng)態(tài)創(chuàng)建等高線 223

11.4 實(shí)踐18:在OpenLayers中使用WPS 229

11.4.1 頁(yè)面設(shè)計(jì) 230

11.4.2 代碼實(shí)現(xiàn) 230

11.5 習(xí)題 233

第12章 開放數(shù)據(jù)獲取與地圖混搭應(yīng)用 236

12.1 開放數(shù)據(jù)的方式 237

12.1.1 開放數(shù)據(jù)許可 237

12.1.2 商業(yè)軟件與開放數(shù)據(jù) 238

12.2 VGI與眾包項(xiàng)目 239

12.2.1 VGI 239

12.2.2 眾包 240

12.3 OpenStreetMap及其開放數(shù)據(jù)的應(yīng)用 240

12.3.1 OpenStreetMap數(shù)據(jù)模式 241

12.3.2 OpenStreetMap的使用 243

12.4 地圖混搭應(yīng)用 245

12.4.1 混搭應(yīng)用的概念 245

12.4.2 網(wǎng)絡(luò)資源 245

12.5 實(shí)踐19:從OpenStreetMap獲取源數(shù)據(jù) 249

12.5.1 使用QGIS下載數(shù)據(jù) 250

12.5.2 使用OpenStreetMap查詢API下載數(shù)據(jù) 253

12.6 實(shí)踐20:城市天氣預(yù)報(bào)系統(tǒng)開發(fā) 256

12.6.1 服務(wù)準(zhǔn)備與頁(yè)面設(shè)計(jì) 256

12.6.2 代碼實(shí)現(xiàn) 256

12.7 習(xí)題 261

在線預(yù)覽

第5章

切片地圖

從本章可以學(xué)習(xí)到:

v 為什么使用切片地圖

v 何時(shí)使用地圖切片

v 創(chuàng)建與提供切片地圖服務(wù)的策略

v 使用GeoWebCache創(chuàng)建切片

v 使用TileMill創(chuàng)建切片

如果要提高Web地圖的訪問(wèn)速度,使用地圖切片是非常有效的方法。地圖切片就是在多個(gè)比例尺下配置地圖,然后提前把每個(gè)比例尺下的地圖繪制為小塊圖片,保存在服務(wù)器上名為緩存的目錄中。這樣客戶端在訪問(wèn)地圖時(shí),可以直接獲取需要的小塊圖片拼接成整幅地圖,而不是由服務(wù)器動(dòng)態(tài)創(chuàng)建出一幅圖片再送到客戶端,從而極大提高了訪問(wèn)速度。

本章將介紹地圖切片的利弊,以及創(chuàng)建與維護(hù)地圖緩存的策略。并通過(guò)兩個(gè)實(shí)踐演示如何在實(shí)際工作中創(chuàng)建地圖切片。及時(shí)個(gè)實(shí)踐演示如何使用GeoServer的GeoWebCache軟件來(lái)創(chuàng)建一個(gè)簡(jiǎn)單的緩存地圖。在第二個(gè)實(shí)踐中,介紹使用TileMill和CartoCSS標(biāo)記語(yǔ)言創(chuàng)建比GeoServer更好的地圖切片。

5.1 為什么使用切片地圖

正如在前面內(nèi)容中所介紹的,最初的Web地圖,無(wú)論在地圖中包含了多少個(gè)圖層,也無(wú)論有多少訪問(wèn)請(qǐng)求,通常都是由服務(wù)器動(dòng)態(tài)繪制。這也就是第4章介紹的使用GeoServer與WMS的方式。但是正如大家注意到的,這類地圖中符號(hào)、標(biāo)注與注記的選擇非常有限而且難以應(yīng)用。事實(shí)上,多年來(lái)為了避免妨礙性能,Web制圖者不得不使用最少的圖層與簡(jiǎn)單符號(hào)來(lái)構(gòu)造地圖。許多情況下,在開發(fā)Web GIS應(yīng)用時(shí),甚至不需要專業(yè)制圖人員的參與,而是由服務(wù)器管理員通過(guò)XML文件來(lái)定義圖層順序和符號(hào)大小等。這種情況在開放Web服務(wù)規(guī)范(如WMS)與商業(yè)Web服務(wù)(如ESRI的ArcIMS)中都存在。

造成使用這種方法的部分原因是為了使Web GIS應(yīng)用程序看起來(lái)就像桌面系統(tǒng)。有時(shí),這些應(yīng)用被稱為“瑞士軍刀應(yīng)用程序”,因?yàn)樗鼈冊(cè)噲D使用Web GIS來(lái)解決一切問(wèn)題。人們希望在Web GIS中也能隨意切換圖層的可見性、重新排序圖層、動(dòng)態(tài)更改圖層符號(hào),以及其他所有桌面GIS應(yīng)用程序能做的一切。諷刺的是,當(dāng)這種心態(tài)盛行的時(shí)候,網(wǎng)絡(luò)技術(shù)還遠(yuǎn)遠(yuǎn)滿足不了這類需求。

在2005年前后,隨著谷歌地圖、微軟虛擬地球(現(xiàn)在稱為Bing地圖)以及其他流行的Web GIS應(yīng)用的出現(xiàn),人們開始意識(shí)到,也許他們并不需要管理每一個(gè)圖層所有屬性的功能。這些互聯(lián)網(wǎng)巨頭已經(jīng)開始將矢量圖層融合為一張柵格化的圖像,這些圖像被切分為256像素×256像素的圖片及切片。這些圖片預(yù)先生成并存儲(chǔ)在磁盤上,以便快速分發(fā)到客戶端。這樣做可以同時(shí)支持成千上萬(wàn)個(gè)并發(fā)請(qǐng)求,而這對(duì)于動(dòng)態(tài)地圖繪制而言基本是不可能的。

正如圖5.1顯示的,切片地圖采用的是金字塔模型,是一種多分辨率層次模型,從切片金字塔的底層到頂層,比例尺越來(lái)越小,分辨率越來(lái)越低,但表示的地理范圍不變。切片地圖通常都帶有一個(gè)級(jí)別、行與列編號(hào)方案,以便將來(lái)自多個(gè)切片地圖服務(wù)的切片放置到正確的位置。

圖5.1 切片地圖包含的內(nèi)容

有了切片地圖,制圖人員再也不用擔(dān)心性能問(wèn)題了,他們可以使用他們所掌握的所有工具,來(lái)制作一張美觀Web地圖。一旦創(chuàng)建了地圖切片,這些切片就保存到了服務(wù)器上的某個(gè)文件夾中,服務(wù)器檢索美觀地圖圖片與丑的圖片的速度是一樣的。正由于Web服務(wù)器可以快速分發(fā)切片地圖圖像,因此我們可以使用AJAX(Asynchronous JavaScript and XML,異步JavaScript和XML)編程技術(shù)來(lái)從服務(wù)器獲取圖片,這樣當(dāng)用戶漫游時(shí)不會(huì)出現(xiàn)頁(yè)面閃爍的現(xiàn)象。

這種變化是革命性的。一類是具有圖層排序與調(diào)整符號(hào)顏色等功能,但響應(yīng)非常遲緩的丑陋的地圖應(yīng)用;一類是沒(méi)有圖層控制,但具有驚人美觀并且快速響應(yīng)的地圖應(yīng)用。對(duì)于這兩類Web GIS應(yīng)用的選擇,雖然對(duì)于一些GIS長(zhǎng)期愛好者可能還需要停下來(lái)比較一下,但對(duì)于普通互聯(lián)網(wǎng)用戶來(lái)說(shuō)根本不用思索,他們無(wú)疑會(huì)選擇后者。

在谷歌地圖了一兩年以后,商業(yè)GIS軟件開始提供創(chuàng)建地圖切片的功能。由于可以使用成熟的地圖制作工具ArcMap,很多人選擇使用ArcGIS Server來(lái)空間信息Web服務(wù),但是其價(jià)格不菲。我國(guó)的超圖SuperMap iServer是另一種商業(yè)選擇。免費(fèi)和開源Mapnik庫(kù)也可以創(chuàng)建地圖切片,但是直到最近幾年才提供了將Mapnik封裝的用戶友好的應(yīng)用程序(即TileMill)。

如果一個(gè)Web GIS應(yīng)用有成千上萬(wàn)用戶并發(fā)訪問(wèn),那么切片地圖是一個(gè)合理的解決方案。然而,切片地圖不提供改變圖層順序與符號(hào)的功能。人們開始研究其他改進(jìn)方案,將通用的基礎(chǔ)底圖圖層為切片,在其上疊加另外的包含專題信息的圖層。通用底圖切片可以用于許多應(yīng)用。如果專題圖層的變化不頻繁,或者覆蓋區(qū)域非常大,則也可以使用切片方式。例如,如果使用Firebug等開發(fā)者工具來(lái)深入檢查谷歌地圖的話,可以看到其底圖與專題圖層(如Panoramio照片)都是以切片方式獲取的,如圖5.2所示。

圖5.2 Panoramio的照片專題圖也以切片的方式提供

5.2 何時(shí)使用地圖切片

如果希望基礎(chǔ)底圖能夠快速漫游,或者同時(shí)有幾十個(gè)并發(fā)用戶,這時(shí)應(yīng)該為底圖創(chuàng)建切片緩存。如果專題圖層中地物要素的空間位置與屬性信息不經(jīng)常變換,那么也可以創(chuàng)建切片緩存。

但不管是那種情況,必須了解到切片緩存代表著切片創(chuàng)建時(shí)該時(shí)刻點(diǎn)的地圖快照。說(shuō)得難聽的話,當(dāng)后端數(shù)據(jù)發(fā)生變化時(shí),這些切片不會(huì)自動(dòng)更新,是一些“死圖片”。為了更新地圖,切片地圖服務(wù)提供者必須定期創(chuàng)建新的切片。對(duì)于那些大規(guī)模的切片緩存,有時(shí)管理員只針對(duì)變換領(lǐng)域更新切片,而不是重建整個(gè)地圖范圍的所有切片。而這又需要記錄哪些地方進(jìn)行過(guò)編輯,或比較幾個(gè)版本的數(shù)據(jù)。

確定Web GIS系統(tǒng)是否需要?jiǎng)?chuàng)建自己的地圖切片,需要考慮以下幾個(gè)方面。

5.2.1 是否有滿足需求的切片地圖

創(chuàng)建切片底圖需要大量豐富的數(shù)據(jù)、高端的地圖制作軟件和制圖技能,以及潛在的大量時(shí)間和磁盤空間。正是由于存在這些挑戰(zhàn),通用的Web混搭常常使用他人創(chuàng)建的地圖切片。如果想沒(méi)有任何限制的自由與免費(fèi)使用,那么OpenStreetMap是個(gè)選擇。而對(duì)于谷歌、微軟或ERSRI的切片地圖,則根據(jù)你的地圖的性質(zhì)(商業(yè)或不以盈利為目的),以及多少人使用你的應(yīng)用程序,確定是免費(fèi)還是付費(fèi)使用。而其他一些公司,例如CloudMade和MapBox,則以O(shè)penStreetMap數(shù)據(jù)為基礎(chǔ)提供他們自己版本的切片。

如果決定創(chuàng)建自己的基礎(chǔ)底圖,那么曾經(jīng)設(shè)計(jì)過(guò)多比例尺地圖的有經(jīng)驗(yàn)的制圖人員是必不可少的。在每個(gè)比例尺下,地圖都應(yīng)該有合適的符號(hào)、顏色以及相應(yīng)的詳細(xì)程度。僅僅為地圖所有不同的比例尺創(chuàng)建注記就是一項(xiàng)令人望而生畏的任務(wù)。此外,如果在底圖中包含衛(wèi)星或航空影像,那么制圖人員還需要另外再單獨(dú)制作一組切片,因?yàn)樾枰煌念伾c符號(hào)。

5.2.2 投影

要?jiǎng)?chuàng)建切片地圖可以使用任何坐標(biāo)系。但是,如果準(zhǔn)備將自己的地圖切片疊加在OpenStreetMap或谷歌、微軟、ERSRI的切片地圖上,則必須將珍貴的GIS數(shù)據(jù)轉(zhuǎn)換到Web墨卡托投影。該投影創(chuàng)建的目的僅僅是方便將整個(gè)世界鑲嵌為一組正方形切片。GIS純粹主義者拒絕接受該投影方式,并預(yù)測(cè)這將無(wú)法得到大規(guī)模認(rèn)可,但事實(shí)與他們的期待大相徑庭。

Web墨卡托投影在很長(zhǎng)一段時(shí)間內(nèi)并沒(méi)有被EPSG的投影數(shù)據(jù)庫(kù)所接納。EPSG認(rèn)為它不能算作科學(xué)意義上的投影,所以只是給了一個(gè)EPSG:900913的標(biāo)號(hào),這個(gè)標(biāo)號(hào)游離在EPSG常規(guī)標(biāo)號(hào)范圍之外。因此對(duì)于一些老的軟件或API,可能使用了該代碼或其他代碼。直到2008年,EPSG才恍然明白:不管橢球體還是球體,其實(shí)都是對(duì)地球的模擬,只是程度上的差別,沒(méi)有本質(zhì)上的不同。或者是不得不接受廣泛的事實(shí)標(biāo)準(zhǔn),EPSG接納了這個(gè)投影,定義投影坐標(biāo)系PROJCS的名字為“Popular Visualization CRS / Mercator”,SRID為EPSG:3785;地理坐標(biāo)系GEOGCS的名字為“Popular Visualization CRS”,SRID為EPSG:4055。這些標(biāo)號(hào)已經(jīng)進(jìn)入“正常范圍”。

另外要注意的是,即使使用EPSG:3785,即Web墨卡托投影顯示地圖,也不能在該投影下進(jìn)行量測(cè)功能,包括線的長(zhǎng)度與多邊形面積的量算。即使在中緯度地區(qū),結(jié)果都存在很大的偏差。要執(zhí)行量測(cè)功能,好是將幾何圖形投影到本地坐標(biāo)系統(tǒng)。

以下鏈接指向一個(gè)小型 Web 應(yīng)用程序,該程序生動(dòng)展示了Web墨卡托投影如何影響距離和面積計(jì)算。

links.esri.com/web_mercator_measurements

圖5.3顯示了如何使用示例 Web 應(yīng)用程序測(cè)量一個(gè)小面的面積。在右側(cè)面板上,有3個(gè)不同的坐標(biāo)系用于計(jì)算此面的面積和周長(zhǎng)。State Plane Oregon North的測(cè)量最為,其次是UTM Zone 10測(cè)量,它們之間只相差很小的百分比。但是,請(qǐng)注意Web墨卡托投影的測(cè)量值,長(zhǎng)度測(cè)量為9600 米,幾乎是State Plane Oregon North值6763的1.5倍。正如所見,Web墨卡托投影不適合用于計(jì)算距離和面積。其他坐標(biāo)系(尤其是大的面積(洲)等角投影)在測(cè)量距離和面積時(shí)同樣不盡如人意。

圖5.3 使用Web墨卡托投影時(shí)多邊形的面積不

ESRI的一篇名為“Measuring distances and areas when your map uses the Mercator projection”的博客文章給出了針對(duì)ArcGIS API for JavaScript的解決方案,使用開源軟件的也可以借鑒其思路。該博客文章的地址如下:

blogs.esri.com/esri/arcgis/2010/03/05/measuring-distances-and-areas-when-your-map-uses-the-mercator-projection/

5.2.3 比例尺

要將地圖切片疊加在OpenStreetMap或谷歌、微軟、ERSRI的ArcGIS在線切片地圖上,除了保障使用相同的投影之外,還需要確保比例尺序列一致。不過(guò)這些地圖的比例尺序列與我們通常見到的地形圖比例尺序列很不一樣,我國(guó)地形圖比例尺一般有1︰10000、1︰50000等。而這些地圖的比例尺是計(jì)算出來(lái)的,最小比例尺是將整個(gè)世界放置在2×2的網(wǎng)格中,每個(gè)網(wǎng)格大小是256像素×256像素,因此最小比例尺為1 : 295829355.45,再放大一個(gè)級(jí)別,那么比例尺在原基礎(chǔ)上乘以2,結(jié)果為1 : 147914677.73,以此類推。由于這些比例尺很不好記憶,也很不好用于交流,并且互聯(lián)網(wǎng)地圖用戶也沒(méi)必要關(guān)心這么的數(shù)字,因此切片地圖的比例尺通常簡(jiǎn)化成為“14級(jí)”“15級(jí)”“20級(jí)”等。用戶只需要大致了解在全國(guó)尺度、省一級(jí)尺度、城市尺度與社區(qū)尺度對(duì)應(yīng)的級(jí)別即可。

表5.1列出了微軟必應(yīng)地圖各比例級(jí)別對(duì)應(yīng)的比例尺。該表中的比例尺與地面分辨率是以赤道位置來(lái)計(jì)算的,根據(jù)緯度不同而會(huì)有不同。

表5.1 微軟必應(yīng)地圖各比例級(jí)別對(duì)應(yīng)的比例尺

級(jí)別 地圖高與寬(像素) 地面分辨率(米/像素) 地圖比例尺(96 dpi)

1 512 78271.5170 1︰295829355.45

2 1024 39135.7585 1︰147914677.73

3 2048 19567.8792 1︰73957338.86

(續(xù)表)

級(jí)別 地圖高與寬(像素) 地面分辨率(米/像素) 地圖比例尺(96 dpi)

4 4096 9783.9396 1︰36978669.43

5 8192 4891.9698 1︰18489334.72

6 16384 2445.9849 1︰9244667.36

7 32768 1222.9925 1︰4622333.68

8 65536 611.4962 1︰2311166.84

9 131072 305.7481 1︰1155583.42

10 262144 152.8741 1︰577791.71

11 524288 76.4370 1︰288895.85

12 1048576 38.2185 1︰144447.93

13 2097152 19.1093 1︰72223.96

14 4194304 9.5546 1︰36111.98

15 8388608 4.7773 1︰18055.99

16 16777216 2.3887 1︰9028.00

17 33554432 1.1943 1︰4514.00

18 67108864 0.5972 1︰2257.00

19 134217728 0.2986 1︰1128.50

20 268435456 0.1493 1︰564.25

21 536870912 0.0746 1︰282.12

22 1073741824 0.0373 1︰141.06

23 2147483648 0.0187 1︰70.53

5.3 創(chuàng)建與提供切片地圖服務(wù)的策略

地圖切片一般都采用簡(jiǎn)單的文件夾結(jié)構(gòu),以便提供服務(wù)。然而,由于切片數(shù)量非常多,因此它們的管理變得非常復(fù)雜。當(dāng)前互聯(lián)網(wǎng)的切片地圖基本有如下兩種方式組織:

(1)將切片圖像以文件夾的結(jié)構(gòu)放在服務(wù)器上,用戶直接請(qǐng)求文件。在這種方法中,只需要將單獨(dú)的切片圖像組織在代表比例級(jí)別、行和列的文件夾結(jié)構(gòu)中。很多地圖API通過(guò)訪問(wèn)包含代表級(jí)別、行和列結(jié)構(gòu)的URL來(lái)訪問(wèn)切片。例如,當(dāng)使用Leaflet API訪問(wèn)地圖切片時(shí),必須提供格式為“http://{s}.somedomain.com/blabla/{z}/{x}/{y}.png”的網(wǎng)址,其中z是縮放級(jí)別,x和y分別是列和行。例如其中OpenCycleMap一個(gè)地圖切片的URL地址如下:

a.tile.opencyclemap.org/cycle/10/265/420.png

(2)將切片以Web服務(wù)的方式提供訪問(wèn)。在這種方法中,雖然Web服務(wù)仍然需要用戶提供訪問(wèn)切片的具體縮放級(jí)別、行與列,但是其背后文件的組織形式是看不見的。該方法比直接使用文件夾的方式相對(duì)稍微復(fù)雜一些,因此同時(shí)也會(huì)帶來(lái)延時(shí)。OGC的 Web地圖切片服務(wù)(Web Map Tiled Service,WMTS)規(guī)范就是按照這種方式來(lái)提供切片服務(wù)的。如果使用Firebug或其他開發(fā)者工具來(lái)查看百度地圖的話,就可以看到該模式。例如,百度地圖的URL如下:

online1.map.bdimg.com/tile/?qt=tile&x=793&y=293&z=12&styles=pl&udt=20150305&scaler=1

雖然通過(guò)仔細(xì)分析,可以看到縮放級(jí)別、行與列參數(shù),但并不能知道百度地圖在后臺(tái)是如何組織地圖切片的。

5.3.1 創(chuàng)建切片地圖的策略

如果地圖范圍覆蓋廣,例如一個(gè)省或國(guó)家,那么大比例尺中地圖切片的數(shù)量非常巨大。然而具有諷刺意味的是,在大比例尺下,很多地圖切片包含的信息卻非常少。例如在1:2250比例尺下,居民區(qū)附近的地圖切片包含了豐富的有用的信息,但是如果漫游到沙漠或海洋地區(qū),那么切片就很可能是空的,沒(méi)有任何有用的信息。那么我們是否還有必要花費(fèi)大量的時(shí)間創(chuàng)建并用上千MB的磁盤空間來(lái)存儲(chǔ)它們呢?

對(duì)于這種情況,我們希望能找到某種按需創(chuàng)建切片的軟件,也就是說(shuō),在用戶及時(shí)次訪問(wèn)該區(qū)域時(shí)創(chuàng)建切片。及時(shí)個(gè)漫游到該地區(qū)的用戶需要等待服務(wù)器創(chuàng)建切片,但是接下來(lái)的用戶就不需要等待了。這樣一來(lái),那些受歡迎的地區(qū)有地圖切片,那些從來(lái)沒(méi)人訪問(wèn)的地區(qū)就不需要?jiǎng)?chuàng)建與存儲(chǔ)切片。顯然,這種方法的有效性基于服務(wù)器的繪制地圖切片的速度。

另一種方案是使用“沒(méi)有數(shù)據(jù)”圖片表明某些地區(qū)沒(méi)有切片。盡管地圖管理人員常常不愿這么做,但是在實(shí)際使用過(guò)程中,當(dāng)用戶看到該圖片時(shí),都只會(huì)責(zé)怪自己放大太多,而不會(huì)埋怨管理員為什么不提供該比例尺下的地圖。

好的方法應(yīng)當(dāng)是事先創(chuàng)建最感興趣地區(qū)的地圖切片,對(duì)于不感興趣的區(qū)域,要么按需創(chuàng)建切片,要么提供“沒(méi)有數(shù)據(jù)”圖片。雖然作為一個(gè)地理學(xué)家,可能不太愿意把一些地方歸為“不感興趣”區(qū)域,但嚴(yán)酷的事實(shí)是,并不是所有的地圖切片都會(huì)有均等的訪問(wèn)量。有研究表明,互聯(lián)網(wǎng)地圖用戶的訪問(wèn)集中在大城市、海邊和交通走廊。近期來(lái)自社交媒體的反饋,如地理微博和Flickr照片數(shù)據(jù)集,更能地揭示了地圖用戶最感興趣地區(qū)。不過(guò)要說(shuō)明的是,我們這里討論的是通用用途的基礎(chǔ)底圖,而對(duì)于那些專業(yè)類型的地圖,例如礦產(chǎn)勘查和野生動(dòng)物保護(hù),可能有截然不同的使用模式。

上述方式要求切片創(chuàng)建軟件具有允許指定部分區(qū)域的能力。大多數(shù)軟件僅僅允許指定一個(gè)矩形的子區(qū)域,但是像海邊、城市等互聯(lián)網(wǎng)地圖用戶所感興趣的區(qū)域卻通常不是矩形區(qū)域。因此有時(shí)需要使用一系列的矩形區(qū)域。

5.3.2 使用開源軟件創(chuàng)建切片

當(dāng)前各種FOSS軟件中的一個(gè)基本工具就是創(chuàng)建網(wǎng)絡(luò)切片地圖工具。其中比較方便的是GeoWebCache,因?yàn)樗稍贕eoServer中。其他還有TileCache與TileStache等。

Mapnik庫(kù)是一個(gè)可為Python與其他語(yǔ)言調(diào)用的C 編寫的自由及開放源代碼軟件,可用于創(chuàng)建地圖切片。Mapnik是一個(gè)高效渲染引擎,其中包含了常用WMS圖層中沒(méi)有的高級(jí)繪圖選項(xiàng)。雖然Mapnik的使用不太方便,通常需要一些Linux的知識(shí)以及一些實(shí)驗(yàn)與犯錯(cuò),然而以利為目的Mapbox公司最近了一個(gè)名為TileMill開放源碼的程序,可以在Mac和Windows上運(yùn)行,以Mapnik為底層,提供了一個(gè)漂亮的窗口界面,從而簡(jiǎn)化了制圖過(guò)程。在本章的第2個(gè)實(shí)踐中,將介紹使用TileMill來(lái)創(chuàng)建費(fèi)城的切片地圖。

5.4 實(shí)踐8:使用GeoWebCache創(chuàng)建切片

如果對(duì)于在WMS中設(shè)置的圖層與符號(hào)均感到滿意,但希望提供響應(yīng)速度,以及支持更多的并發(fā)用戶,那么則可以考慮使用GeoWebCache來(lái)創(chuàng)建地圖切片。主要是因?yàn)镚eoWebCache集成在GeoServer中。在本實(shí)踐中,將介紹如何使用GeoWebCache來(lái)為實(shí)踐7中的NeighborhoodMap圖層組WMS服務(wù)創(chuàng)建切片地圖服務(wù)。

(1)準(zhǔn)備工作。

啟動(dòng)GeoServer,并打開GeoServer的Web管理頁(yè)面。

使用OpenLayer預(yù)覽webgis: NeighborhoodMap圖層組,進(jìn)行放大、縮小以及漫游等地圖操作,注意觀察性能以及地圖的顯示。可以觀察到每次漫游時(shí),標(biāo)注都存在重新定位的現(xiàn)象,表明沒(méi)有使用地圖切片。

(2)創(chuàng)建地圖切片。

在GeoServer的Web管理頁(yè)面窗口的左邊單擊“Tile Caching”中的“Tile Layers”連接,在右邊窗口進(jìn)入Tile Layers頁(yè)面。

在Tile Layers頁(yè)面中,單擊“webgis:NeighborhoodMap”連接,進(jìn)入“圖層組”頁(yè)面。

在“圖層組”頁(yè)面中滾動(dòng)鼠標(biāo),定位到“Tile cache configuration”部分。通過(guò)該部分的參數(shù)配置圖層的緩存。由于是從“Tile Layers”連接進(jìn)來(lái)的,因此自動(dòng)選擇為圖層組創(chuàng)建緩沖切片。如果不進(jìn)行進(jìn)一步的操作,那么GeoServer將按需創(chuàng)建緩存切片。但是我們需要的不是按需創(chuàng)建,而是預(yù)先創(chuàng)建。

在GeoServer的Web管理頁(yè)面窗口的左邊,再次單擊“Tile Caching”中的“Tile Layers”連接,然后在右邊窗口Tile Layers頁(yè)面中的webgis:NeighborhoodMap行單擊“Seed/Truncate”連接,將打開一個(gè)新的窗口。

在新窗口中,按圖5.4設(shè)置“Create a new task”表單。

然后選擇底部的“Submit”,頁(yè)面將進(jìn)入執(zhí)行任務(wù)監(jiān)控頁(yè)面,而GeoServer則在后臺(tái)針對(duì)不同比例尺繪制地圖。

等待大約30秒鐘以后,單擊“Refresh list”連接,可以看到圖5.5所示的進(jìn)度顯示,告訴已進(jìn)行多長(zhǎng)時(shí)間,估計(jì)還需要多長(zhǎng)時(shí)間。當(dāng)單擊“Refresh list”連接后,該進(jìn)度統(tǒng)計(jì)列表消失時(shí),表示地圖切片已經(jīng)創(chuàng)建完成。

圖5.4 填寫創(chuàng)建地圖切片的參數(shù)

圖5.5 地圖切片任務(wù)執(zhí)行統(tǒng)計(jì)列表

(3)預(yù)覽切片地圖。

在GeoServer的Web管理頁(yè)面窗口中單擊“Tile Layers”連接,進(jìn)入Tile Layers頁(yè)面。然后從webgis:NeighborhoodMap行的預(yù)覽下拉列表框中選擇“EPSG:900913 / png”,如圖5.6所示。

圖5.6 使用“EPSG:900913 / png”方式預(yù)覽地圖

在新的地圖預(yù)覽窗口中,對(duì)地圖進(jìn)行放大、縮小與漫游等操作,可以發(fā)現(xiàn)無(wú)須等待而地圖立即顯示,而且當(dāng)漫游時(shí)標(biāo)注并沒(méi)有改變位置,表明已經(jīng)利用切片緩存。

請(qǐng)注意,確保使用的是“Tile Layers”預(yù)覽,而不是“Layer Preview”預(yù)覽。切片圖層預(yù)覽使用的URL稍微有些不同,以表明需要使用切片緩存。

雖然使用切片緩存改善了性能,但是也正如大家注意到的,地圖中存在重復(fù)標(biāo)注的現(xiàn)象。因?yàn)槊總€(gè)地圖切片并不清楚相鄰切片中的標(biāo)注,因此在生成地圖切片時(shí)很難避免重復(fù)標(biāo)注。要緩解該問(wèn)題,切片生成軟件通常在比切片更大的范圍內(nèi)繪制地圖,然后再將其切開為單獨(dú)的切片。GeoWebCache將該較大區(qū)域稱為“metatile(元切片)”,而ESRI稱為“supertile(超級(jí)切片)”。可以在GeoWebCache調(diào)整元切片的大小進(jìn)行試驗(yàn),可以看到,

網(wǎng)友評(píng)論(不代表本站觀點(diǎn))

免責(zé)聲明

更多出版社