大數據“復活”記
1103
2025-04-01
一、地理數據庫能做什么
地理數據庫屬于空間數據庫,為地理數據提供了標準的格式和存貯方法,能夠方便迅速地進行檢索、更新和數據分析,最終達到為多種應用服務的目的。地理數據則包括觀測數據、分析測定數據、遙感數據和統計調查數據。地理數據庫已廣泛的應用于單車、導航,旅游、水利,農業、安平城市等應用場景,滲透到人民生活點點滴滴中。
二、PostGIS功能介紹
對于如上介紹的使用場景中,地理數據通常存儲為點、線或者多邊形的集合。在PostgreSQL中,已經提供了點、線、多邊形等空間數據類型,但其提供的數據處理方法和性能很難達到GIS的要求,主要表現在:缺乏復雜的空間類型;沒有提供空間分析;沒有提供投影變換功能。為了使得PostgreSQL更好的提供空間信息服務,PostGIS也就應運而生。
2.1 PostGIS支持數據類型
PostGIS完全遵循OpenGIS規范,支持OpenGIS中所有空間數據類型:
a.POINT, LINESTRING, POLYGON, MULTI-POINT,
b.MULTI-LINESTRING, MULTI-POLYGON,
c.GEOMETRY COLLECTION
除了OpenGIS定義的地理數據類型之外,PostGIS還對數據類型進行了擴展,在WKT和WKB數據類型基礎上擴展出EWKT和EWKB數據類型:
a.EWKT, EWKB(包含了SRID信息的WKT/WKB)
b.SRID(Spatial Referencing System Identifier):每個空間實例都有一個空間引用標識符 (SRID)。SRID 對應于基于特定橢圓體的空間引用系統,可用于平面球體映射或圓球映射。
此外,PostGIS還支持柵格數據raster分析,可以基于已有的影像或者衛星數據,實現影像或者衛星數據不同類別的統計分析。
2.2 PostGIS支持函數類型
PostGIS常見函數大致可以分為以下六類,對于各函數具體用法參考《PostGIS使用手冊》:
1.??? 字段處理函數
a.AddGeometryColumn為已有的數據表增加一個地理幾何數據字段;
b.DropGeometryColumn刪除一個地理數據字段的;
c.ST_SetSRID設置SRID值
2.??? 幾何關系函數
這類函數描述幾何對象的距離、包含、范圍、相等等幾何關系,常見函數如下:ST_Distance、ST_Equals、ST_Disjoint、ST_Intersects、ST_Touches、ST_Within、 ST_Overlaps、ST_Contains。
3.??? 讀寫函數
這類函數主要用于各種數據類型之間的轉換,尤其是Geometry數據類型與其他字符型等數據類型之間的轉換,如ST_AsText、ST_GeomFromText、ST_AsGeoJSON ST_AsHEXEWKB、ST_AsKML、 ST_AsLatLonText。
4.??? 幾何對象創建函數
這類函數用于點、線、多變形等幾何對象創建,如ST_GeomFromEWKT、ST_GeomFromEWKB、ST_MakePoint、ST_MakeBox2D、ST_LineFromText、ST_Polygon。
5.??? 幾何對象編輯函數
這類函數提供對幾何圖像的平移、翻轉、旋轉、放大等功能,如ST_AddPoint、ST_Reverse、ST_Rotate、ST_Scale、ST_Snap、ST_Transform、ST_Translate、ST_TransScale。
6.??? 空間關系及測量函數
這類函數實現幾何對象最遠、最近、長度、面積等計算,如ST_3DClosestPoint、ST_3DDistance、 ST_3DDWithin、ST_3DDFullyWithin、ST_3DIntersects、ST_3DLongestLine、ST_3DMaxDistance、ST_3DShortestLine、ST_Area。
三、PostGIS的安裝:
1.1?基礎編譯環境準備:
GaussDB(DWS)中的PostGIS Extension需使用GCC和G++工具進行編譯安裝。安裝前需確認GCC和G++版本號大于等于4.8.5,且兩個工具可正常使用。具體可通過gcc -v和g++ -v查看相關版本。如上圖所示環境gcc和g++版本為4.3.4,不滿足版本要求,需使用源碼安裝方式進行升級。若集群中沒有低版本gcc和g++編譯器,可以通過掛載操作系統鏡像進行安裝,這里不做贅述。如需要升級則可從如下網站獲取GCC相關安裝包:
https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.gz
https://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.gz
https://ftp.gnu.org/gnu/mpfr/mpfr-2.4.2.tar.gz
https://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz
此外PostGIS安裝還需要確保zlib、autoconf和automake等工具已正確安裝。
1.2 PostGIS依賴庫安裝:
PostGIS依賴Geos、?Proj、?JSON-C、?Libxml2、?Gdal第三方開源工具。安全前首先需要下載Geos、?Proj、?JSON-C、?Libxml2、?Gdal、?PostGIS源碼至$GAUSSHOME目錄。
安裝時需切換至omm用戶,并檢查GaussDB環境變量已正確加載,且可正常登錄和使用GaussDB環境。具體安裝命令可參考產品文檔,且確保安裝路徑與文檔中給定路徑完全一致,自定義路徑會導致最終庫文件分發失敗。
在整個安裝過程中,可使用make -sj和make install -sj命令并行加速編譯,-sj命令極低概率性出現安裝錯誤,如果安裝失敗則請使用make和make install進行串行安裝。此外對于ARM物理機,在每個安裝包configure時需要增加如下編譯參數:?--build=aarch64-unknown-linuxgnu,否則會出現安裝失敗。同時,在三方開源庫proj的安裝過程中,可能會報錯$GAUSSHOME/install/proj/bin目錄不存在,可手動創建該目錄再執行proj的安裝。
安裝成功后截圖大致如下,其中關于get_PlatForm_str.sh不存在的提示信息可直接忽略。???????安裝完成后則需要使用PostGIS_install.sh工具完成PostGIS相關動態鏈接庫在集群節點中的分發。執行方式為:
sh $GAUSSHOME/share/postgis/PostGIS_install.sh
如若失敗,可打開PostGIS_install.sh文件分別執行分發命令,確定是哪個文件不存在而導致分發失敗,并進一步分析該庫文件編譯失敗原因。
四、PostGIS使用:
目前GaussDB對PostGIS中絕大多數函數均已支持下推至DN處理。因此對于絕大多數地理數據運算,都可以充分利用GaussDB的分布式計算優勢,帶來相比于PostgreSQL近似線性擴展比的性能加速。
2.1?地理數據的導入:
PostGIS支持shape格式地理數據導入。因此對于其它地理數據庫平臺數據,如Oracle或者ArcGIS中的地理數據,可先將其導出為shape格式文件,然后使用$GAUSSHOME/bin目錄下的shp2pgsql工具將shape文件轉換為sql文件并進一步導入GaussDB。如果生成sql文件中的地理表定義缺少分布鍵的話,可以手動增加一個id自增的分布鍵,使地理數據均勻分布到各個DN,進而充分利用GaussDB的分布式計算優勢。
2.2?GIS函數使用demo:
對于GaussDB支持各GIS函數的具體使用方法,請參考《?PostGIS-2.4.2用戶手冊》。這里給一個簡單的使用demo。
示例1?:幾何表的創建。
CREATE TABLE cities ( id integer, city_name varchar(50) );
SELECT AddGeometryColumn('cities', 'position', 4326, 'POINT', 2);
示例2:幾何數據的插入。
INSERT INTO cities (id, position, city_name) VALUES (1,ST_GeomFromText('POINT(-9.5 23)',4326),'CityA');
INSERT INTO cities (id, position, city_name) VALUES (2,ST_GeomFromText('POINT(-10.6 40.3)',4326),'CityB');
INSERT INTO cities (id, position, city_name) VALUES (3,ST_GeomFromText('POINT(20.8 30.3)',4326), 'CityC');
示例3:計算三個城市間任意兩個城市距離。
SELECT p1.city_name,p2.city_name,ST_Distance(p1.position,p2.position) FROM cities AS p1, cities AS p2 WHERE p1.id > p2.id;
執行結果為:???????示例4:查詢query執行計劃,發現執行過程中p1表是廣播到全部DN節點的,因此對于每個DN,其只需要處理自己節點上的p2數據,通過對比本地p2數據與全局p1數據即可完成整個分析,這也是分布式數據庫的優勢所在。
五、PostGIS性能介紹
目前市場上的空間數據庫包括MySQL的Spatial Extension、PostgreSQL的PostGIS、Oracle Spatial、ArcGIS的ArcSDE及MongoDB等。對于這幾款數據庫的性能對比,之前有一篇文檔《常用地理數據庫對比測試》有一個比較詳細的對比和介紹。
從測試數據可以看出,對于點數據,在相同查詢條件下,PostGIS數據庫的空間查詢速度最快。對于線數據,PostGIS則相比于其它數據庫要慢一些,這可能與不同地理數據庫使用不同索引技術有關。
GaussDB作為分布式數據庫,對PostGIS做了深度適配。目前GaussDB對PostGIS中絕大多數函數均已支持下推至DN處理。因此對于絕大多數地理數據運算,都可以充分利用GaussDB的分布式計算優勢,帶來相比于PostgreSQL近似線性擴展比的性能加速,滿足客戶在大數據場景的地理數據處理和分析需求。
六、總結
本篇博文簡單介紹了GaussDB中Postgis的安裝和使用,歡迎廣大讀者和討論。
想了解GuassDB(DWS)更多信息,歡迎微信搜索“GaussDB DWS”關注微信公眾號,和您分享最新最全的PB級數倉黑科技,后臺還可獲取眾多學習資料~
EI企業智能 Gauss AP 數據倉庫服務 GaussDB(DWS)
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。