| | | 開源GIS與空間數據庫實戰教程 | 該商品所屬分類:研究生 -> 工學 | 【市場價】 | 172-251元 | 【優惠價】 | 108-157元 | 【作者】 | 陳永剛 | 【所屬類別】 | 圖書 教材 研究生/本科/專科教材 工學圖書 計算機/網絡 地理信息管理繫統(GIS) | 【出版社】 | 清華大學出版社 | 【ISBN】 | 9787302428725 | 【折扣說明】 | 一次購物滿999元台幣免運費+贈品 一次購物滿2000元台幣95折+免運費+贈品 一次購物滿3000元台幣92折+免運費+贈品 一次購物滿4000元台幣88折+免運費+贈品
| 【本期贈品】 | ①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
| |
版本 | 正版全新電子版PDF檔 | 您已选择: | 正版全新 | 溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。*. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。 *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。 *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。 | | | | 內容介紹 | |
![](http://img3m8.ddimg.cn/35/7/25314038-1_u_4.jpg)
開本:16開 紙張:膠版紙 包裝:平裝-膠訂 是否套裝:否 國際標準書號ISBN:9787302428725 作者:陳永剛 出版社:清華大學出版社 出版時間:2016年03月 
" 編輯推薦 本書彌補了講解開源GIS的書籍少之又少的缺憾,為促進開源GIS在科研與教學中的應用,貢獻一份綿薄之力。 本書是一本介紹空間數據組織與管理等基礎知識,以及如何運用開源GIS軟件和開源空間數據庫PostGIS的實戰操作教程。理論和實例相互結合,操作性強,讀者在理論學習和實驗操作中領悟開源軟件的精髓。 內容簡介 本書以開源GIS軟件和開源空間數據庫PostgreSQL為主要內容,特別是以空間數據庫PostgreSQL為中心,以OGC標準為主線,詳細介PostgreSQL、QGIS、GeoServer等開源軟件及其應用案例。全書分為8章,第1章對空間數據庫的發展狀況進行介紹和分析;第2章簡單介紹開源GIS軟件和空間數據庫PostgreSQL的初步使用;第3章介紹空間數據庫的SQL Geometry數據類型;第4章介紹矢量數據空間SQL查詢與分析操作;第5章介紹柵格數據空間SQL查詢與分析操作;第6章介紹利用QGIS、ArcMap對空間數據庫進行管理以及利用GeoServer發布空間信息;第7章分別介紹利用Java和C#對空間數據庫進行管理和操作;第8章以案例的方式介紹利用開源軟件和開源空間數據庫在“智慧林業”中的應用。 本書主要針對於教學科研和工程應用,特別對開源GIS和空間數據庫的理論推廣和工程項目應用具有重要的應用價值;本書主要適合於地理信息繫統、林業、交通應用、測繪等與地學相關領域的從業人員。 目錄 第1章初識空間數據庫1 1.1回顧數據庫的相關基礎知識1 1.1.1數據庫的基本概念1 1.1.2結構化查詢語言1 1.1.3數據庫訪問技術2 1.1.4數據庫的標準3 1.2認識空間數據庫4 1.2.1空間數據庫4 1.2.2空間數據庫標準簡介5 1.2.3空間數據模型6 1.3空間數據庫產品8 1.3.1常見的商業空間數據庫8 1.3.2開源空間數據庫8 1.3.3PostGIS簡介11第1章初識空間數據庫1 1.1回顧數據庫的相關基礎知識1 1.1.1數據庫的基本概念1 1.1.2結構化查詢語言1 1.1.3數據庫訪問技術2 1.1.4數據庫的標準3 1.2認識空間數據庫4 1.2.1空間數據庫4 1.2.2空間數據庫標準簡介5 1.2.3空間數據模型6 1.3空間數據庫產品8 1.3.1常見的商業空間數據庫8 1.3.2開源空間數據庫8 1.3.3PostGIS簡介11 第2章開源GIS軟件和空間數據庫使用初步14 2.1PostgreSQL的安裝與PostGIS空間引擎配置14 2.1.1PostgreSQL的安裝14 2.1.2PostGIS空間引擎配置18 2.2QGIS與uDig的安裝與配置24 2.2.1QGIS的安裝與配置24 2.2.2uDig的安裝與配置26 2.3GeoServer的安裝與配置28 2.4pgAdmin Ⅲ的基本操作35 2.4.1主窗體35 2.4.2導航菜單功能36 2.4.3工具欄的介紹37 2.4.4數據庫與表的創建37 2.4.5數據庫的備份與恢復42 2.5利用QGIS將shp數據導入PostgreSQL空間數據庫43 2.5.1利用QGIS連接PostgreSQL空間數據庫43 2.5.2導入導出shp數據45 開源GIS與空間數據庫實戰教程目錄第3章空間數據庫的SQL Geometry數據類型48 3.1空間數據類型繼承關繫UML圖48 3.2空間數據的WKT和WKB表現形式48 3.3空間數據的坐標繫統SRID50 3.4在PostgreSQL中直接利用SQL建立空間數據庫51 3.4.1利用SQL語句在PostgreSQL空間數據庫中建立空間數據表51 3.4.2利用SQL語句在PostgreSQL空間數據表中插入空間數據51 第4章矢量數據空間SQL查詢與分析操作53 4.1PostGIS基本類型53 4.2管理函數UpdateGeometrySRID53 4.3幾何構造函數55 4.3.1ST_GeomFromText55 4.3.2ST_MakePolygon56 4.4幾何讀寫函數58 4.4.1ST_IsClosed、ST_IsRing和ST_IsSimple58 4.4.2ST_EndPoint與ST_StartPoint60 4.5幾何編輯函數62 4.5.1ST_AddPoint62 4.5.2ST_RemovePoint63 4.6幾何輸出函數ST_AsText65 4.7運算符函數&&66 4.8空間關繫與量測67 4.8.1ST_Centroid67 4.8.2ST_ClosestPoint68 4.8.3ST_Intersects70 4.8.4ST_Relate71 4.9幾何處理函數73 4.9.1ST_Buffer73 4.9.2ST_Intersection75 4.9.3ST_Union76 4.10線性參考函數ST_LineInterpolatePoint78 4.11雜類函數ST_Point_Inside_Circle79 4.12特殊函數PostGIS_AddBBox81 第5章柵格數據空間SQL查詢與分析操作82 5.1柵格數據管理82 5.1.1新建柵格數據82 5.1.2導出柵格數據文件83 5.1.3導入空間數據庫83 5.2柵格數據屬性查詢86 5.2.1ST_MetaData86 5.2.2ST_BandMetaData86 5.2.3ST_Histogram 87 5.2.4ST_Value88 5.2.5ST_Resize89 5.3柵格數據間的空間關繫91 5.3.1ST_Intersects91 5.3.2ST_Contains91 5.4柵格數據處理與分析92 5.4.1ST_Clip92 5.4.2ST_Union93 5.4.3ST_HillShade、 ST_Slope和ST_Aspect95 第6章利用QGIS、ArcMap和GeoServer對空間數據庫進行管理、操作和發布97 6.1利用QGIS對PostgreSQL空間數據庫進行空間數據管理97 6.1.1在QGIS中加載PostgreSQL空間數據庫數據97 6.1.2編輯導入的空間數據,並保存在數據庫中99 6.2利用ArcMap對PostgreSQL空間數據庫進行空間數據管理101 6.2.1在ArcGIS和PostgreSQL中配置相關文件101 6.2.2在ArcMap設置到PostgreSQL的連接103 6.3利用GeoServer發布PostgreSQL中的空間數據105 6.3.1發布空間數據105 6.3.2預覽發布的空間數據110 6.4利用Udig修飾PostgreSQL中的空間數據111 6.4.1利用Udig美化地圖111 6.4.2在GeoServer中為發布地圖添加地圖樣式115 第7章利用Java和C#對空間數據庫進行管理和操作120 7.1Geotools、JTS地理信息繫統Java開源庫簡介120 7.1.1Geotools簡介120 7.1.2JTS簡介120 7.2利用Geotools和JTS對PostgreSQL空間數據庫進行空間數據分析120 7.2.1新建Java項目121 7.2.2代碼實現122 7.3NetTopologySuite地理信息繫統C#開源庫簡介127 7.4利用NetTopologySuite對PostgreSQL空間數據庫進行 空間數據分析127 7.4.1新建控制臺應用程序127 7.4.2代碼實現127 7.4.3在QGIS中查看生成的Shape文件128 7.5SharpMap地理信息繫統C#開源庫簡介129 7.6利用SharpMap對PostgreSQL空間數據庫進行 空間數據分析130 7.6.1新建WinFrom程序,並進行簡單布局130 7.6.2代碼實現132 7.6.3實現效果134 第8章面向“智慧林業”的生態公益林開源應用136 8.1數據概況與開源解決方案136 8.1.1生態公益林數據136 8.1.2開源解決方案的總體思路136 8.2QGIS對公益林數據的管理與操作137 8.3PostGIS對公益林數據的管理與操作139 8.4QGIS專題地圖的制作139 8.5快速發布網絡地圖142 8.5.1安裝qgis2web插件142 8.5.2qgis2web的參數設置144 8.5.3Apache Server發布地圖並在不同移動終端查看145 附錄A兩大標準幾何對像對比表147 附錄BGeometry與ST_Geometry定義的空間操作對比表148 附錄C函數彙總表151 1.1回顧數據庫的相關基礎知識1 1.1.1數據庫的基本概念1 1.1.2結構化查詢語言1 1.1.3數據庫訪問技術2 1.1.4數據庫的標準3 1.2認識空間數據庫3 1.2.1空間數據庫3 1.2.2空間數據庫標準簡介5 1.2.3空間數據模型6 1.3空間數據庫產品7 1.3.1常見的商業空間數據庫7 1.3.2開源空間數據庫8 1.3.3PostGIS簡介11 第2章開源GIS軟件和空間數據庫使用初步14 2.1PostgreSQL的安裝與PostGIS空間引擎配置14 2.1.1PostgreSQL的安裝14 2.1.2PostGIS空間引擎配置19 2.2QGIS與uDig的安裝與配置26 2.2.1QGIS的安裝與配置26 2.2.2uDig的安裝與配置29 2.3GeoServer的安裝與配置32 2.4pgAdminⅢ的基本操作40 2.4.1主窗體40 2.4.2導航菜單功能41 2.4.3工具欄的介紹42 2.4.4數據庫與表的創建43 2.4.5數據庫的備份與恢復47 2.5利用QGIS將Shp數據導入PostgreSQL空間數據庫49 2.5.1利用QGIS連接PostgreSQL空間數據庫49 2.5.2導入導出shp數據52 第1章初識空間數據庫〖1〗1.1回顧數據庫的相關基礎知識〖*4/5〗1.1.1數據庫的基本概念 1. 什麼是數據庫 數據庫是由一批數據構成有序的集合,這些數據被存放在結構化的數據表中。數據表之間相互關聯,反映了客觀事物之間的本質聯繫。數據庫繫統提供數據安全控制和完整性控制。 數據庫發展階段大致劃分為如下幾個階段:人工管理階段、文件繫統階段、數據庫繫統階段、高級數據庫階段。其種類大概有3種:層次式數據庫、網絡式數據庫和關繫式數據庫。 對於數據庫的明確定義並不固定,隨著數據庫歷史的發展,定義的內容也有很大的不同,其中一種比較普遍的觀點認為:數據庫(Database,DB)是一個長期存儲在計算機內的、有組織的、有共享的、統一管理的數據集合。 2. 表 在關繫數據庫中,數據庫表是一繫列二維數組的集合,用來存儲數據和操作數據的邏輯結構。它由縱向的列和橫向的行組成,行被稱為記錄,是組織數據的單位;列被稱為字段,每一列表示記錄的一個屬性,都有相應的描述信息,如數據類型、數據寬度等。 3. 數據類型 數據類型決定了數據在計算機中的存儲格式,代表不同的信息類型。常用的數據類型有:整數數據類型、浮點數數據類型、精確小數類型、二進制數據類型、日期時間數據類型、字符串數據類型。表中的每一個字段都有某種指定的數據類型。 1.1.2結構化查詢語言 結構化查詢語言(Structured Query Language)簡稱SQL,SQL語言的主要功能就是同各種數據庫建立聯繫,進行溝通。SQL語句可以用來執行各種各樣的操作,例如更新數據庫中的數據,從數據庫中提取數據等。目前,絕大多數流行的關繫型數據庫管理繫統,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL語言標準。雖然很多數據庫都對SQL語句進行了再開發和擴展,但是包括Select, Insert, Update, Delete, Create,以及Drop在內的標準的SQL命令仍然可以被用來完成幾乎所有的數據庫操作。 開源GIS與空間數據庫實戰教程第1章初識空間數據庫SQL語言包含4個部分。 數據定義語言(DDL):DROP、CREATE、ALTER等語句。 數據操作語言(DML):INSERT、UPDATE、DELETE語句。 數據查詢語言(DQL):SELECT語句。 數據控制語言(DCL):GRANT、REVOKE、COMMIT、ROLLBACK語句。 下面是一條SQL語句,該語句聲明創建了一個students表:CREATE TABLE students ( student_id INT, name VARCHAR(30), sex CHAR(1), PRIMARY KEY (student_id) );該語句創建一張表,該表包含4個字段,分別為student_id、name、sex、birth。其中student_id被定義為表的主鍵。 現在隻是定義了一張表,表中沒有任何數據,接下來這條SQL聲明語句,將在student表中插入一條數據記錄:INSERT INTO students (student_id,name,sex,birth) VALUES (41048101,'Leo Keith','1','1990-07-25');執行完該SQL語句之後,students表中就會增加一行新記錄,該記錄中字段student_id的值為41048101,name字段的值為Leo Keith,sex字段值為1,birth字段值為1990\\|07\\|25。 再使用SELECT查詢語句獲取剛纔插入的數據,語句如下:SELECT name FROM students WHERE student_id =41048101;上面簡單的列舉了常用的數據庫操作語句,目的是幫助讀者回顧數據庫的基礎知識,接下來會更進一步學習數據庫的其他技術。 1.1.3數據庫訪問技術 不同的程序設計語言會有各自不同的數據庫訪問技術,程序語言通過這些技術,執行SQL語句,進行數據庫管理,主要的數據庫訪問技術如下。 1. ODBC Open Database Connectivity(開放數據庫互連)技術為訪問不同的SQL數據庫提供了一個共同的接口。ODBC使用SQL作為訪問數據的標準。這個接口提供了限度的互操作性:一個應用程序可以通過一組共同的代碼訪問不通過的SQL數據庫管理繫統(DBMS)。 一個基於ODBC的應用程序對數據庫的操作不依賴於任何DBMS,不直接和DBMS打交道,所有的數據庫操作有對應的DBMS的ODBC驅動程序完成。也就是說,不論是Access、PostgreSQL還是Oracle數據庫,均可使用ODBC API進行訪問。由此可見,ODBC的優點是能以統一的方式處理所有的數據庫。 2. JDBC Java Data Base Connectivity(Java數據庫連接)是Java應用程序連接數據庫的標準方法,是一種用於執行SQL語句的Java API,可以多種關繫數據庫提供統一訪問,它由一組使用Java語言編寫的類和接口組成。 3. ADO.NET ADO.NET是微軟在.NET框架下開發設計的一組用於和數據源進行交互的面向對像類庫。它提供了關繫數據、XML和應用程序數據的訪問,允許和不同類型的數據源以及數據庫進行交互。 1.1.4數據庫的標準 在1.2和1.3節中介紹了SQL的基本使用,我們可以體會到SQL的簡潔與強大,但是SQL的這些優秀特性並不是一蹴而就的,它的發展和數據庫發展有著密切的聯繫,SQL之所以強大和為制定的SQL標準有直接的關繫。 隨著數據庫技術的發展和信息化水平的提高,出現了很多數據庫廠商和產品,為了在各個數據庫廠商之間取得更大的統一性,美國國家標準學會(American NationalStandards Institute,ANSI)於1986年發布了個SQL標準,並於1989年發布了第二個版本,該版本已經被廣泛地采用。ANSI在1992年更新了SQL標準的版本,即SQL92和SQL2,並於1999年再次更新為SQL99和SQL3標準。在每一次更新中,ANSI都在SQL中添加了新特性,並在語言中集成了新的命令和功能。 對於各種數據庫產品,ANSI標準規範化了很多SQL行為和語法結構。隨著開源數據庫產品(例如MySQL和PostgreSQL)日漸流行並由虛擬團隊而不是大型公司開發,這些標準變得更加重要。這些開源數據庫作為數據庫產品占有著重要的地位,我們將在後面的章節對它們做更進一步的介紹。 現在,SQL標準由ANSI和國際標準化組織(International Standards Organization,ISO)作為ISO/IEC 9075標準維護。發布的SQL標準是SQL:2008,下一版本的發布工作已經在進行之中,它將包含RDBMS在收集或分發數據方式上的新發展。 1.2認識空間數據庫〖*4/5〗1.2.1空間數據庫〖*2〗1. 數據庫與空間數據庫歷經50多年的發展,數據庫技術依然成為對海量數據管理的一種重要手段。那麼,空間數據庫作為數據庫的一個分支,利用空間數據庫來存儲和管理非結構化的空間數據。隨著對地觀測技術的迅速發展和社會需求的不斷增大,基於空間數據的應用領域(如電子地圖、導航服務等)也在不斷地擴大,空間數據的管理將成為今後信息管理的重要組成部分。此外,空間數據庫在整個地理信息繫統中占有極其重要的地位,主要體現在:用戶在決策中通過訪問空間數據庫獲得空間數據,在決策過程完成後在將決策結果存儲到空間數據庫中。 空間數據庫與一般數據庫相比,具有數據量大、數據應用廣泛和屬性數據空間數據並存的特點,尤以第三點為突出,空間數據庫不僅有地理要素的屬性數據(與一般數據庫中的數據性質相似),還有大量的空間數據,它們描述地理要素的空間分布位置,並且這兩種數據有著不可分割的關繫。 2. 空間數據庫的發展歷程 空間數據管理技術經歷了多年的發展和演變,大體經歷了文件繫統、文件關繫混合繫統和對像關繫型空間數據庫管理繫統等三個階段。伴隨著每一次空間數據庫管理方式的變革,GIS軟件的體繫結構也在發生著革命性的變化。如圖1\\|1是空間數據庫體繫架構的演變圖。 圖1\\|1空間數據庫體繫架構演變圖 對於傳統的代空間數據管理繫統,空間數據主要采用文件管理繫統,即將空間數據存儲在自行定義的不同格式文件中。在這種管理方式下,文件管理繫統仍然是操作繫統的一部分,所有的空間數據要用特殊的地理信息繫統軟件進行解釋和處理。 隨著關繫型數據管理技術的發展與成熟,第二代空間數據管理繫統將數據存儲在關繫數據庫中,通常將數據分為屬性數據或者說非空間部分和空間數據兩個部分。但是這種方式一直缺乏靈活地整合屬性數據和空間數據。 真正的空間數據庫起始於空間要素地位的變化,人們開始嘗試把空間要素看作是數據庫重要的對像,空間數據庫中的空間數據與對像關繫數據庫進行全面整合。這也完成了以GIS為核心的技術轉變為以數據庫為核心的導向性轉變。就此第三代空間數據庫誕生。 1.2.2空間數據庫標準簡介〖*2〗1. 空間數據庫標準的存在意義和數據庫的標準一樣,隨著GIS和數據廠商逐步推出了自己的空間數據庫產品,為了避免出現大量的空間數據庫分散在不同的商業組織、政府部門和企業中,從而導致這些空間數據庫處於封閉的狀態,為了增強空間數據在管理管理上的統一性以適應空間數據管理的需要,許多標準化組織開發並完善空間數據存儲和SQL語言的規範。比較典型的兩個代表分別是開放地理空間信息協會(Open Geospatial Consortium,OGC)推出的地理信息簡單要素的SQL實現規範(Simple Feature Access SQL, SFA SQL)和國際標準化組織/國際電工委員會聯合技術委員會(ISO/IEC JTC1 SC32)發布的SQL多媒體及應用包的第三部分(SQL Multimedia Part3:Spatial,SQL/MM)。一方面,空間數據庫標準可以提高空間信息的共享。另一方面,由於標準包含了一些空間數據庫相關的明確概念和框架,可作為空間數據庫實現的參考。 圖1\\|2開放式地理信息繫統 聯合會標志2. OGC地理信息實現標準——簡單要素訪問 1994年開放式地理信息繫統聯合會成立,全稱Open Geospatial Consortium,他自稱是一個非盈利的、國際化的、自願協商的標準化組織,它的主要目的就是制定空間信息和基於位置服務相關的標準。其標志如圖所示,這些標準都是OGC的"產品",而這些標準的用處就在於使不同產品、不同廠商之間可以通過統一的接口進行數據互操作。 在地理信息領域,OGC已經是一個類似於"官方"的標準化機構,它不但吸納了ESRI、Google、Oracle等業界主要企業作為其成員,同時還和W3C、ISO、IEEE等協會組織結成合作伙伴關繫。因此,OGC的標準雖然並沒有強制性,但是因為其背景和歷史的原因,它所制定的標準天然地具有一定的權威性。OGC推出的SFA定義了函數的訪問接口,依據地理幾何對像模型,提供在不同平臺下(OLE/COM, SQL, CORBA)對簡單要素(點、線、面)的發布、存儲、讀取和操作的接口規範說明。目前,已被ISO TC211吸納成為ISO 19125標準。SFA的通用體繫架構規範,基於分布式環境描述了通用的簡單要素地理幾何對像模型,以及地理幾何對像的不同表達方式和空間參考繫統的表達方式。 這個規範不是針對某個特定平臺定義的,具有平臺獨立性。SFA SQL定義了基於SQL平臺實現幾何對像模型及訪問接口函數。目前,它有3個版本,分別是1999年推出的SFSQL1.1版(Simple Feature Specification for SQL Version 1.1),2005年修訂為SFA SQL1.1.0版和的SFA SQL1.2.0版。 3. ISO/IEO SQL/MM空間數據標準 SQL99具有支持觸發器、集合和抽像數據類型等新特征,其中抽像數據類型提供對像擴展的能力,如繼承、多態、封裝等。隨著SQL99對抽像數據類型定義的支持,以及用戶對新的數據類型(如全文、空間、圖像等)的巨大需求,ISO/IEC開始考慮把這些數據類型作為標準數據類型,並進行相關的定義,因此,開發了SQL多媒體和應用程序包(SQL/MM)標準。 SQL/MM根據應用領域的不同,分為多個部分:部分架構(Frame\\|work)提出了在各章中出現的公共概念,並簡要地說明了其他各個部分中的定義方法;第二部分全文(Full Text)定義了眾多結構化用戶自定義類型,以支持文本數據的存儲(一般在對像關繫數據庫);第三部分空間(Spatial)定義了空間矢量數據存儲與檢索的有關標準;第四部分通用工具(General Purpose Facilities)指定一些在不同領域類可以通用抽像數據類型和操作,該部分已經被撤銷;第五部分靜態圖像(Still Image)定義了靜態圖像數據存儲與檢索的相關標準;第六部分數據挖掘(Data Mining)定義了有關數據挖掘的標準;第七部分歷史(History)擴展SQL支持歷史數據,這樣有利於更新。第三部分Spatial定義了空間基本數據類型和空間操作,主要是為了解決如何使用存儲和處理這些數據類型的空間數據。(注:本書主要介紹SQL/MM的第三部分,如果沒有特別指出,文中的SQL/MM均指代SQL/MM Part3:Spatial)。 1.2.3空間數據模型 空間數據模型是對現實世界地理現像、實體以及它們之間相互關繫的認識和理解,用一定的方案建立起數據組織方式實現計算機對現實世界的抽像與表達。空間數據模型的三要素是:空間數據結構、空間數據操作和空間完整性約束。其中,空間數據類型與空間操作是空間數據模型主要組成部分,空間數據模型的設計、空間數據庫繫統的性能與查詢語言的效率都和它們密切相關。為了規範空間數據模型及其空間操作,OGC和ISO/IEC國際標準化組織制定了空間數據類型標準以及每一種空間數據類型擁有的空間操作子標準。 目前,SFA SQL和SQL/MM這兩個標準公共部分的接口已經相互兼容,但是在這兩個標準無論是從內容覆蓋面,還是從某些概念的界定上都有一定的差別。這些差別都會在空間數據模型這一節中得到體現,如圖1\\|3和1\\|4分別是SFA SQL對像模型圖和SQL/MM對像類型圖,這兩幅重要的圖主要說明了在OGC和ISO/IEC下幾何對像模型之間的層次關繫。在以後的學習中體會到兩套標準的差別,同時我們將會提供兩份表格來具體說明這兩套標準中空間數據模型表達上的具體差別,主要從兩套標準幾何對像和空間操作兩個方面進行比較。(詳見附錄A和附錄B) 圖1-3 SFA SQL對像模型圖 圖1-4 SQL/MM對像類型圖 3 空間數據庫產品 3.1 常見的商業空間數據庫 1.Oracle Spatial Oracle是早實現空間數據管理的數據庫管理繫統。Oracle早在7.2版本就引入了內嵌式空間擴展技術--MultiDimension(MD);其後,在Oracle 8中該產品名稱先後被修改為Spatial Data Cartridge和Spatial Data Option(SDO)。由於早期的版本不支持對像的定義,空間幾何對像的坐標串主要依靠關聯表來存儲,故空間數據的管理效率較低。從Oracle 8i起直到目前的Oracle版本,Oracle使用新的SDO_GEOMETRY數據類型存儲空間數據。截止目前,Oracle Spatial針對存儲在Oracle數據庫的空間要素,提供了一種SQL模式和便於存儲、檢索、更新、查詢的函數集,主要包括:一種描述幾何數據存儲、語法、語義的模式MDSYS,一種空間索引機制,一組實現感興趣區域查詢和空間聯合查詢的算子和函數,一組處理結點、邊和表的拓撲數據模型,一組網絡數據模型以及一個存儲、檢索、查詢、分析柵格數據的工具包(GeoRaster)。 2.SQL Server Spatial 2008 Microsoft SQL Server於2008年提供了對空間數據無縫的支持和整合,支持空間數據標準。其在數據庫中整合了地理坐標繫和平面坐標繫數據模型及其針對該類型的相關操作,同時針對新的空間數據類型提供存儲新的操作分析能力,並提供了針對多級網絡索引結構來加速查詢檢索功能。同時為了直觀的展示空間數據,可以將查詢結果使用管理控制臺和相關的前端工具直觀的加以顯示。 3.2開源空間數據庫 3.2.1開源軟件 (1)開源軟件的概念 開源軟件的詳細定義比較復雜,簡單來說,就是一種源代碼可以任意獲取的計算機軟件,這種軟件的版權持有人在軟件協議的規定之下保留一部分權利並允許用戶學習、修改、增進提高這款軟件的質量。並非公開了源代碼就算是開源,公開源代碼和開放源代碼是兩回事。 開放源碼軟件主要被散布在全世界的編程者隊伍所開發,但是同時一些大學,政府機構承包商,協會和商業公司也開發它。源代碼開放是信息技術發展引發網絡革命所帶來的面向未來以開放創新、共同創新為特點的、以人為本的創新2.0模式在軟件行業的典型體現和生動注解。開放源碼軟件在歷史上曾經與UNIX,Internet聯繫的非常緊密。在這些繫統中許多不同的硬件需要支持,而且源碼分發是實現交叉平臺可移植性的實際可行的辦法。在DOS,Windows,Macintosh平臺上僅僅有很少的用戶有可用的編譯器,開放源碼軟件更加不普遍。對開放源碼開發模式的更詳細的討論可以補充閱讀看Eric Raymond寫的"The Cathedral and the Bazaar",該書的中文譯本叫做《大教堂與市集》。 (2)開源GIS軟件 GIS社會化和大眾化需要實現地理數據共享和互操作,盡可能降低地理數據采集處理成本和軟件開發應用成本。目前的地理信息繫統大多是基於具體的、相互獨立和封閉的平臺開發的,它們采用不同的開發方式和數據格式,對地理數據的組織也有很大的差異,壟斷和高額的費用在一定程度上限制了GIS的普及和推廣。 上世紀90年代,開源思想廣泛滲透到GIS領域,國內外許多科研院所相繼開發出開源GIS,2006年初,國際地理空間開源基金會(OpenSouce Geospatial Foundation , OSGeo)成立,基金會的項目已從初的8個,發展為滿足B/S架構的前端地理信息渲染平臺、各種地理空間中間件、涵蓋企業級地理空間計算平臺等數十個門類的開源地理空間項目。開源GIS優勢不僅僅是免費,而在於其Free和Open的真正含義,前者代表自由與免費,後者代表開放與擴展,與商業GIS產品不同,由於開源GIS軟件的Free和Open,用戶可以根據需要增加功能,當所有人都這樣做的時候,開源產品的性能與功能也就超過了很多商業產品,因而也造就了開源的優勢和活力。 此外,和一般的商業GIS平臺相比,開源GIS產品大多都具有跨平臺的能力,可以運行於Linux, Windows等繫統,開源GIS軟件得到學術界和GI5平臺廠商越來越多的重視,成為GIS研究和應用創新的一個重要領域。 圖1-5 開源GIS軟件熱力圖(Stefan Steiniger,2013) 如圖1-5,是開源GIS軟件截止2012年的彙總熱力圖,從圖可以看出開源GIS貼心地滲透到了行業內的方方面面,桌面GIS程序和地圖服務器是開源GIS軟件為重要的兩大類產品,用戶數量和影響力也。空間數據庫管理繫統一類的開源產品也在開源GIS領域占有重要一席。下面我們簡單介紹一下開源世界的重要保障--版權許可制度,開源軟件版權的管理與商業軟件有巨大的不同。 3.2.2開源GIS的版權許可制度 雖然開源軟件有好的自由度,但是開源軟件並非完全沒有限制。基本的限制,就是開源軟件強迫任何使用和修改該軟件的人承認發起人的著作權和所有參與人的貢獻。任何人擁有可以自由復制、修改、使用這些源代碼的權利,不得設置針對任何人或團體領域的限制。不得限制開源軟件的商業使用等。而許可證就是這樣一個保證這些限制的法律文件。基於開源軟件定義中的"散布授權條款(Distribution of License):若軟件再散布,必需以同一條款散布之。"這一條,開源軟件必須附加一個法律文件,並且在任何修改後的開源或發行版本中附帶同一條款。 對於開源GIS軟件的版權許可制度,仍舊采用開源軟件許可制度。經Open Source Initiative組織通過批準的開源協議目前有58種,其中著名的許可制度有BSD(the Berkley Software Distribution license family)、GPL(the GNU General Public License ) 、LGPL ( the GNU Lesser General Public License )和MIT ( Massachusetts Institute of Technology)四種。 1) BSD是一個給予使用者很大自由的代碼共享協議,不過需要使用者尊重代碼作者的著作權。BSD允許使用者修改和重新發布代碼,也允許使用或在BSD代碼上進行商業軟件開發、發布和銷售。 2 ) GPL協議和BSD許可不一樣。GPL不允許修改後和衍生的代碼作為閉源商業軟件發布和銷售。GPL協議的主要內容是隻要在一個軟件中使用("使用"指類庫引用,修改後的代碼或者衍生代碼)GPL協議的產品,則該軟件產品必須也采用GPL協議,即必須也是開源和免費。這就是所謂的"傳染性",由於GPL嚴格要求使用了GPL類庫的軟件產品必須使用GPL協議,對於使用GPL協議的開源代碼,商業軟件或者對代碼有保密要求的部門就不適合集成/采用作為類庫和二次開發的基礎。 3 ) LGPL是GPL的一個主要為類庫使用設計的開源協議。和GPL要求任何使用/修改/衍生之GPL類庫的軟件必須采用GPL協議不同,LGPL允許商業軟件通過類庫引用(link)方式使用LGPL類庫而不需要開源商業軟件代碼,這使得采用LGPL協議的開源代碼可以被商業軟件作為類庫引用並發布和銷售。 4 ) MIT是和BSD一樣寬泛的許可協議,作者隻保留版權而無任何其他限制。即必須基於開源的發行版裡包含原許可協議的聲明,無論你是以二進制發布的還是以源代碼發布的。 GPL與Linux類似,由於能夠保護開源機構的利益,比較適合開源GIS軟件的市場推廣和研發支持,因此被許多開源GIS平臺采用,如GRASS , QGIS , uDig。但也有一些非政府機構支持的基於MIT .LGPL的開源項目,如SAGA . MapWindow。 3.2.3 常見的開源空間數據庫 1. MySQL Spatial MySQL Spatial是MySQL數據庫為支持空間數據的存儲和查詢而加入的一種擴展功能。MySQL遵從OGC的規範,實施了一繫列的空間擴展。MySQL Spatial的功能還不夠完全。目前,它隻支持了 OpenGIS(-個標準)的一個子集,包涵有限的幾種空間數據類型,MySQL具有與OpenGIS類對應的數據類型。目前已定義的數據類型有:GEOMETRY(幾何類型),POINT(點),LINESTRING(線),POLYGON(面)。GEOMETRY能夠保存任何類型的幾何值,而其他的單值類型POINT、LINESTRING以及POLYGON隻能保存特定幾何類型的值。 2. SpatiaLite SpatiaLite 空間數據庫是一個簡單、實用的輕量級數據庫,隻有幾百KB,是在SQLite 空間數據庫基礎上的擴展。它遵守OGC標準,支持SQL 語言對幾何類型字段的操作。同時它也集成了其他開源類庫:①GEOS庫,用於進行空間分析;②PROJ.4庫,用於實現不同坐標參考繫統間坐標的轉換;③LIBICONV庫,用於支持多種語言;④SQLite庫,用於實現SQL 數據引擎。Spatialite SQLite 數據庫操作簡單,易於管理GIS 環境下中小型的GIS 數據,且數據庫文件可移植性好,支持跨平臺操作。此外,Spatialite還支持R-tree的數據檢索,以及存儲器存儲,這極大地加快了用戶訪問數據庫的速度。 3.3 PostGIS簡介 3.3.1 什麼是PostgreSQL PostgreSQL是一個包含關繫模型和支持SQL標準查詢語言的數據庫管理繫統,支持豐富的數據類型(如JSON和JSONB類型,數組類型)和自定義類型。而且它提供了豐富的接口,可以很容易地擴展它的功能,3.3.2章節中將會重點介紹PostgreSQL的一個重要擴展PostGIS。 圖1-6 PostgreSQL開源數據庫Logo PostgreSQL數據庫的優勢如下: PostgreSQL數據庫是目前功能強大的開源數據庫,它是接近工業標準SQL92的查詢語言,並且正在實現的新功能已兼容的SQL標準:SQL2003. PostgreSQL數據庫是開源的、免費的,而且是BSD協議,在使用和二次開發上基本沒有限制。 POstgreSQL數據庫支持大量的主流開發語言,包括C、C 、Perl、Python、Java以及PHP等。 3.3.2 什麼是PostGIS 圖1-7 PostgreSQL開源數據庫Logo 如圖1-7,前面我們已經簡單介紹了PostgreSQL,PostgreSQL數據庫加上空間特性就是變成了PostGIS擴展。PostGIS的標志就是一直可愛的大像拖著一個地球。 在地理數據處理方面,讓 PostgreSQL 更加強大的一面是其空間數據擴展 PostGIS 的支持。由於有 PostGIS的支持,可以將 PostgreSQL 優良的特性和強大的功能充分的發揮在海量空間數據的存儲與管理中,為空間數據庫的實現提供又一優良的解決方案,並且其開源和免費的特性更是能夠滿足許多低成本應用的需求。 PostGIS 是對像關繫型數據庫繫統 PostgreSQL 的一個空間擴展組件,為 PostgreSQL提供如下空間信息服務功能:空間數據對像、空間索引、空間操作函數和空間操作符。PostGIS 同樣也一款開源軟件,源自著名的空間信息研究協會 Refractions,是目前強大的開源空間數據引擎,發展非常迅速,在國外許多成功的應用案例。 PostGIS 具有如下主要特征: 支持 OGC 的空間數據標準,如簡單要素規範的空間數據模型,WKT(Well-Known Text)、WKB(Well-Known Binary)以及空間數據表的 SQL 查詢規範。 通過空間數據操作符與空間操作函數提供強大的幾何要素編輯功能與空間分析功能。 基於成熟的開源項目 PROJ4 提供地圖投影坐標繫的支持和 GEOS 提供空間地理要素類型的支持。 支持多種開發語言。 同樣,PostGIS應用廣泛,本書後面大部分章節都會以PostGIS為實驗環境講解空間數據庫的操作,在本章的後,我們來看看有應用程序支持PostGIS(表1-1)。 表1-1目前支持PostGIS的應用程序列舉 開源軟件商業軟件 工具擴展 Shp2Pgsql ogr2ogr Dxf2PostGIS 網絡服務 Mapserver GeoServer SharpMap SDK MapGuide Open Source (using FDO) 桌面應用程序 uDig QGIS mezoGIS OpenJUMP OpenEV SharpMap ZigGIS for ArcGIS/ArcObjects.NET GvSIG GRASS工具擴展 Safe FME Desktop Translator/Converter 網絡服務 Ionic Red Spider (now ERDAS) Cadcorp GeognoSIS Iwan Mapserver MapDotNet Server MapGuide Enterprise (using FDO) ESRI ArcGIS Server 9.3 桌面應用程序 Cadcorp SIS Microimages TNTmips GIS ESRI ArcGIS 9.3 Manifold GeoConcept MapInfo (v10) AutoCAD Map 3D (using FDO)
前言 回憶和總結都是有價值的,在過去十年,我在大學教授GIS專業的相關課程,揮汗編寫代碼追趕項目進度,坐飛機到全國各地去趕場傳授ArcGIS的知識。這十年中,我經歷了從學生到老師、從青澀到成熟、從懵懂到淡定的一繫列重要階段。我相信,無論我的一生中有多少個十年,這十年都是在我生命中舉足輕重的十年。 自己過去十年走過的那些路,現在看來是如此的崎嶇,又充滿了缺憾。對人生如此,對產業技術也如此。不過抱怨和自責都是沒有價值的,隻有留下文字和書稿,去記錄和留住那些過去吧。 作為一名在地理信息產業從業長達15年之久的老兵,耳邊經常聽到的是ArcGIS、SuperMap、Oracle、SQL Server等內容。不論是我的學生還是認識的朋友,對開源社區(像Linux、PostgreSQL、Apache等,尤其像Hadoop或者Linux Kernel這些知名度高的社區),多數人知道的少之又少;說起來很慚愧,很多人對地理信息產業的中堅力量OGC、OSGeo也沒有真正地去深入了解過它,更別說為之貢獻些什麼了。 我覺得這一切都需要改變!回憶和總結都是有價值的,在過去十年,我在大學教授GIS專業的相關課程,揮汗編寫代碼追趕項目進度,坐飛機到全國各地去趕場傳授ArcGIS的知識。這十年中,我經歷了從學生到老師、從青澀到成熟、從懵懂到淡定的一繫列重要階段。我相信,無論我的一生中有多少個十年,這十年都是在我生命中舉足輕重的十年。 自己過去十年走過的那些路,現在看來是如此的崎嶇,又充滿了缺憾。對人生如此,對產業技術也如此。不過抱怨和自責都是沒有價值的,隻有留下文字和書稿,去記錄和留住那些過去吧。 作為一名在地理信息產業從業長達15年之久的老兵,耳邊經常聽到的是ArcGIS、SuperMap、Oracle、SQL Server等內容。不論是我的學生還是認識的朋友,對開源社區(像Linux、PostgreSQL、Apache等,尤其像Hadoop或者Linux Kernel這些知名度高的社區),多數人知道的少之又少;說起來很慚愧,很多人對地理信息產業的中堅力量OGC、OSGeo也沒有真正地去深入了解過它,更別說為之貢獻些什麼了。 我覺得這一切都需要改變! 在寫作這本書的過程當中,力求內容精練、方法實用,注重GIS和空間數據庫的理論與實踐密切結合,同時反映地理信息產業界的研究成果,適合專業學生、從業人員閱讀,為地學從業人員提供理論依據和技術參考。 在書稿即將完成之際,感觸頗深。本書雖然隻是一個開始,但筆者相信可以為今後的研究奠定一個較好的基礎。希望通過本書的出版,使更多的專家、同行和學者關注該領域,進一步推動中國基礎地理信息的研究和應用。此外,在撰寫過程中,馬天午、陳孝銀、陳振德、單立剛、孫燕飛等出力頗多,對此書的完成花費了很多心血,對他們的付出表示感謝。 本書的研究和出版得到了國家自然基金項目(41201408)、浙江省公益項目(2014C32119)和浙江省自然基金項目(LY16D010009)的資助。 後,當今科技的發展突飛猛進,日新月異,本書雖盡可能力求全面,緊跟時代步伐,但深知該領域應用廣泛,筆者纔疏學淺,難免有遺漏及不足之處,懇請讀者見諒並不吝指正。 陳永剛2015年11月 | | | | | |